anchor.diff:    // List of encountered closures.
     List<Expression> closures = <Expression>[];
   
  -  // The variables that have been declared in the current scope.
  -  List<Local> scopeVariables;
  -
  -  // Keep track of the mutated variables so that we don't need to box
  +  // The local variables that have been declared in the current scope.
  +  List<LocalVariableElement> scopeVariables;
  +
  +  // Keep track of the mutated local variables so that we don't need to box
     // non-mutated variables.
  -  Set<VariableElement> mutatedVariables = new Set<VariableElement>();
  +  Set<LocalVariableElement> mutatedVariables = new Set<LocalVariableElement>();
   
     MemberElement outermostElement;
     ExecutableElement executableContext;
  
positive.code:     closureMappingCache[node] = closureData;
  
      inNewScope(node, () {
        // We have to declare the implicit 'this' parameter.
        if (!insideClosure && closureData.thisLocal != null) {
          declareLocal(closureData.thisLocal);
        }
        // If we are inside a named closure we have to declare ourselve. For
        // simplicity we declare the local even if the closure does not have a
        // name.
        // It will simply not be used.
        if (insideClosure) {
          declareLocal(closure);
        }
  
        if (executableContext.isFactoryConstructor &&
            compiler.backend.classNeedsRti(executableContext.enclosingElement)) {
          // Declare the type parameters in the scope. Generative
          // constructors just use 'this'.
          ClassElement cls = executableContext.enclosingClass;
          cls.typeVariables.forEach((TypeVariableType typeVariable) {
            declareLocal(new TypeVariableLocal(typeVariable, executableContext));
          });
        }
  
        DartType type = element.type;
        // If the method needs RTI, or checked mode is set, we need to
        // escape the potential type variables used in that closure.
  
negative.code:   }
  
    void inNewScope(Node node, Function action) {
      List<LocalVariableElement> oldScopeVariables = scopeVariables;
      scopeVariables = <LocalVariableElement>[];
      action();
      attachCapturedScopeVariables(node);
      mutatedVariables.removeAll(scopeVariables);
  