anchor.diff:      inputs.addAll(arguments);
       if (selector.isGetter()) {
         bool hasGetter = compiler.world.hasAnyUserDefinedGetter(selector);
  -      return new HInvokeDynamicGetter(selector, null, inputs, !hasGetter);
  +      pushWithPosition(
  +          new HInvokeDynamicGetter(selector, null, inputs, !hasGetter),
  +          location);
       } else if (selector.isSetter()) {
         bool hasSetter = compiler.world.hasAnyUserDefinedSetter(selector);
  -      return new HInvokeDynamicSetter(selector, null, inputs, !hasSetter);
  +      pushWithPosition(
  +          new HInvokeDynamicSetter(selector, null, inputs, !hasSetter),
  +          location);
       } else {
  -      return new HInvokeDynamicMethod(selector, inputs, isIntercepted);
  +      pushWithPosition(
  +          new HInvokeDynamicMethod(selector, inputs, isIntercepted),
  +          location);
       }
     }
   
  
positive.code:         return;
      }
  
      pushWithPosition(
            buildInvokeDynamic(send, selector, [left, right]),
            op);
      if (op.source.stringValue == '!=') {
        pushWithPosition(new HNot(popBoolified()), op);
      }
  
negative.code:       Selector selector = compiler.iteratorSelector;
        visit(node.expression);
        HInstruction receiver = pop();
        pushInvokeDynamic(node, selector, [receiver]);
        iterator = pop();
      }
      HInstruction buildCondition() {
        Selector selector = compiler.moveNextSelector;
        pushInvokeDynamic(node, selector, [iterator]);
        return popBoolified();
      }
      void buildBody() {
        Selector call = compiler.currentSelector;
        pushInvokeDynamic(node, call, [iterator]);
  
        Node identifier = node.declaredIdentifier;
        Element variable = elements[identifier];
  