Buggy code:
pushOnExpressionStackLengthStack ( 0 ) ; break ; case TerminalTokens . TokenNamevoid : pushIdentifier ( ( - ( TypeIds . T_void ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNameboolean : pushIdentifier ( ( - ( TypeIds . T_boolean ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNamebyte : pushIdentifier ( ( - ( TypeIds . T_byte ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNamechar : pushIdentifier ( ( - ( TypeIds . T_char ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNamedouble : pushIdentifier ( ( - ( TypeIds . T_double ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNamefloat : pushIdentifier ( ( - ( TypeIds . T_float ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNameint : pushIdentifier ( ( - ( TypeIds . T_int ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNamelong : pushIdentifier ( ( - ( TypeIds . T_long ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNameshort : pushIdentifier ( ( - ( TypeIds . T_short ) ) ) ; pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNameIntegerLiteral : pushOnExpressionStack ( new IntLiteral ( this . scanner . getCurrentTokenSource ( ) , this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNameLongLiteral : pushOnExpressionStack ( new LongLiteral ( this . scanner . getCurrentTokenSource ( ) , this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNameFloatingPointLiteral : pushOnExpressionStack ( new FloatLiteral ( this . scanner . getCurrentTokenSource ( ) , this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNameDoubleLiteral : pushOnExpressionStack ( new DoubleLiteral ( this . scanner . getCurrentTokenSource ( ) , this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNameCharacterLiteral : pushOnExpressionStack ( new CharLiteral ( this . scanner . getCurrentTokenSource ( ) , this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNameStringLiteral : StringLiteral stringLiteral ; <START_BUG> if ( ( this . recordStringLiterals ) && ( this . checkExternalizeStrings ) ) { <END_BUG> stringLiteral = this . createStringLiteral ( this . scanner . getCurrentTokenSourceString ( ) , this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) , this . scanner . getLineNumber ( this . scanner . startPosition ) ) ; this . compilationUnit . recordStringLiteral ( stringLiteral ) ; } else { stringLiteral = this . createStringLiteral ( this . scanner . getCurrentTokenSourceString ( ) , this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) , 0 ) ; } pushOnExpressionStack ( stringLiteral ) ; break ; case TerminalTokens . TokenNamefalse : pushOnExpressionStack ( new FalseLiteral ( this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNametrue : pushOnExpressionStack ( new TrueLiteral ( this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNamenull : pushOnExpressionStack ( new NullLiteral ( this . scanner . startPosition , ( ( this . scanner . currentPosition ) - 1 ) ) ) ; break ; case TerminalTokens . TokenNamesuper : case TerminalTokens . TokenNamethis : this . endPosition = ( this . scanner . currentPosition ) - 1 ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNameassert : case TerminalTokens . TokenNameimport : case TerminalTokens . TokenNamepackage : case TerminalTokens . TokenNamethrow : case TerminalTokens . TokenNamedo : case TerminalTokens . TokenNameif : case TerminalTokens . TokenNamefor : case TerminalTokens . TokenNameswitch : case TerminalTokens . TokenNametry : case TerminalTokens . TokenNamewhile : case TerminalTokens . TokenNamebreak : case TerminalTokens . TokenNamecontinue : case TerminalTokens . TokenNamereturn : case TerminalTokens . TokenNamecase : pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNamenew : resetModifiers ( ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ; case TerminalTokens . TokenNameclass : pushOnIntStack ( ( ( this . scanner . currentPosition ) - 1 ) ) ; pushOnIntStack ( this . scanner . startPosition ) ; break ;

Fix:
if ( ( ( this . recordStringLiterals ) && ( this . checkExternalizeStrings ) ) && ( ! ( this . statementRecoveryActivated ) ) ) {