anchor.diff:    // block is closed.
     HBasicBlock lastOpenedBlock;
   
  -  List<Element> sourceElementStack;
  -
  -  LibraryElement get currentLibrary => work.element.getLibrary();
  -  Element get currentElement => work.element;
  +  final List<Element> sourceElementStack;
  +
  +  Element get currentElement => sourceElementStack.last.declaration;
     Compiler get compiler => builder.compiler;
     CodeEmitterTask get emitter => builder.emitter;
   
  
positive.code:      * Helper to create an instruction that gets the value of a type variable.
       */
      void addTypeVariableReference(TypeVariableType type) {
        Element member = work.element;
        if (member.enclosingElement.isClosure()) {
          ClosureClassElement closureClass = member.enclosingElement;
          member = closureClass.methodElement;
  
negative.code:     }
      HInstruction buildCondition() {
        SourceString name = const SourceString('moveNext');
        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, currentElement.getLibrary());
        bool hasGetter = compiler.world.hasAnyUserDefinedGetter(call);
        push(new HInvokeDynamicGetter(call, null, iterator, hasGetter));
  
  