Program: 83415
Project: 83415
Buggy source:
@Override public IValue resolve(MarkerList markers,IContext context){
  if (this.instance != null) {
    if (this.instance.valueTag() == FIELD_ACCESS) {
      FieldAccess fa=(FieldAccess)this.instance;
      if (fa.instance != null) {
        fa.instance=fa.instance.resolve(markers,context);
      }
      IValue v1=fa.resolveFieldAccess(context);
      if (v1 != null) {
        this.instance=v1;
        this.arguments.resolve(markers,context);
      }
 else {
        this.arguments.resolve(markers,context);
        IArguments arguments=new SingleArgument(new Array(((ArgumentList)this.arguments).getValues(),this.arguments.size()));
        IMethod m=ICall.resolveMethod(context,fa.instance,fa.name,arguments);
        if (m != null) {
          MethodCall mc=new MethodCall(fa.position,fa.instance,fa.name);
          mc.method=m;
          mc.arguments=arguments;
          mc.dotless=fa.dotless;
          mc.checkArguments(markers,context);
          return mc;
        }
        ICall.addResolveMarker(markers,this.position,fa.instance,fa.name,arguments);
        return this;
      }
    }
 else {
      this.instance=this.instance.resolve(markers,context);
      this.arguments.resolve(markers,context);
    }
  }
 else {
    this.arguments.resolve(markers,context);
  }
  int count=this.arguments.size();
  ArgumentList argumentList=new ArgumentList(count);
  for (int i=0; i < count; i++) {
    argumentList.addValue(this.arguments.getValue(i,null));
  }
  IMethod m=ICall.resolveMethod(context,this.instance,Name.subscript,argumentList);
  if (m != null) {
    this.arguments=argumentList;
    this.method=m;
    this.checkArguments(markers,context);
    return this;
  }
  ICall.addResolveMarker(markers,position,this.instance,Name.subscript,argumentList);
  return this;
}

Fixed version (ground truth):
@Override public IValue resolve(MarkerList markers,IContext context){
  if (this.instance != null) {
    if (this.instance.valueTag() == FIELD_ACCESS) {
      FieldAccess fa=(FieldAccess)this.instance;
      if (fa.instance != null) {
        fa.instance=fa.instance.resolve(markers,context);
      }
      IValue v1=fa.resolveFieldAccess(markers,context);
      if (v1 != null) {
        this.instance=v1;
        this.arguments.resolve(markers,context);
      }
 else {
        this.arguments.resolve(markers,context);
        IArguments arguments=new SingleArgument(new Array(((ArgumentList)this.arguments).getValues(),this.arguments.size()));
        IMethod m=ICall.resolveMethod(context,fa.instance,fa.name,arguments);
        if (m != null) {
          MethodCall mc=new MethodCall(fa.position,fa.instance,fa.name);
          mc.method=m;
          mc.arguments=arguments;
          mc.dotless=fa.dotless;
          mc.checkArguments(markers,context);
          return mc;
        }
        ICall.addResolveMarker(markers,this.position,fa.instance,fa.name,arguments);
        return this;
      }
    }
 else {
      this.instance=this.instance.resolve(markers,context);
      this.arguments.resolve(markers,context);
    }
  }
 else {
    this.arguments.resolve(markers,context);
  }
  int count=this.arguments.size();
  ArgumentList argumentList=new ArgumentList(count);
  for (int i=0; i < count; i++) {
    argumentList.addValue(this.arguments.getValue(i,null));
  }
  IMethod m=ICall.resolveMethod(context,this.instance,Name.subscript,argumentList);
  if (m != null) {
    this.arguments=argumentList;
    this.method=m;
    this.checkArguments(markers,context);
    return this;
  }
  ICall.addResolveMarker(markers,position,this.instance,Name.subscript,argumentList);
  return this;
}