Program: 82881
Project: 82881
Buggy source:
private void parseInfixAccess(IParserManager pm,IToken token,Name name){
  final int type=token.type();
  final IToken next=token.next();
  final int nextType=next.type();
  if (isSymbol(type)) {
    if (this.value == null) {
      final PrefixCall call=new PrefixCall(token.raw(),name);
      this.value=call;
      this.mode=ACCESS;
      if (this.isOperatorEnd(nextType)) {
        pm.report(next,"String_Node_Str");
        return;
      }
      this.parseApply(pm,next,call);
      return;
    }
    if (this.isOperatorEnd(nextType) || isSymbol(nextType) && neighboring(token.prev(),token) && !neighboring(next,next.next())) {
      this.value=new PostfixCall(token.raw(),this.value,name);
      this.mode=ACCESS;
      return;
    }
    if (this.hasFlag(IGNORE_OPERATOR)) {
      this.valueConsumer.setValue(this.value);
      pm.popParser(true);
      return;
    }
    final OperatorChain chain;
    if (this.value.valueTag() == IValue.OPERATOR_CHAIN) {
      chain=(OperatorChain)this.value;
    }
 else {
      chain=new OperatorChain();
      chain.addOperand(this.value);
      this.value=chain;
    }
    chain.addOperator(name,token.raw());
    pm.pushParser(new ExpressionParser(chain::addOperand).withFlag(this.flags | IGNORE_OPERATOR));
    return;
  }
switch (nextType) {
case BaseSymbols.OPEN_PARENTHESIS:
{
      final MethodCall call=new MethodCall(token.raw(),this.value,name);
      ArgumentListParser.parseArguments(pm,next.next(),call);
      this.value=call;
      this.mode=PARAMETERS_END;
      pm.skip();
      return;
    }
case BaseSymbols.OPEN_SQUARE_BRACKET:
{
    final FieldAccess fieldAccess=new FieldAccess(token.raw(),this.value,name);
    final SubscriptAccess subscriptAccess=new SubscriptAccess(next.raw(),fieldAccess);
    ArgumentListParser.parseArguments(pm,next.next(),subscriptAccess);
    this.value=subscriptAccess;
    this.mode=SUBSCRIPT_END;
    pm.skip();
    return;
  }
case DyvilSymbols.ARROW_RIGHT:
case DyvilSymbols.DOUBLE_ARROW_RIGHT:
if (this.hasFlag(IGNORE_LAMBDA)) {
  break;
}
pm.pushParser(new LambdaOrTupleParser(this,LambdaOrTupleParser.SINGLE_PARAMETER),true);
this.mode=END;
return;
}
if (isGenericCall(next,nextType)) {
final MethodCall call=new MethodCall(token.raw(),this.value,name,EmptyArguments.INSTANCE);
this.value=call;
pm.splitJump(next,1);
pm.pushParser(new TypeListParser(call.getGenericData(),true));
this.mode=TYPE_ARGUMENTS_END;
return;
}
if (this.isFieldAccess(token,next,nextType)) {
this.value=new FieldAccess(token.raw(),this.value,name);
this.mode=ACCESS;
return;
}
final MethodCall call=new MethodCall(token.raw(),this.value,name,EmptyArguments.INSTANCE);
this.value=call;
this.mode=ACCESS;
this.parseApply(pm,token.next(),call);
}

Fixed version (ground truth):
private void parseInfixAccess(IParserManager pm,IToken token,Name name){
  final int type=token.type();
  final IToken next=token.next();
  final int nextType=next.type();
  if (isSymbol(type)) {
    if (this.value == null) {
      final PrefixCall call=new PrefixCall(token.raw(),name);
      this.value=call;
      this.mode=ACCESS;
      if (this.isOperatorEnd(nextType)) {
        pm.report(ICodePosition.between(token,next),"String_Node_Str");
        return;
      }
      this.parseApply(pm,next,call);
      return;
    }
    if (this.isOperatorEnd(nextType) || isSymbol(nextType) && neighboring(token.prev(),token) && !neighboring(next,next.next())) {
      this.value=new PostfixCall(token.raw(),this.value,name);
      this.mode=ACCESS;
      return;
    }
    if (this.hasFlag(IGNORE_OPERATOR)) {
      this.valueConsumer.setValue(this.value);
      pm.popParser(true);
      return;
    }
    final OperatorChain chain;
    if (this.value.valueTag() == IValue.OPERATOR_CHAIN) {
      chain=(OperatorChain)this.value;
    }
 else {
      chain=new OperatorChain();
      chain.addOperand(this.value);
      this.value=chain;
    }
    chain.addOperator(name,token.raw());
    pm.pushParser(new ExpressionParser(chain::addOperand).withFlag(this.flags | IGNORE_OPERATOR));
    return;
  }
switch (nextType) {
case BaseSymbols.OPEN_PARENTHESIS:
{
      final MethodCall call=new MethodCall(token.raw(),this.value,name);
      ArgumentListParser.parseArguments(pm,next.next(),call);
      this.value=call;
      this.mode=PARAMETERS_END;
      pm.skip();
      return;
    }
case BaseSymbols.OPEN_SQUARE_BRACKET:
{
    final FieldAccess fieldAccess=new FieldAccess(token.raw(),this.value,name);
    final SubscriptAccess subscriptAccess=new SubscriptAccess(next.raw(),fieldAccess);
    ArgumentListParser.parseArguments(pm,next.next(),subscriptAccess);
    this.value=subscriptAccess;
    this.mode=SUBSCRIPT_END;
    pm.skip();
    return;
  }
case DyvilSymbols.ARROW_RIGHT:
case DyvilSymbols.DOUBLE_ARROW_RIGHT:
if (this.hasFlag(IGNORE_LAMBDA)) {
  break;
}
pm.pushParser(new LambdaOrTupleParser(this,LambdaOrTupleParser.SINGLE_PARAMETER),true);
this.mode=END;
return;
}
if (isGenericCall(next,nextType)) {
final MethodCall call=new MethodCall(token.raw(),this.value,name,EmptyArguments.INSTANCE);
this.value=call;
pm.splitJump(next,1);
pm.pushParser(new TypeListParser(call.getGenericData(),true));
this.mode=TYPE_ARGUMENTS_END;
return;
}
if (this.isFieldAccess(token,next,nextType)) {
this.value=new FieldAccess(token.raw(),this.value,name);
this.mode=ACCESS;
return;
}
final MethodCall call=new MethodCall(token.raw(),this.value,name,EmptyArguments.INSTANCE);
this.value=call;
this.mode=ACCESS;
this.parseApply(pm,token.next(),call);
}