Как получить список мертвых нитей из группы ThreadGroup? level 28

Ну собственно в названии и сам вопрос. Кто разобрался, подскажите. Нашел такой вариант, но он мне уж совсем не нравится и не работает)
public static void main(String[] args) {
        /*
 * For testing purposes */


        ThreadGroup tg = new ThreadGroup( "MyThreadGroup" );
        Thread subThread = new Thread( tg, "New Thread - Inactive" );
        try
        {
/*
* GETTING THREADS - PROBABLY BETTER TO GET IT BY USING
* getDeclaredFields() AND LOOPING TILL GET ONE OF TYPE
* Thread[] SINCE A FUTURE VERSION MIGHT CHANGE THE NAME
* BUT SINCE IS PACKAGE-LEVEL ACCESS, IT'S PROBABLY USED
* ELSEWHERE IN THE PACKAGE, AND THIS IS JUST AN EXAMPLE
*/
            Field field = tg.getClass().getDeclaredField( "threads" );

                //NEED TO SUPPRESS ACCESS CHECKS
            field.setAccessible( true ); //EVEN IF SECURITY IS OFF YOU NEED THIS!!!!

            Thread[] tgThreads = ( Thread[] ) field.get( tg );

            for ( int i = 0; i < tgThreads.length; i++ )
            {
                if ( tgThreads[ i ] != null )
                    System.out.println( tgThreads[ i ].getName() + " = " + tgThreads[ i ].isAlive() );
            }
        }
        catch (NoSuchFieldException nsfe)
        {
            nsfe.printStackTrace();
        }
        catch (IllegalAccessException iae)
        {
            iae.printStackTrace();
        }
    }

Получается строчка
Thread[] tgThreads = ( Thread[] ) field.get( tg );

не генерит мне массив. почитал, вроде можно как то залезть в System.SecurityManager и поставить ReflectPermission(«suppressAccessChecks»). но подход уж слишком хардкод. добираться до приватных полей через рефлексию…