Buggy code:
; static final char [ ] charArray_r = new char [ ] { 'r' } ; static final char [ ] charArray_s = new char [ ] { 's' } ; static final char [ ] charArray_t = new char [ ] { 't' } ; static final char [ ] charArray_u = new char [ ] { 'u' } ; static final char [ ] charArray_v = new char [ ] { 'v' } ; static final char [ ] charArray_w = new char [ ] { 'w' } ; static final char [ ] charArray_x = new char [ ] { 'x' } ; static final char [ ] charArray_y = new char [ ] { 'y' } ; static final char [ ] charArray_z = new char [ ] { 'z' } ; static final char [ ] initCharArray = new char [ ] { '' , '' , '' , '' , '' , '' } ; static final int TableSize = 30 ; static final int InternalTableSize = 6 ; public static final int OptimizedLength = 6 ; public final char [ ] [ ] [ ] [ ] charArray_length = new char [ Scanner . OptimizedLength ] [ Scanner . TableSize ] [ Scanner . InternalTableSize ] [ ] ; int currentLineNr = - 1 ; int previousLineNr = - 1 ; NLSLine currentLine = null ; List lines = new ArrayList ( ) ; public static final String TAG_PREFIX = "////$NON-NLS-" ; public static final int TAG_PREFIX_LENGTH = Scanner . TAG_PREFIX . length ( ) ; public static final String TAG_POSTFIX = "$" ; public static final int TAG_POSTFIX_LENGTH = Scanner . TAG_POSTFIX . length ( ) ; public StringLiteral [ ] nonNLSStrings = null ; public boolean checkNonExternalizedStringLiterals = true ; public boolean wasNonExternalizedStringLiteral = false ; static int newEntry2 = 0 ; static int newEntry3 = 0 ; static int newEntry4 = 0 ; static int newEntry5 = 0 ; static int newEntry6 = 0 ; public static final int RoundBracket = 0 ; public static final int SquareBracket = 1 ; public static final int CurlyBracket = 2 ; public static final int BracketKinds = 3 ; public Scanner ( ) { } public Scanner ( boolean tokenizeComments , boolean tokenizeWhiteSpace , boolean checkNonExternalizedStringLiterals , boolean assertMode , char [ ] [ ] taskTags ) { } public final boolean atEnd ( ) { } public void checkTaskTag ( int commentStart , int commentEnd ) { if ( ( ( this . taskCount ) > 0 ) && ( ( this . taskPositions [ ( ( this . taskCount ) - 1 ) ] [ 0 ] ) >= commentStart ) ) { return ; } nextChar : for ( int i = commentStart ; ( i < commentEnd ) && ( i < ( this . eofPosition ) ) ; i ++ ) { int nextPos = - 1 ; nextTag : for ( int itag = 0 ; itag < ( this . taskTags . length ) ; itag ++ ) { char [ ] tag = this . taskTags [ itag ] ; int tagLength = tag . length ; for ( int t = 0 ; t < tagLength ; t ++ ) { if ( ( this . source [ ( i + t ) ] ) != ( tag [ t ] ) ) continue nextTag ; } nextPos = i + tagLength ; break ; } if ( nextPos < 0 ) continue nextChar ; char c = this . source [ nextPos ] ; int start = i ; <START_BUG> int msgStart = nextPos ; <END_BUG> int end = - 1 ; for ( int j = nextPos ; j < commentEnd ; j ++ ) { if ( ( ( c = this . source [ j ] ) == '\n' ) || ( c == '\r' ) ) { end = j - 1 ; i = j + 1 ; break ; } } if ( end < 0 ) { for ( int j = commentEnd ; j >= nextPos ; j -- ) { if ( ( c = this . source [ j ] ) == '*' ) { end = j - 1 ; break ; } } if ( end < 0 ) end = nextPos + 1 ; } while ( ( ( source [ msgStart ] ) == '<seq2seq4repair_space>' ) && ( msgStart <= end ) ) msgStart ++ ; while ( ( ( source [ end ] ) == '<seq2seq4repair_space>' ) && ( start <= end ) ) end -- ; char [ ] message = new char [ ( end - msgStart ) + 1 ] ; System . arraycopy ( source , msgStart , message , 0 , ( ( end - msgStart ) + 1 ) ) ; if ( ( this . taskMessages ) == null ) { this . taskMessages = new char [ 5 ] [ ] ; this . taskPositions = new int [ 5 ] [ ] ; } else if ( ( this . taskCount ) == ( this . taskMessages . length ) ) { System . arraycopy ( this . taskMessages , 0 , ( this . taskMessages = new char [ ( this . taskCount ) * 2 ] [ ] ) , 0 , this . taskCount ) ; System . arraycopy ( this . taskPositions , 0 , ( this . taskPositions = new int [ ( this . taskCount ) * 2 ] [ ] ) , 0 , this . taskCount ) ; } this . taskMessages [ this . taskCount ] = message ; this . taskPositions [ this . taskCount ] = new int [ ] { start , end } ; ( this . taskCount ) ++ ; } } public char [ ] getCurrentIdentifierSource ( ) { }

Fix:
int msgStart = i ;