Program: 84953
Project: 84953
Buggy source:
private void getAccess(IParserManager pm,Name name,IToken token,int type) throws SyntaxError {
  IToken next=token.next();
  int type1=next.type();
  if (type1 == Symbols.OPEN_PARENTHESIS) {
    MethodCall call=new MethodCall(token,this.value,name);
    call.dotless=this.dotless;
    this.value=call;
    this.mode=PARAMETERS;
    return;
  }
  if (type1 == Symbols.OPEN_SQUARE_BRACKET) {
    MethodCall call=new MethodCall(token,this.value,name);
    call.dotless=this.dotless;
    this.value=call;
    this.mode=GENERICS;
    return;
  }
  if (type1 == Symbols.ARROW_OPERATOR) {
    LambdaExpression lv=new LambdaExpression(next.raw(),name);
    this.mode=VALUE;
    this.field.setValue(lv);
    this.field=lv;
    pm.skip();
    return;
  }
  Operator op=pm.getOperator(name);
  if (op != null) {
    if (this.value == null || op.type == Operator.PREFIX) {
      MethodCall call=new MethodCall(token,null,name);
      SingleArgument sa=new SingleArgument();
      call.arguments=sa;
      call.dotless=this.dotless;
      this.value=call;
      this.mode=ACCESS;
      ExpressionParser parser=new ExpressionParser(sa);
      parser.operator=op;
      parser.prefix=true;
      pm.pushParser(parser);
      return;
    }
    MethodCall call=new MethodCall(token,this.value,name);
    this.value=call;
    this.mode=ACCESS;
    call.dotless=this.dotless;
    if (op.type != Operator.POSTFIX) {
      SingleArgument sa=new SingleArgument();
      call.arguments=sa;
      ExpressionParser parser=new ExpressionParser(sa);
      parser.operator=op;
      pm.pushParser(parser);
    }
    return;
  }
  if (!name.qualified.endsWith("String_Node_Str")) {
    if (ParserUtil.isTerminator2(type1)) {
      FieldAccess access=new FieldAccess(token,this.value,name);
      access.dotless=this.dotless;
      this.value=access;
      this.mode=ACCESS;
      return;
    }
    if (ParserUtil.isIdentifier(type1) && !ParserUtil.isTerminator2(next.next().type())) {
      FieldAccess access=new FieldAccess(token,this.value,name);
      access.dotless=this.dotless;
      this.value=access;
      this.mode=ACCESS;
      return;
    }
  }
  MethodCall call=new MethodCall(token,this.value,name);
  this.value=call;
  this.mode=ACCESS;
  call.dotless=this.dotless;
  SingleArgument sa=new SingleArgument();
  call.arguments=sa;
  ExpressionParser parser=new ExpressionParser(sa);
  parser.operator=op;
  pm.pushParser(parser);
  return;
}

Fixed version (ground truth):
private void getAccess(IParserManager pm,Name name,IToken token,int type) throws SyntaxError {
  IToken next=token.next();
  int type1=next.type();
  if (type1 == Symbols.OPEN_PARENTHESIS) {
    MethodCall call=new MethodCall(token,this.value,name);
    call.dotless=this.dotless;
    this.value=call;
    this.mode=PARAMETERS;
    return;
  }
  if (type1 == Symbols.ARROW_OPERATOR) {
    LambdaExpression lv=new LambdaExpression(next.raw(),name);
    this.mode=VALUE;
    this.field.setValue(lv);
    this.field=lv;
    pm.skip();
    return;
  }
  Operator op=pm.getOperator(name);
  if (op != null) {
    if (this.value == null || op.type == Operator.PREFIX) {
      MethodCall call=new MethodCall(token,null,name);
      SingleArgument sa=new SingleArgument();
      call.arguments=sa;
      call.dotless=this.dotless;
      this.value=call;
      this.mode=ACCESS;
      ExpressionParser parser=new ExpressionParser(sa);
      parser.operator=op;
      parser.prefix=true;
      pm.pushParser(parser);
      return;
    }
    MethodCall call=new MethodCall(token,this.value,name);
    this.value=call;
    this.mode=ACCESS;
    call.dotless=this.dotless;
    if (op.type != Operator.POSTFIX) {
      SingleArgument sa=new SingleArgument();
      call.arguments=sa;
      ExpressionParser parser=new ExpressionParser(sa);
      parser.operator=op;
      pm.pushParser(parser);
    }
    return;
  }
  if (!name.qualified.endsWith("String_Node_Str")) {
    if (ParserUtil.isTerminator2(type1)) {
      FieldAccess access=new FieldAccess(token,this.value,name);
      access.dotless=this.dotless;
      this.value=access;
      this.mode=ACCESS;
      return;
    }
    if (ParserUtil.isIdentifier(type1) && !ParserUtil.isTerminator2(next.next().type())) {
      FieldAccess access=new FieldAccess(token,this.value,name);
      access.dotless=this.dotless;
      this.value=access;
      this.mode=ACCESS;
      return;
    }
  }
  MethodCall call=new MethodCall(token,this.value,name);
  this.value=call;
  this.mode=ACCESS;
  call.dotless=this.dotless;
  SingleArgument sa=new SingleArgument();
  call.arguments=sa;
  ExpressionParser parser=new ExpressionParser(sa);
  parser.operator=op;
  pm.pushParser(parser);
  return;
}