anchor.diff:      int size = SizeVisitor.sizeOf(invoke, function);
       if (!_inliner.isCalledOnce(target) && size > 11) return doNotInline();
   
  -    _inliner.cache.putPositive(target, callStructure, abstractReceiver,
  +    _inliner.cache.putPositive(target, callStructure, abstractReceiverInMethod,
           abstractArguments, function);
       return finish(function);
     }
  
positive.code:     // before.  Make an inlining decision.
      assert(cachedResult == InliningCache.ABSENT);
      Primitive doNotInline() {
        _inliner.cache.putNegative(target, callStructure, abstractReceiver,
            abstractArguments);
        return null;
      }
      if (backend.annotations.noInline(target)) return doNotInline();
  
negative.code:       void setValue(Variable variable, Reference<Primitive> value) {
          variable.type = value.definition.type;
        }
        if (invoke.callingConvention == CallingConvention.Intercepted) {
          setValue(function.thisParameter, invoke.receiver);
          function.parameters[0].type = abstractReceiverInMethod;
          for (int i = 1; i < invoke.arguments.length; ++i) {
            setValue(function.parameters[i], invoke.arguments[i]);
          }
        } else {
          if (invoke.receiver != null) {
            function.thisParameter.type = abstractReceiverInMethod;
          }
          for (int i = 0; i < invoke.arguments.length; ++i) {
            setValue(function.parameters[i], invoke.arguments[i]);
          }
        }
        optimizeBeforeInlining(function);
      }
  