Program: 84959
Project: 84959
Buggy source:
@Override public void parse(IParserManager pm,IToken token) throws SyntaxError {
  int type=token.type();
  if (this.mode == TYPE) {
    int i=0;
    if ((i=ModifierTypes.PARAMETER.parse(type)) != -1) {
      this.modifiers|=i;
      return;
    }
    if (token.nameValue() == Name.at) {
      Annotation annotation=new Annotation(token.raw());
      this.addAnnotation(annotation);
      pm.pushParser(new AnnotationParser(annotation));
      return;
    }
    if (ParserUtil.isCloseBracket(type)) {
      pm.popParser(true);
      return;
    }
    this.mode=NAME;
    pm.pushParser(new TypeParser(this),true);
    return;
  }
  if (this.mode == NAME) {
    if (type == Symbols.ELLIPSIS) {
      this.varargs=true;
      return;
    }
    this.mode=SEPERATOR;
    if (ParserUtil.isIdentifier(type)) {
      if (this.varargs) {
        this.paramList.setVarargs();
        this.type=new ArrayType(this.type);
      }
      this.parameter=this.paramList instanceof IClass ? new ClassParameter(token.nameValue(),this.type) : new MethodParameter(token.nameValue(),this.type);
      this.parameter.setModifiers(this.modifiers);
      this.parameter.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.parameter.setVarargs(this.varargs);
      this.paramList.addParameter(this.parameter);
      this.varargs=false;
      return;
    }
    throw new SyntaxError(token,"String_Node_Str");
  }
  if (this.mode == SEPERATOR) {
    if (ParserUtil.isCloseBracket(type)) {
      pm.popParser(true);
      return;
    }
    if (type == Symbols.EQUALS) {
      pm.pushParser(new ExpressionParser(this.parameter));
      return;
    }
    this.reset();
    if (type == Symbols.COMMA) {
      return;
    }
    throw new SyntaxError(token,"String_Node_Str");
  }
}

Fixed version (ground truth):
@Override public void parse(IParserManager pm,IToken token) throws SyntaxError {
  int type=token.type();
  if (this.mode == TYPE) {
    if (type == Symbols.SEMICOLON && token.isInferred()) {
      return;
    }
    int i=0;
    if ((i=ModifierTypes.PARAMETER.parse(type)) != -1) {
      this.modifiers|=i;
      return;
    }
    if (token.nameValue() == Name.at) {
      Annotation annotation=new Annotation(token.raw());
      this.addAnnotation(annotation);
      pm.pushParser(new AnnotationParser(annotation));
      return;
    }
    if (ParserUtil.isCloseBracket(type)) {
      pm.popParser(true);
      return;
    }
    this.mode=NAME;
    pm.pushParser(new TypeParser(this),true);
    return;
  }
  if (this.mode == NAME) {
    if (type == Symbols.ELLIPSIS) {
      this.varargs=true;
      return;
    }
    this.mode=SEPERATOR;
    if (ParserUtil.isIdentifier(type)) {
      if (this.varargs) {
        this.paramList.setVarargs();
        this.type=new ArrayType(this.type);
      }
      this.parameter=this.paramList instanceof IClass ? new ClassParameter(token.nameValue(),this.type) : new MethodParameter(token.nameValue(),this.type);
      this.parameter.setModifiers(this.modifiers);
      this.parameter.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.parameter.setVarargs(this.varargs);
      this.paramList.addParameter(this.parameter);
      this.varargs=false;
      return;
    }
    throw new SyntaxError(token,"String_Node_Str");
  }
  if (this.mode == SEPERATOR) {
    if (ParserUtil.isCloseBracket(type)) {
      pm.popParser(true);
      return;
    }
    if (type == Symbols.EQUALS) {
      pm.pushParser(new ExpressionParser(this.parameter));
      return;
    }
    this.reset();
    if (type == Symbols.COMMA || type == Symbols.SEMICOLON) {
      return;
    }
    throw new SyntaxError(token,"String_Node_Str");
  }
}