Program: 83834
Project: 83834
Buggy source:
@Override public void parse(IParserManager pm,IToken token) throws SyntaxError {
  int type=token.type();
  if (type == Symbols.CLOSE_CURLY_BRACKET) {
    pm.popParser(true);
    return;
  }
  if (this.isInMode(TYPE)) {
    if (type == Tokens.SEMICOLON) {
      if (token.isInferred()) {
        return;
      }
      this.reset();
      return;
    }
    if (type == Keywords.NEW) {
      Constructor c=new Constructor(this.theClass);
      this.body.addConstructor(c);
      c.position=token.raw();
      c.modifiers=this.modifiers;
      c.setAnnotations(this.annotations,this.annotationCount);
      this.method=c;
      this.mode=PARAMETERS;
      return;
    }
    int i=0;
    if ((i=ModifierTypes.MEMBER.parse(type)) != -1) {
      this.modifiers|=i;
      return;
    }
    if ((i=ModifierTypes.CLASS_TYPE.parse(type)) != -1) {
      CodeClass codeClass=new CodeClass(null,this.theClass.getUnit(),this.modifiers);
      codeClass.setAnnotations(this.getAnnotations(),this.annotationCount);
      codeClass.setOuterClass(this.theClass);
      codeClass.setModifiers(this.modifiers);
      this.theClass.getBody().addClass(codeClass);
      ClassDeclarationParser parser=new ClassDeclarationParser(codeClass);
      pm.pushParser(parser,true);
      this.reset();
      return;
    }
    if (token.nameValue() == Name.at) {
      Annotation annotation=new Annotation(token.raw());
      this.addAnnotation(annotation);
      pm.pushParser(new AnnotationParser(annotation));
      return;
    }
    pm.pushParser(new TypeParser(this),true);
    this.mode=NAME;
    return;
  }
  if (this.isInMode(NAME)) {
    if (!ParserUtil.isIdentifier(type)) {
      this.reset();
      throw new SyntaxError(token,"String_Node_Str");
    }
    IToken next=token.next();
    type=next.type();
    if (type == Tokens.SEMICOLON) {
      Field f=new Field(this.theClass,token.nameValue(),this.type);
      f.position=token.raw();
      f.modifiers=this.modifiers;
      f.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.body.addField(f);
      pm.skip();
      this.reset();
      return;
    }
    if (type == Symbols.OPEN_PARENTHESIS) {
      this.mode=PARAMETERS;
      Method m=new Method(this.theClass,token.nameValue(),this.type);
      m.modifiers=this.modifiers;
      m.position=token.raw();
      m.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.method=m;
      this.body.addMethod(m);
      return;
    }
    if (type == Symbols.OPEN_CURLY_BRACKET) {
      Property p=new Property(this.theClass,token.nameValue(),this.type);
      p.position=token.raw();
      p.modifiers=this.modifiers;
      p.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.body.addProperty(p);
      pm.skip();
      pm.pushParser(new PropertyParser(this.theClass,p));
      this.reset();
      return;
    }
    if (type == Tokens.EQUALS) {
      Field f=new Field(this.theClass,token.nameValue(),this.type);
      f.position=token.raw();
      f.modifiers=this.modifiers;
      f.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.body.addField(f);
      pm.skip();
      pm.pushParser(new ExpressionParser(f));
      this.reset();
      return;
    }
    if (type == Symbols.OPEN_SQUARE_BRACKET) {
      Method m=new Method(this.theClass,token.nameValue(),this.type);
      m.modifiers=this.modifiers;
      m.position=token.raw();
      m.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.method=m;
      this.body.addMethod(m);
      this.mode=GENERICS_END;
      pm.skip();
      pm.pushParser(new TypeVariableListParser(m));
      return;
    }
    return;
  }
  if (this.isInMode(GENERICS_END)) {
    this.mode=PARAMETERS;
    if (type == Symbols.CLOSE_SQUARE_BRACKET) {
      return;
    }
    throw new SyntaxError(token,"String_Node_Str",true);
  }
  if (this.isInMode(PARAMETERS)) {
    this.mode=PARAMETERS_END;
    if (type == Symbols.OPEN_PARENTHESIS) {
      pm.pushParser(new ParameterListParser(this.method));
      return;
    }
    throw new SyntaxError(token,"String_Node_Str",true);
  }
  if (this.isInMode(PARAMETERS_END)) {
    this.mode=METHOD_END;
    if (type == Symbols.CLOSE_PARENTHESIS) {
      return;
    }
    throw new SyntaxError(token,"String_Node_Str",true);
  }
  if (this.isInMode(METHOD_END)) {
    if (type == Tokens.SEMICOLON) {
      this.reset();
      return;
    }
    if (type == Symbols.OPEN_CURLY_BRACKET) {
      pm.pushParser(new ExpressionParser(this.method),true);
      return;
    }
    if (type == Tokens.EQUALS) {
      pm.pushParser(new ExpressionParser(this.method));
      return;
    }
    if (type == Keywords.THROWS) {
      pm.pushParser(new ExceptionListParser(this.method));
      return;
    }
  }
}

Fixed version (ground truth):
@Override public void parse(IParserManager pm,IToken token) throws SyntaxError {
  int type=token.type();
  if (type == Symbols.CLOSE_CURLY_BRACKET) {
    pm.popParser(true);
    return;
  }
  if (this.isInMode(TYPE)) {
    if (type == Symbols.SEMICOLON) {
      if (token.isInferred()) {
        return;
      }
      this.reset();
      return;
    }
    if (type == Keywords.NEW) {
      Constructor c=new Constructor(this.theClass);
      this.body.addConstructor(c);
      c.position=token.raw();
      c.modifiers=this.modifiers;
      c.setAnnotations(this.annotations,this.annotationCount);
      this.method=c;
      this.mode=PARAMETERS;
      return;
    }
    int i=0;
    if ((i=ModifierTypes.MEMBER.parse(type)) != -1) {
      this.modifiers|=i;
      return;
    }
    if ((i=ModifierTypes.CLASS_TYPE.parse(type)) != -1) {
      CodeClass codeClass=new CodeClass(null,this.theClass.getUnit(),this.modifiers);
      codeClass.setAnnotations(this.getAnnotations(),this.annotationCount);
      codeClass.setOuterClass(this.theClass);
      codeClass.setModifiers(this.modifiers);
      this.theClass.getBody().addClass(codeClass);
      ClassDeclarationParser parser=new ClassDeclarationParser(codeClass);
      pm.pushParser(parser,true);
      this.reset();
      return;
    }
    if (token.nameValue() == Name.at) {
      Annotation annotation=new Annotation(token.raw());
      this.addAnnotation(annotation);
      pm.pushParser(new AnnotationParser(annotation));
      return;
    }
    pm.pushParser(new TypeParser(this),true);
    this.mode=NAME;
    return;
  }
  if (this.isInMode(NAME)) {
    if (!ParserUtil.isIdentifier(type)) {
      this.reset();
      throw new SyntaxError(token,"String_Node_Str");
    }
    IToken next=token.next();
    type=next.type();
    if (type == Symbols.SEMICOLON) {
      Field f=new Field(this.theClass,token.nameValue(),this.type);
      f.position=token.raw();
      f.modifiers=this.modifiers;
      f.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.body.addField(f);
      pm.skip();
      this.reset();
      return;
    }
    if (type == Symbols.OPEN_PARENTHESIS) {
      this.mode=PARAMETERS;
      Method m=new Method(this.theClass,token.nameValue(),this.type);
      m.modifiers=this.modifiers;
      m.position=token.raw();
      m.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.method=m;
      this.body.addMethod(m);
      return;
    }
    if (type == Symbols.OPEN_CURLY_BRACKET) {
      Property p=new Property(this.theClass,token.nameValue(),this.type);
      p.position=token.raw();
      p.modifiers=this.modifiers;
      p.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.body.addProperty(p);
      pm.skip();
      pm.pushParser(new PropertyParser(this.theClass,p));
      this.reset();
      return;
    }
    if (type == Symbols.EQUALS) {
      Field f=new Field(this.theClass,token.nameValue(),this.type);
      f.position=token.raw();
      f.modifiers=this.modifiers;
      f.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.body.addField(f);
      pm.skip();
      pm.pushParser(new ExpressionParser(f));
      this.reset();
      return;
    }
    if (type == Symbols.OPEN_SQUARE_BRACKET) {
      Method m=new Method(this.theClass,token.nameValue(),this.type);
      m.modifiers=this.modifiers;
      m.position=token.raw();
      m.setAnnotations(this.getAnnotations(),this.annotationCount);
      this.method=m;
      this.body.addMethod(m);
      this.mode=GENERICS_END;
      pm.skip();
      pm.pushParser(new TypeVariableListParser(m));
      return;
    }
    return;
  }
  if (this.isInMode(GENERICS_END)) {
    this.mode=PARAMETERS;
    if (type == Symbols.CLOSE_SQUARE_BRACKET) {
      return;
    }
    throw new SyntaxError(token,"String_Node_Str",true);
  }
  if (this.isInMode(PARAMETERS)) {
    this.mode=PARAMETERS_END;
    if (type == Symbols.OPEN_PARENTHESIS) {
      pm.pushParser(new ParameterListParser(this.method));
      return;
    }
    throw new SyntaxError(token,"String_Node_Str",true);
  }
  if (this.isInMode(PARAMETERS_END)) {
    this.mode=METHOD_END;
    if (type == Symbols.CLOSE_PARENTHESIS) {
      return;
    }
    throw new SyntaxError(token,"String_Node_Str",true);
  }
  if (this.isInMode(METHOD_END)) {
    if (type == Symbols.SEMICOLON) {
      this.reset();
      return;
    }
    if (type == Symbols.OPEN_CURLY_BRACKET) {
      pm.pushParser(new ExpressionParser(this.method),true);
      return;
    }
    if (type == Symbols.EQUALS) {
      pm.pushParser(new ExpressionParser(this.method));
      return;
    }
    if (type == Keywords.THROWS) {
      pm.pushParser(new ExceptionListParser(this.method));
      return;
    }
  }
}