Buggy code:
} int result = fStringPool . createNonMatchingSymbol ( startOffset , entry , entries , offset ) ; return result ; } try { symbolChars [ cache . fSymbolCharsOffset ] = ( ( char ) ( ch ) ) ; } catch ( ArrayIndexOutOfBoundsException ex ) { symbolChars = new char [ ( cache . fSymbolCharsOffset ) * 2 ] ; System . arraycopy ( cache . fSymbolChars , 0 , symbolChars , 0 , cache . fSymbolCharsOffset ) ; cache . fSymbolChars = symbolChars ; symbolChars [ cache . fSymbolCharsOffset ] = ( ( char ) ( ch ) ) ; } ( cache . fSymbolCharsOffset ) ++ ; int depth = 1 ; while ( true ) { if ( offset < 0 ) break ; if ( ( entries [ ( offset + ( SymbolCache . CHAR_OFFSET ) ) ] ) != ch ) { offset -= SymbolCache . CACHE_RECORD_SIZE ; totalMisses ++ ; continue ; } if ( b0 >= 128 ) { ch = getMultiByteSymbolChar ( b0 ) ; b0 = fMostRecentByte ; } else if ( ( b0 == fastcheck ) || ( ( XMLCharacterProperties . fgAsciiNameChar [ b0 ] ) == 0 ) ) { ch = - 1 ; } else { ch = b0 ; ( fCharacterCounter ) ++ ; if ( UTF8Reader . USE_OUT_OF_LINE_LOAD_NEXT_BYTE ) { b0 = loadNextByte ( ) ; } else { ( fCurrentOffset ) ++ ; if ( UTF8Reader . USE_TRY_CATCH_FOR_LOAD_NEXT_BYTE ) { ( fCurrentIndex ) ++ ; try { b0 = fMostRecentByte = ( fMostRecentData [ fCurrentIndex ] ) & 255 ; } catch ( ArrayIndexOutOfBoundsException ex ) { b0 = slowLoadNextByte ( ) ; } } else { if ( ( ++ ( fCurrentIndex ) ) == ( UTF8DataChunk . CHUNK_SIZE ) ) b0 = slowLoadNextByte ( ) ; else b0 = fMostRecentByte = ( fMostRecentData [ fCurrentIndex ] ) & 255 ; } } } if ( ch == ( - 1 ) ) { if ( ( entries [ ( offset + ( SymbolCache . INDEX_OFFSET ) ) ] ) == ( - 1 ) ) { return fStringPool . createNonMatchingSymbol ( startOffset , entry , entries , offset ) ; } cache . fSymbolCharsOffset = startOffset ; int symbolIndex = entries [ ( offset + ( SymbolCache . INDEX_OFFSET ) ) ] ; if ( totalMisses > ( depth * 3 ) ) fStringPool . updateCacheLine ( symbolIndex , totalMisses , depth ) ; return symbolIndex ; } try { symbolChars [ cache . fSymbolCharsOffset ] = ( ( char ) ( ch ) ) ; } catch ( ArrayIndexOutOfBoundsException ex ) { symbolChars = new char [ ( cache . fSymbolCharsOffset ) * 2 ] ; System . arraycopy ( cache . fSymbolChars , 0 , symbolChars , 0 , cache . fSymbolCharsOffset ) ; cache . fSymbolChars = symbolChars ; symbolChars [ cache . fSymbolCharsOffset ] = ( ( char ) ( ch ) ) ; } ( cache . fSymbolCharsOffset ) ++ ; entry = entries [ ( offset + ( SymbolCache . NEXT_OFFSET ) ) ] ; try { entries = cacheLines [ entry ] ; } catch ( ArrayIndexOutOfBoundsException ex ) { if ( entry == ( - 1 ) ) { entry = ( cache . fCacheLineCount ) ++ ; entries [ ( offset + ( SymbolCache . NEXT_OFFSET ) ) ] = entry ; entries = new int [ 1 + ( ( SymbolCache . INITIAL_CACHE_RECORD_COUNT ) * ( SymbolCache . CACHE_RECORD_SIZE ) ) ] ; try { cacheLines [ entry ] = entries ; } catch ( ArrayIndexOutOfBoundsException ex2 ) { cacheLines = new int [ entry * 2 ] [ ] ; System . arraycopy ( cache . fCacheLines , 0 , cacheLines , 0 , entry ) ; cache . fCacheLines = cacheLines ; cacheLines [ entry ] = entries ; } } else { entries = cacheLines [ entry ] ; <START_BUG> throw new RuntimeException ( "RDR001<seq2seq4repair_space>untested<seq2seq4repair_space>1" ) ; <END_BUG> } } offset = 1 + ( ( ( entries [ 0 ] ) - 1 ) * ( SymbolCache . CACHE_RECORD_SIZE ) ) ; depth ++ ; } if ( offset < 0 ) offset = 1 + ( ( entries [ 0 ] ) * ( SymbolCache . CACHE_RECORD_SIZE ) ) ; while ( true ) { ( entries [ 0 ] ) ++ ; try { entries [ ( offset + ( SymbolCache . CHAR_OFFSET ) ) ] = ch ; } catch ( ArrayIndexOutOfBoundsException ex ) { int newSize = 1 + ( ( offset - 1 ) * 2 ) ; entries = new int [ newSize ] ; System . arraycopy ( cacheLines [ entry ] , 0 , entries , 0 , offset ) ; cacheLines [ entry ] = entries ; entries [ ( offset + ( SymbolCache . CHAR_OFFSET ) ) ] = ch ; } if ( b0 >= 128 ) { ch = getMultiByteSymbolChar ( b0 ) ; b0 = fMostRecentByte ; } else if ( ( b0 == fastcheck ) || ( ( XMLCharacterProperties . fgAsciiNameChar [ b0 ] ) == 0 ) ) { ch = - 1 ; } else { ch = b0 ; ( fCharacterCounter ) ++ ; if ( UTF8Reader . USE_OUT_OF_LINE_LOAD_NEXT_BYTE ) { b0 = loadNextByte ( ) ; } else { ( fCurrentOffset ) ++ ; if ( UTF8Reader . USE_TRY_CATCH_FOR_LOAD_NEXT_BYTE ) { ( fCurrentIndex ) ++ ; try { b0 = fMostRecentByte = ( fMostRecentData [ fCurrentIndex ] ) & 255 ; } catch ( ArrayIndexOutOfBoundsException ex ) { b0 = slowLoadNextByte ( ) ; } } else { if ( ( ++ ( fCurrentIndex ) ) == ( UTF8DataChunk . CHUNK_SIZE ) ) b0 = slowLoadNextByte ( ) ; else b0 = fMostRecentByte = ( fMostRecentData [ fCurrentIndex ] ) & 255 ; } }

Fix:
throw new RuntimeException ( "RDR001<seq2seq4repair_space>untested" ) ;