anchor.diff:    @override
     Object visitFunctionExpression(FunctionExpression node) {
       ExecutableElement outerFunction = _enclosingFunction;
  +    FunctionBody outerFunctionBody = _currentFunctionBody;
       try {
  +      _currentFunctionBody = node.body;
         _enclosingFunction = node.element;
         _overrideManager.enterScope();
         try {
  
positive.code:   @override
    Object visitConstructorDeclaration(ConstructorDeclaration node) {
      ExecutableElement outerFunction = _enclosingFunction;
      try {
        _enclosingFunction = node.element;
        FunctionType type = _enclosingFunction.type;
        InferenceContext.setType(node.body, type.returnType);
        super.visitConstructorDeclaration(node);
      } finally {
        _enclosingFunction = outerFunction;
      }
      ConstructorElementImpl constructor = node.element;
  
negative.code:   void _clearTypePromotionsIfAccessedInClosureAndProtentiallyMutated(
        AstNode target) {
      for (Element element in _promoteManager.promotedElements) {
        if (_currentFunctionBody.isPotentiallyMutatedInScope(element)) {
          if (_isVariableAccessedInClosure(element, target)) {
            _promoteManager.setType(element, null);
          }
  