Buggy code:
public static String [ ] name = null ; public static char [ ] nasb = null ; public static char [ ] nasr = null ; public static char [ ] non_terminal_index = null ; private static final String READABLE_NAMES_FILE = "readableNames" ; private static final String READABLE_NAMES_FILE_NAME = "org.eclipse.jdt.internal.compiler.parser." + ( Parser . READABLE_NAMES_FILE ) ; public static String [ ] readableName = null ; public static byte [ ] rhs = null ; public static int [ ] reverse_index = null ; public static char [ ] recovery_templates_index = null ; public static char [ ] recovery_templates = null ; public static char [ ] statements_recovery_filter = null ; public static long [ ] rules_compliance = null ; public static final int RoundBracket = 0 ; public static byte [ ] scope_la = null ; public static char [ ] scope_lhs = null ; public static char [ ] scope_prefix = null ; public static char [ ] scope_rhs = null ; public static char [ ] scope_state = null ; public static char [ ] scope_state_set = null ; public static char [ ] scope_suffix = null ; public static final int SquareBracket = 1 ; protected static final int StackIncrement = 255 ; public static char [ ] term_action = null ; public static byte [ ] term_check = null ; public static char [ ] terminal_index = null ; private static final String UNEXPECTED_EOF = "Unexpected<seq2seq4repair_space>End<seq2seq4repair_space>Of<seq2seq4repair_space>File" ; public static boolean VERBOSE_RECOVERY = false ; public static int asi ( int state ) { } public static final short base_check ( int i ) { } private static final void buildFile ( String filename , List listToDump ) { } private static void buildFileForCompliance ( String file , int length , String [ ] tokens ) { } private static final String [ ] buildFileForName ( String filename , String contents ) { } private static void buildFileForReadableName ( String file , char [ ] newLhs , char [ ] newNonTerminalIndex , String [ ] newName , String [ ] tokens ) { } private static final void buildFileForTable ( String filename , byte [ ] bytes ) { } private static final void buildFileForTable ( String filename , char [ ] chars ) { } private static final byte [ ] buildFileOfByteFor ( String filename , String tag , String [ ] tokens ) { } private static final char [ ] buildFileOfIntFor ( String filename , String tag , String [ ] tokens ) { } private static final void buildFileOfShortFor ( String filename , String tag , String [ ] tokens ) { } private static void buildFilesForRecoveryTemplates ( String indexFilename , String templatesFilename , char [ ] newTerminalIndex , char [ ] newNonTerminalIndex , String [ ] newName , char [ ] newLhs , String [ ] tokens ) { int [ ] newReverse = Parser . computeReverseTable ( newTerminalIndex , newNonTerminalIndex , newName ) ; char [ ] newRecoveyTemplatesIndex = new char [ newNonTerminalIndex . length ] ; char [ ] newRecoveyTemplates = new char [ newNonTerminalIndex . length ] ; int newRecoveyTemplatesPtr = 0 ; for ( int i = 0 ; i < ( tokens . length ) ; i = i + 3 ) { if ( "3" . equals ( tokens [ i ] ) ) { int length = newRecoveyTemplates . length ; if ( length == ( newRecoveyTemplatesPtr + 1 ) ) { System . arraycopy ( newRecoveyTemplates , 0 , ( newRecoveyTemplates = new char [ length * 2 ] ) , 0 , length ) ; } newRecoveyTemplates [ ( newRecoveyTemplatesPtr ++ ) ] = 0 ; int index = newLhs [ Integer . parseInt ( tokens [ ( i + 1 ) ] ) ] ; newRecoveyTemplatesIndex [ index ] = ( ( char ) ( newRecoveyTemplatesPtr ) ) ; String token = tokens [ ( i + 2 ) ] . trim ( ) ; <START_BUG> StringTokenizer st = new StringTokenizer ( new String ( token ) , "<seq2seq4repair_space>" ) ; <END_BUG> String [ ] terminalNames = new String [ st . countTokens ( ) ] ; int t = 0 ; while ( st . hasMoreTokens ( ) ) { terminalNames [ ( t ++ ) ] = st . nextToken ( ) ; } for ( int j = 0 ; j < ( terminalNames . length ) ; j ++ ) { int symbol = Parser . getSymbol ( terminalNames [ j ] , newName , newReverse ) ; if ( symbol > ( - 1 ) ) { length = newRecoveyTemplates . length ; if ( length == ( newRecoveyTemplatesPtr + 1 ) ) { System . arraycopy ( newRecoveyTemplates , 0 , ( newRecoveyTemplates = new char [ length * 2 ] ) , 0 , length ) ; } newRecoveyTemplates [ ( newRecoveyTemplatesPtr ++ ) ] = ( ( char ) ( symbol ) ) ; } } } } newRecoveyTemplates [ ( newRecoveyTemplatesPtr ++ ) ] = 0 ; System . arraycopy ( newRecoveyTemplates , 0 , ( newRecoveyTemplates = new char [ newRecoveyTemplatesPtr ] ) , 0 , newRecoveyTemplatesPtr ) ; Parser . buildFileForTable ( indexFilename , newRecoveyTemplatesIndex ) ; Parser . buildFileForTable ( templatesFilename , newRecoveyTemplates ) ; } private static void buildFilesForStatementsRecoveryFilter ( String filename , char [ ] newNonTerminalIndex , char [ ] newLhs , String [ ] tokens ) { } public static final void buildFilesFromLPG ( String dataFilename , String dataFilename2 ) { } protected static int [ ] computeReverseTable ( char [ ] newTerminalIndex , char [ ] newNonTerminalIndex , String [ ] newName ) { } private static int getSymbol ( String terminalName , String [ ] newName , int [ ] newReverse ) { } public static int in_symbol ( int state ) { } public static final void initTables ( ) throws IOException { }

Fix:
StringTokenizer st = new StringTokenizer ( token , "<seq2seq4repair_space>" ) ;