Program: 85190
Project: 85190
Buggy source:
@Override public boolean parse(ParserManager pm,IToken token) throws SyntaxError {
  String value=token.value();
  if (this.isInMode(MODIFIERS)) {
    int i=0;
    if ((i=Modifiers.CLASS.parse(value)) != -1) {
      if (this.theClass.addModifier(i)) {
        throw new SyntaxError(token,"String_Node_Str" + value + "String_Node_Str");
      }
      return true;
    }
 else     if ((i=Modifiers.CLASS_TYPE.parse(value)) != -1) {
      this.theClass.addModifier(i);
      this.mode=NAME;
      return true;
    }
 else     if (value.charAt(0) == '@') {
      pm.pushParser(new AnnotationParser(this.theClass),true);
      return true;
    }
  }
  int type=token.type();
  if (this.isInMode(NAME)) {
    if (ParserUtil.isIdentifier(type)) {
      this.theClass.setPosition(token.raw());
      this.theClass.setName(value);
      this.mode=GENERICS | EXTENDS | IMPLEMENTS| BODY;
      return true;
    }
    return false;
  }
  if (this.isInMode(GENERICS)) {
    if (type == Tokens.OPEN_SQUARE_BRACKET) {
      pm.pushParser(new TypeVariableListParser(this.theClass));
      this.theClass.setGeneric();
      this.mode=GENERICS_END;
      return true;
    }
  }
  if (this.isInMode(GENERICS_END)) {
    if (type == Tokens.CLOSE_SQUARE_BRACKET) {
      this.mode=EXTENDS | IMPLEMENTS | BODY;
      return true;
    }
    return false;
  }
  if (this.isInMode(EXTENDS)) {
    if ("String_Node_Str".equals(value)) {
      pm.pushParser(new TypeParser(this));
      this.mode=IMPLEMENTS | BODY;
      return true;
    }
  }
  if (this.isInMode(IMPLEMENTS)) {
    if ("String_Node_Str".equals(value)) {
      pm.pushParser(new TypeListParser(this));
      this.mode=BODY;
      return true;
    }
  }
  if (this.isInMode(BODY)) {
    if (type == Tokens.OPEN_CURLY_BRACKET) {
      pm.pushParser(new ClassBodyParser(this.theClass));
      this.mode=BODY_END;
      return true;
    }
    if (ParserUtil.isTerminator(type)) {
      this.theClass.expandPosition(token);
      pm.popParser();
      return true;
    }
    return false;
  }
  if (this.isInMode(BODY_END)) {
    if (token.isType(Tokens.CLOSE_CURLY_BRACKET)) {
      this.theClass.expandPosition(token);
      pm.popParser();
      return true;
    }
    return false;
  }
  return false;
}

Fixed version (ground truth):
@Override public boolean parse(ParserManager pm,IToken token) throws SyntaxError {
  String value=token.value();
  if (this.isInMode(MODIFIERS)) {
    int i=0;
    if ((i=Modifiers.CLASS.parse(value)) != -1) {
      if (this.theClass.addModifier(i)) {
        throw new SyntaxError(token,"String_Node_Str" + value + "String_Node_Str");
      }
      return true;
    }
 else     if ((i=Modifiers.CLASS_TYPE.parse(value)) != -1) {
      this.theClass.addModifier(i);
      this.mode=NAME;
      return true;
    }
 else     if (value.charAt(0) == '@') {
      pm.pushParser(new AnnotationParser(this.theClass),true);
      return true;
    }
  }
  int type=token.type();
  if (this.isInMode(NAME)) {
    if (ParserUtil.isIdentifier(type)) {
      this.theClass.setPosition(token.raw());
      this.theClass.setName(value);
      this.mode=GENERICS | EXTENDS | IMPLEMENTS| BODY;
      return true;
    }
    throw new SyntaxError(token,"String_Node_Str");
  }
  if (this.isInMode(GENERICS)) {
    if (type == Tokens.OPEN_SQUARE_BRACKET) {
      pm.pushParser(new TypeVariableListParser(this.theClass));
      this.theClass.setGeneric();
      this.mode=GENERICS_END;
      return true;
    }
  }
  if (this.isInMode(GENERICS_END)) {
    if (type == Tokens.CLOSE_SQUARE_BRACKET) {
      this.mode=EXTENDS | IMPLEMENTS | BODY;
      return true;
    }
    return false;
  }
  if (this.isInMode(EXTENDS)) {
    if ("String_Node_Str".equals(value)) {
      pm.pushParser(new TypeParser(this));
      this.mode=IMPLEMENTS | BODY;
      return true;
    }
  }
  if (this.isInMode(IMPLEMENTS)) {
    if ("String_Node_Str".equals(value)) {
      pm.pushParser(new TypeListParser(this));
      this.mode=BODY;
      return true;
    }
  }
  if (this.isInMode(BODY)) {
    if (type == Tokens.OPEN_CURLY_BRACKET) {
      pm.pushParser(new ClassBodyParser(this.theClass));
      this.mode=BODY_END;
      return true;
    }
    if (ParserUtil.isTerminator(type)) {
      this.theClass.expandPosition(token);
      pm.popParser();
      return true;
    }
    throw new SyntaxError(token,"String_Node_Str");
  }
  if (this.isInMode(BODY_END)) {
    if (type == Tokens.CLOSE_CURLY_BRACKET) {
      this.theClass.expandPosition(token);
      pm.popParser();
      return true;
    }
    throw new SyntaxError(token,"String_Node_Str");
  }
  return false;
}