Program: 85374
Project: 85374
Buggy source:
@Override public boolean parse(ParserManager pm,String value,IToken token) throws SyntaxError {
  if (this.mode == 0 || "String_Node_Str".equals(value) || "String_Node_Str".equals(value) && !this.isInMode(PARAMETERS_2) && !this.isInMode(TUPLE_END)) {
    pm.popParser(true);
    return true;
  }
  if (this.isInMode(VALUE)) {
    if (this.parsePrimitive(value,token)) {
      this.mode=ACCESS;
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=ACCESS;
      this.value=new ThisValue(token,this.context.getThisType());
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=ACCESS;
      this.value=new SuperValue(token,this.context.getThisType());
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      ReturnStatement statement=new ReturnStatement(token);
      this.value=statement;
      pm.pushParser(new ExpressionParser(this.context,statement));
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      IfStatement statement=new IfStatement(token);
      this.value=statement;
      pm.pushParser(new IfStatementParser(this.context,statement));
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=TUPLE_END;
      this.value=new TupleValue();
      if (!token.next().equals("String_Node_Str")) {
        pm.pushParser(new ExpressionListParser(this.context,(IValueList)this.value));
      }
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=VALUE_2;
      this.value=new StatementList(token);
      if (!token.next().equals("String_Node_Str")) {
        pm.pushParser(new ExpressionListParser(this.context,(IValueList)this.value));
      }
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      ConstructorCall call=new ConstructorCall(token);
      this.mode=PARAMETERS;
      this.value=call;
      pm.pushParser(new TypeParser(this.context,call));
      return true;
    }
 else     if ((token.isType(IToken.TYPE_IDENTIFIER) || token.equals("String_Node_Str")) && !token.next().isType(IToken.TYPE_OPEN_BRACKET)) {
      this.mode=ACCESS | VARIABLE;
      pm.pushParser(new TypeParser(this.context,this),true);
      return true;
    }
    this.mode=ACCESS;
  }
  if (this.isInMode(VALUE_2)) {
    if ("String_Node_Str".equals(value)) {
      this.value.expandPosition(token);
      this.mode=ACCESS;
      return true;
    }
  }
  if (this.isInMode(TUPLE_END)) {
    if ("String_Node_Str".equals(value)) {
      this.value.expandPosition(token);
      this.mode=ACCESS;
      return true;
    }
  }
  if (this.isInMode(VARIABLE)) {
    if (token.isType(IToken.TYPE_IDENTIFIER)) {
      IToken next=token.next();
      boolean flag=next.equals("String_Node_Str");
      if (flag || next.equals("String_Node_Str")) {
        ICodePosition pos=token.raw();
        Type type=((ClassAccess)this.value).getType();
        FieldAssign access=new FieldAssign(pos,value,null);
        access.field=new Variable(pos,value,type);
        access.initializer=true;
        this.value=access;
        if (flag) {
          pm.skip();
          pm.pushParser(new ExpressionParser(this.context,access));
        }
        return true;
      }
    }
  }
  if (this.isInMode(ACCESS)) {
    if ("String_Node_Str".equals(value)) {
      this.mode=DOT_ACCESS;
      return true;
    }
    if ("String_Node_Str".equals(value)) {
      String name=null;
      IValue instance=null;
      if (this.value instanceof ClassAccess) {
        name=((ClassAccess)this.value).getName();
      }
 else       if (this.value instanceof FieldAccess) {
        FieldAccess fa=(FieldAccess)this.value;
        name=fa.getName();
        instance=fa.getValue();
      }
 else {
        return false;
      }
      FieldAssign assign=new FieldAssign(this.value.getPosition(),name,instance);
      this.value=assign;
      pm.pushParser(new ExpressionParser(this.context,assign));
      return true;
    }
    if (this.lazy && this.value != null) {
      pm.popParser(true);
      return true;
    }
    this.mode=DOT_ACCESS;
  }
  if (this.isInMode(DOT_ACCESS)) {
    if (token.isType(IToken.TYPE_IDENTIFIER)) {
      IToken next=token.next();
      if (next.isType(IToken.TYPE_OPEN_BRACKET)) {
        MethodCall call=new MethodCall(token,this.value,value);
        this.value=call;
        this.mode=PARAMETERS;
        return true;
      }
 else       if (!next.isType(IToken.TYPE_IDENTIFIER) && !next.isType(IToken.TYPE_CLOSE_BRACKET) && !next.isType(IToken.TYPE_SYMBOL)) {
        MethodCall call=new MethodCall(token,this.value,value);
        call.setSugar(true);
        this.value=call;
        ExpressionParser parser=new ExpressionParser(this.context,this);
        parser.lazy=true;
        pm.pushParser(parser);
        return true;
      }
 else {
        FieldAccess access=new FieldAccess(token,this.value,value);
        this.value=access;
        this.mode=ACCESS;
        return true;
      }
    }
  }
  if (this.isInMode(PARAMETERS)) {
    if ("String_Node_Str".equals(value)) {
      pm.pushParser(new ExpressionListParser(this.context,(IValueList)this.value));
      this.mode=PARAMETERS_2;
      return true;
    }
  }
  if (this.isInMode(PARAMETERS_2)) {
    if ("String_Node_Str".equals(value)) {
      this.value.expandPosition(token);
      this.mode=ACCESS;
      return true;
    }
  }
  if (this.value != null) {
    this.value.expandPosition(token);
    pm.popParser(true);
    return true;
  }
  return false;
}

Fixed version (ground truth):
@Override public boolean parse(ParserManager pm,String value,IToken token) throws SyntaxError {
  if (this.mode == 0 || "String_Node_Str".equals(value) || "String_Node_Str".equals(value) && !this.isInMode(PARAMETERS_2) && !this.isInMode(TUPLE_END)) {
    pm.popParser(true);
    return true;
  }
  if (this.isInMode(VALUE)) {
    if (this.parsePrimitive(value,token)) {
      this.mode=ACCESS;
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=ACCESS;
      this.value=new ThisValue(token,this.context.getThisType());
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=ACCESS;
      this.value=new SuperValue(token,this.context.getThisType());
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      ReturnStatement statement=new ReturnStatement(token);
      this.value=statement;
      pm.pushParser(new ExpressionParser(this.context,statement));
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      IfStatement statement=new IfStatement(token);
      this.value=statement;
      pm.pushParser(new IfStatementParser(this.context,statement));
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=TUPLE_END;
      this.value=new TupleValue();
      if (!token.next().equals("String_Node_Str")) {
        pm.pushParser(new ExpressionListParser(this.context,(IValueList)this.value));
      }
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      this.mode=VALUE_2;
      this.value=new StatementList(token);
      if (!token.next().equals("String_Node_Str")) {
        pm.pushParser(new ExpressionListParser(this.context,(IValueList)this.value));
      }
      return true;
    }
 else     if ("String_Node_Str".equals(value)) {
      ConstructorCall call=new ConstructorCall(token);
      this.mode=PARAMETERS;
      this.value=call;
      pm.pushParser(new TypeParser(this.context,call));
      return true;
    }
 else     if ((token.isType(IToken.TYPE_IDENTIFIER) || token.equals("String_Node_Str")) && !token.next().isType(IToken.TYPE_OPEN_BRACKET)) {
      this.mode=ACCESS | VARIABLE;
      pm.pushParser(new TypeParser(this.context,this),true);
      return true;
    }
    this.mode=ACCESS;
  }
  if (this.isInMode(VALUE_2)) {
    if ("String_Node_Str".equals(value)) {
      this.value.expandPosition(token);
      this.mode=ACCESS;
      return true;
    }
  }
  if (this.isInMode(TUPLE_END)) {
    if ("String_Node_Str".equals(value)) {
      this.value.expandPosition(token);
      this.mode=ACCESS;
      return true;
    }
  }
  if (this.isInMode(VARIABLE)) {
    if (token.isType(IToken.TYPE_IDENTIFIER)) {
      if (token.next().equals("String_Node_Str")) {
        ICodePosition pos=token.raw();
        Type type=((ClassAccess)this.value).getType();
        FieldAssign access=new FieldAssign(pos,value,null);
        access.field=new Variable(pos,value,type);
        access.initializer=true;
        this.value=access;
        pm.skip();
        pm.pushParser(new ExpressionParser(this.context,access));
        return true;
      }
    }
  }
  if (this.isInMode(ACCESS)) {
    if ("String_Node_Str".equals(value)) {
      this.mode=DOT_ACCESS;
      return true;
    }
    if ("String_Node_Str".equals(value)) {
      String name=null;
      IValue instance=null;
      if (this.value instanceof ClassAccess) {
        name=((ClassAccess)this.value).getName();
      }
 else       if (this.value instanceof FieldAccess) {
        FieldAccess fa=(FieldAccess)this.value;
        name=fa.getName();
        instance=fa.getValue();
      }
 else {
        return false;
      }
      FieldAssign assign=new FieldAssign(this.value.getPosition(),name,instance);
      this.value=assign;
      pm.pushParser(new ExpressionParser(this.context,assign));
      return true;
    }
    if (this.lazy && this.value != null) {
      pm.popParser(true);
      return true;
    }
    this.mode=DOT_ACCESS;
  }
  if (this.isInMode(DOT_ACCESS)) {
    if (token.isType(IToken.TYPE_IDENTIFIER)) {
      IToken next=token.next();
      if (next.isType(IToken.TYPE_OPEN_BRACKET)) {
        MethodCall call=new MethodCall(token,this.value,value);
        this.value=call;
        this.mode=PARAMETERS;
        return true;
      }
 else       if (!next.isType(IToken.TYPE_IDENTIFIER) && !next.isType(IToken.TYPE_CLOSE_BRACKET) && !next.isType(IToken.TYPE_SYMBOL)) {
        MethodCall call=new MethodCall(token,this.value,value);
        call.setSugar(true);
        this.value=call;
        ExpressionParser parser=new ExpressionParser(this.context,this);
        parser.lazy=true;
        pm.pushParser(parser);
        return true;
      }
 else {
        FieldAccess access=new FieldAccess(token,this.value,value);
        this.value=access;
        this.mode=ACCESS;
        return true;
      }
    }
  }
  if (this.isInMode(PARAMETERS)) {
    if ("String_Node_Str".equals(value)) {
      pm.pushParser(new ExpressionListParser(this.context,(IValueList)this.value));
      this.mode=PARAMETERS_2;
      return true;
    }
  }
  if (this.isInMode(PARAMETERS_2)) {
    if ("String_Node_Str".equals(value)) {
      this.value.expandPosition(token);
      this.mode=ACCESS;
      return true;
    }
  }
  if (this.value != null) {
    this.value.expandPosition(token);
    pm.popParser(true);
    return true;
  }
  return false;
}