Program: 76875
Project: 76875
Buggy source:
public Token getNextToken(){
  int kind;
  Token specialToken=null;
  Token matchedToken;
  int curPos=0;
  EOFLoop:   for (; ; ) {
    try {
      curChar=input_stream.BeginToken();
    }
 catch (    java.io.IOException e) {
      jjmatchedKind=0;
      matchedToken=jjFillToken();
      return matchedToken;
    }
switch (curLexState) {
case 0:
      jjmatchedKind=0x7fffffff;
    jjmatchedPos=0;
  curPos=jjMoveStringLiteralDfa0_0();
break;
case 1:
jjmatchedKind=0x7fffffff;
jjmatchedPos=0;
curPos=jjMoveStringLiteralDfa0_1();
break;
case 2:
jjmatchedKind=0x7fffffff;
jjmatchedPos=0;
curPos=jjMoveStringLiteralDfa0_2();
break;
case 3:
jjmatchedKind=0x7fffffff;
jjmatchedPos=0;
curPos=jjMoveStringLiteralDfa0_3();
break;
}
if (jjmatchedKind != 0x7fffffff) {
if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1);
if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
matchedToken=jjFillToken();
if (jjnewLexState[jjmatchedKind] != -1) curLexState=jjnewLexState[jjmatchedKind];
return matchedToken;
}
 else {
if (jjnewLexState[jjmatchedKind] != -1) curLexState=jjnewLexState[jjmatchedKind];
continue EOFLoop;
}
}
int error_line=input_stream.getEndLine();
int error_column=input_stream.getEndColumn();
String error_after=null;
boolean EOFSeen=false;
try {
input_stream.readChar();
input_stream.backup(1);
}
 catch (java.io.IOException e1) {
EOFSeen=true;
error_after=curPos <= 1 ? "String_Node_Str" : input_stream.GetImage();
if (curChar == '\n' || curChar == '\r') {
error_line++;
error_column=0;
}
 else error_column++;
}
if (!EOFSeen) {
input_stream.backup(1);
error_after=curPos <= 1 ? "String_Node_Str" : input_stream.GetImage();
}
throw new TokenMgrError(EOFSeen,curLexState,error_line,error_column,error_after,curChar,TokenMgrError.LEXICAL_ERROR);
}
}

Fixed version (ground truth):
public Token getNextToken(){
  Token matchedToken;
  int curPos=0;
  EOFLoop:   for (; ; ) {
    try {
      curChar=input_stream.BeginToken();
    }
 catch (    java.io.IOException e) {
      jjmatchedKind=0;
      matchedToken=jjFillToken();
      return matchedToken;
    }
switch (curLexState) {
case 0:
      jjmatchedKind=0x7fffffff;
    jjmatchedPos=0;
  curPos=jjMoveStringLiteralDfa0_0();
break;
case 1:
jjmatchedKind=0x7fffffff;
jjmatchedPos=0;
curPos=jjMoveStringLiteralDfa0_1();
break;
case 2:
jjmatchedKind=0x7fffffff;
jjmatchedPos=0;
curPos=jjMoveStringLiteralDfa0_2();
break;
case 3:
jjmatchedKind=0x7fffffff;
jjmatchedPos=0;
curPos=jjMoveStringLiteralDfa0_3();
break;
}
if (jjmatchedKind != 0x7fffffff) {
if (jjmatchedPos + 1 < curPos) input_stream.backup(curPos - jjmatchedPos - 1);
if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) {
matchedToken=jjFillToken();
if (jjnewLexState[jjmatchedKind] != -1) curLexState=jjnewLexState[jjmatchedKind];
return matchedToken;
}
 else {
if (jjnewLexState[jjmatchedKind] != -1) curLexState=jjnewLexState[jjmatchedKind];
continue EOFLoop;
}
}
int error_line=input_stream.getEndLine();
int error_column=input_stream.getEndColumn();
String error_after=null;
boolean EOFSeen=false;
try {
input_stream.readChar();
input_stream.backup(1);
}
 catch (java.io.IOException e1) {
EOFSeen=true;
error_after=curPos <= 1 ? "String_Node_Str" : input_stream.GetImage();
if (curChar == '\n' || curChar == '\r') {
error_line++;
error_column=0;
}
 else error_column++;
}
if (!EOFSeen) {
input_stream.backup(1);
error_after=curPos <= 1 ? "String_Node_Str" : input_stream.GetImage();
}
throw new TokenMgrError(EOFSeen,curLexState,error_line,error_column,error_after,curChar,TokenMgrError.LEXICAL_ERROR);
}
}