Program: 83896
Project: 83896
Buggy source:
public boolean parseKeyword(ParserManager pm,IToken token,int type) throws SyntaxError {
switch (type) {
case Tokens.WILDCARD:
    return true;
case Tokens.NULL:
  this.value=new NullValue(token.raw());
this.mode=ACCESS;
return true;
case Tokens.TRUE:
this.value=new BooleanValue(token.raw(),true);
this.mode=ACCESS;
return true;
case Tokens.FALSE:
this.value=new BooleanValue(token.raw(),false);
this.mode=ACCESS;
return true;
case Tokens.THIS:
this.value=new ThisValue(token.raw());
this.mode=ACCESS;
return true;
case Tokens.SUPER:
this.value=new SuperValue(token.raw());
this.mode=ACCESS;
return true;
case Tokens.NEW:
{
ConstructorCall call=new ConstructorCall(token);
this.mode=CONSTRUCTOR;
this.value=call;
pm.pushParser(new TypeParser(this));
return true;
}
case Tokens.RETURN:
{
ReturnStatement rs=new ReturnStatement(token.raw());
this.value=rs;
pm.pushParser(new ExpressionParser(rs));
return true;
}
case Tokens.IF:
{
IfStatement is=new IfStatement(token.raw());
this.value=is;
pm.pushParser(new IfStatementParser(is));
this.mode=0;
return true;
}
case Tokens.ELSE:
pm.popParser(true);
return true;
case Tokens.WHILE:
{
WhileStatement statement=new WhileStatement(token);
this.value=statement;
pm.pushParser(new WhileStatementParser(statement));
this.mode=0;
return true;
}
case Tokens.DO:
{
DoStatement statement=new DoStatement(token);
this.value=statement;
pm.pushParser(new DoStatementParser(statement));
this.mode=0;
return true;
}
case Tokens.FOR:
{
ForStatement statement=new ForStatement(token);
this.value=statement;
pm.pushParser(new ForStatementParser(statement));
this.mode=0;
return true;
}
case Tokens.BREAK:
{
BreakStatement statement=new BreakStatement(token);
this.value=statement;
IToken next=token.next();
if (next.isType(Tokens.TYPE_IDENTIFIER)) {
statement.setName(next.value());
pm.skip();
}
this.mode=0;
return true;
}
case Tokens.CONTINUE:
{
ContinueStatement statement=new ContinueStatement(token);
this.value=statement;
IToken next=token.next();
if (next.isType(Tokens.TYPE_IDENTIFIER)) {
statement.setName(next.value());
pm.skip();
}
this.mode=0;
return true;
}
case Tokens.GOTO:
{
GoToStatement statement=new GoToStatement(token);
this.value=statement;
IToken next=token.next();
if (next.isType(Tokens.TYPE_IDENTIFIER)) {
statement.setName(next.value());
pm.skip();
}
this.mode=0;
return true;
}
case Tokens.SWITCH:
return true;
case Tokens.CASE:
return true;
default :
return false;
}
}

Fixed version (ground truth):
public boolean parseKeyword(ParserManager pm,IToken token,int type) throws SyntaxError {
switch (type) {
case Tokens.WILDCARD:
    return true;
case Tokens.NULL:
  this.value=new NullValue(token.raw());
this.mode=ACCESS;
return true;
case Tokens.TRUE:
this.value=new BooleanValue(token.raw(),true);
this.mode=ACCESS;
return true;
case Tokens.FALSE:
this.value=new BooleanValue(token.raw(),false);
this.mode=ACCESS;
return true;
case Tokens.THIS:
this.value=new ThisValue(token.raw());
this.mode=ACCESS;
return true;
case Tokens.SUPER:
this.value=new SuperValue(token.raw());
this.mode=ACCESS;
return true;
case Tokens.NEW:
{
ConstructorCall call=new ConstructorCall(token);
this.mode=CONSTRUCTOR;
this.value=call;
pm.pushParser(new TypeParser(this));
return true;
}
case Tokens.RETURN:
{
ReturnStatement rs=new ReturnStatement(token.raw());
this.value=rs;
pm.pushParser(new ExpressionParser(rs));
return true;
}
case Tokens.IF:
{
IfStatement is=new IfStatement(token.raw());
this.value=is;
pm.pushParser(new IfStatementParser(is));
this.mode=0;
return true;
}
case Tokens.ELSE:
pm.popParser(true);
return true;
case Tokens.WHILE:
{
WhileStatement statement=new WhileStatement(token);
this.value=statement;
pm.pushParser(new WhileStatementParser(statement));
this.mode=0;
return true;
}
case Tokens.DO:
{
DoStatement statement=new DoStatement(token);
this.value=statement;
pm.pushParser(new DoStatementParser(statement));
this.mode=0;
return true;
}
case Tokens.FOR:
{
ForStatement statement=new ForStatement(token);
this.value=statement;
pm.pushParser(new ForStatementParser(statement));
this.mode=0;
return true;
}
case Tokens.BREAK:
{
BreakStatement statement=new BreakStatement(token);
this.value=statement;
IToken next=token.next();
if (ParserUtil.isIdentifier(next.type())) {
statement.setName(next.value());
pm.skip();
}
this.mode=0;
return true;
}
case Tokens.CONTINUE:
{
ContinueStatement statement=new ContinueStatement(token);
this.value=statement;
IToken next=token.next();
if (ParserUtil.isIdentifier(next.type())) {
statement.setName(next.value());
pm.skip();
}
this.mode=0;
return true;
}
case Tokens.GOTO:
{
GoToStatement statement=new GoToStatement(token);
this.value=statement;
IToken next=token.next();
if (ParserUtil.isIdentifier(next.type())) {
statement.setName(next.value());
pm.skip();
}
this.mode=0;
return true;
}
case Tokens.SWITCH:
return true;
case Tokens.CASE:
return true;
default :
return false;
}
}