anchor.diff:        }
       }
   
  -    bool isAssignable(var variable) {
  -      return variable is Element && variable.isAssignable;
  -    }
  -
  -    for (Local variable in scopeVariables) {
  +    for (LocalVariableElement variable in scopeVariables) {
         // No need to box non-assignable elements.
  -      if (!isAssignable(variable)) continue;
  +      if (!variable.isAssignable) continue;
         if (!mutatedVariables.contains(variable)) continue;
         boxCapturedVariable(variable);
       }
  
positive.code:     useLocal(new TypeVariableLocal(typeVariable, outermostElement));
    }
  
    void declareLocal(Local element) {
      scopeVariables.add(element);
    }
  
  
negative.code:   // List of encountered closures.
    List<Expression> closures = <Expression>[];
  
    // 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<LocalVariableElement> mutatedVariables = new Set<LocalVariableElement>();
  
    MemberElement outermostElement;
    ExecutableElement executableContext;
  