anchor.diff:      }
       HInstruction buildCondition() {
         SourceString name = const SourceString('moveNext');
  -      Selector selector = new Selector.call(name, work.element.getLibrary(), 0);
  +      Selector selector = new Selector.call(
  +          name, currentElement.getLibrary(), 0);
         bool hasGetter = compiler.world.hasAnyUserDefinedGetter(selector);
         push(new HInvokeDynamicMethod(selector, <HInstruction>[iterator]));
         return popBoolified();
       }
       void buildBody() {
         SourceString name = const SourceString('current');
  -      Selector call = new Selector.getter(name, work.element.getLibrary());
  +      Selector call = new Selector.getter(name, currentElement.getLibrary());
         bool hasGetter = compiler.world.hasAnyUserDefinedGetter(call);
         push(new HInvokeDynamicGetter(call, null, iterator, hasGetter));
   
  
positive.code:       bool isIdenticalFunction = element == compiler.identicalFunction;
  
        if (!isIdenticalFunction
            && tryInlineMethod(element, selector, node.arguments)) {
          return;
        }
  
  
negative.code:   }
  
    /**
     * Try to inline [element] within the currect context of the
     * builder. The insertion point is the state of the builder.
     */
    bool tryInlineMethod(Element element,
                         Selector selector,
                         Link<Node> arguments,
                         Node currentNode) {
      if (compiler.disableInlining) return false;
      // Ensure that [element] is an implementation element.
      element = element.implementation;
  