anchor.diff:    CodeEmitterTask(Compiler compiler, Namer namer, this.generateSourceMap)
         : mainBuffer = new CodeBuffer(),
           this.namer = namer,
  -        boundClosureCache = new Map<int, String>(),
  -        interceptorClosureCache = new Map<int, String>(),
           constantEmitter = new ConstantEmitter(compiler, namer),
           super(compiler) {
       nativeEmitter = new NativeEmitter(this);
  
positive.code:   // TODO(ngeoffray): remove this field.
    Set<ClassElement> instantiatedClasses;
  
    final List<jsAst.Expression> boundClosures = <jsAst.Expression>[];
  
    JavaScriptBackend get backend => compiler.backend;
  
    String get _ => compiler.enableMinification ? "" : " ";
    String get n => compiler.enableMinification ? "" : "\n";
    String get N => compiler.enableMinification ? "\n" : ";\n";
  
    /**
     * A cache of closures that are used to closurize instance methods.
     * A closure is dynamically bound to the instance used when
     * closurized.
     */
    final Map<int, String> boundClosureCache;
  
    /**
     * A cache of closures that are used to closurize instance methods
     * of interceptors. These closures are dynamically bound to the
     * interceptor instance, and the actual receiver of the method.
     */
    final Map<int, String> interceptorClosureCache;
  
    /**
     * Raw ClassElement symbols occuring in is-checks and type assertions.  If the
  
negative.code:       }
  
        // As a side-effect, emitting classes will produce "bound closures" in
        // [methodClosures].  The bound closures are JS AST nodes that add
        // properties to $$ [classesCollector].  The bound closures are not
        // emitted until we have emitted all other classes (native or not).
  
        // Might create methodClosures.
        if (!regularClasses.isEmpty) {
          for (ClassElement element in regularClasses) {
            generateClass(element, bufferForElement(element, mainBuffer));
  