private ThreadDump loadNext()
    {
        if ( dumpChunk == null ) return null;
        List<ThreadData> dump = new ArrayList<ThreadData>();
        String[] header = null;
        while ( dumpChunk != null && dump.isEmpty() )
        {
            for ( String[] chunk = dumpChunk; chunk != null; chunk = readChunk() )
            {
                if ( chunk.length != 0 )
                {
                    if ( isHeaderChunk( chunk ) )
                    {
                        header = chunk;
                    }
                    else
                    {
                        ThreadData data = ThreadData.readFrom( chunk );
                        if ( data != null ) dump.add( data );
                    }
                }
            }
        }
        if ( dump.isEmpty() ) return null;
        return new ThreadDump( header, dump );
    }