Program: 82908
Project: 82908
Buggy source:
protected static IValue resolveCall(MarkerList markers,IContext context,ICodePosition position,IValue receiver,Name name,IArguments arguments){
  if (!receiver.isResolved()) {
    return null;
  }
  if (arguments.isEmpty()) {
    return null;
  }
  int type=receiver.valueTag();
  if (type == IValue.APPLY_CALL) {
    ApplyMethodCall applyCall=(ApplyMethodCall)receiver;
    SideEffectHelper helper=new SideEffectHelper();
    IValue applyReceiver=applyCall.receiver=helper.processValue(applyCall.receiver);
    IArguments applyArguments=applyCall.arguments=helper.processArguments(applyCall.arguments);
    IValue op=new MethodCall(position,receiver,name,arguments).resolveCall(markers,context);
    IValue update=new UpdateMethodCall(position,applyReceiver,applyArguments.withLastValue(Names.update,op)).resolveCall(markers,context);
    return helper.finish(update);
  }
 else   if (type == IValue.SUBSCRIPT_GET) {
    SubscriptAccess subscriptAccess=(SubscriptAccess)receiver;
    SideEffectHelper helper=new SideEffectHelper();
    IValue subscriptReceiver=subscriptAccess.receiver=helper.processValue(subscriptAccess.receiver);
    IArguments subscriptArguments=subscriptAccess.arguments=helper.processArguments(subscriptAccess.arguments);
    IValue op=new MethodCall(position,receiver,name,arguments).resolveCall(markers,context);
    IArguments subscriptSetterArguments=subscriptArguments.withLastValue(Names.subscript_$eq,op);
    IValue subscript=new SubscriptAssignment(position,subscriptReceiver,subscriptSetterArguments).resolveCall(markers,context);
    return helper.finish(subscript);
  }
 else   if (type == IValue.FIELD_ACCESS) {
    final FieldAccess fieldAccess=(FieldAccess)receiver;
    final IncOperator op=getIncOperator(name,arguments,fieldAccess);
    if (op != null) {
      op.setPosition(position);
      return op.resolveOperator(markers,context);
    }
    final SideEffectHelper helper=new SideEffectHelper();
    final IValue fieldReceiver=fieldAccess.receiver=helper.processValue(fieldAccess.receiver);
    final IValue methodCall=new MethodCall(position,receiver,name,arguments).resolveCall(markers,context);
    if (methodCall == null) {
      return null;
    }
    final FieldAssignment assignment=new FieldAssignment(position,fieldReceiver,fieldAccess.field,methodCall);
    return helper.finish(assignment);
  }
  return null;
}

Fixed version (ground truth):
protected static IValue resolveCall(MarkerList markers,IContext context,ICodePosition position,IValue receiver,Name name,IArguments arguments){
  if (!receiver.isResolved()) {
    return null;
  }
  if (arguments.isEmpty()) {
    return null;
  }
  int type=receiver.valueTag();
  if (type == IValue.APPLY_CALL) {
    ApplyMethodCall applyCall=(ApplyMethodCall)receiver;
    SideEffectHelper helper=new SideEffectHelper();
    IValue applyReceiver=applyCall.receiver=helper.processValue(applyCall.receiver);
    IArguments applyArguments=applyCall.arguments=helper.processArguments(applyCall.arguments);
    IValue op=new MethodCall(position,receiver,name,arguments).resolveCall(markers,context);
    if (op == null) {
      return null;
    }
    IValue update=new UpdateMethodCall(position,applyReceiver,applyArguments.withLastValue(Names.update,op)).resolveCall(markers,context);
    return helper.finish(update);
  }
 else   if (type == IValue.SUBSCRIPT_GET) {
    SubscriptAccess subscriptAccess=(SubscriptAccess)receiver;
    SideEffectHelper helper=new SideEffectHelper();
    IValue subscriptReceiver=subscriptAccess.receiver=helper.processValue(subscriptAccess.receiver);
    IArguments subscriptArguments=subscriptAccess.arguments=helper.processArguments(subscriptAccess.arguments);
    IValue op=new MethodCall(position,receiver,name,arguments).resolveCall(markers,context);
    if (op == null) {
      return null;
    }
    IArguments subscriptSetterArguments=subscriptArguments.withLastValue(Names.subscript_$eq,op);
    IValue subscript=new SubscriptAssignment(position,subscriptReceiver,subscriptSetterArguments).resolveCall(markers,context);
    return helper.finish(subscript);
  }
 else   if (type == IValue.FIELD_ACCESS) {
    final FieldAccess fieldAccess=(FieldAccess)receiver;
    final IncOperator op=getIncOperator(name,arguments,fieldAccess);
    if (op != null) {
      op.setPosition(position);
      return op.resolveOperator(markers,context);
    }
    final SideEffectHelper helper=new SideEffectHelper();
    final IValue fieldReceiver=fieldAccess.receiver=helper.processValue(fieldAccess.receiver);
    final IValue methodCall=new MethodCall(position,receiver,name,arguments).resolveCall(markers,context);
    if (methodCall == null) {
      return null;
    }
    final FieldAssignment assignment=new FieldAssignment(position,fieldReceiver,fieldAccess.field,methodCall);
    return helper.finish(assignment);
  }
  return null;
}