anchor.diff:    ReturnStatement _getExternalSetterBody(Procedure node) {
       var function = node.function;
       assert(function.positionalParameters.length == 2);
  +    var value = function.positionalParameters.last;
       var setPropertyInvocation = StaticInvocation(
           _setPropertyTarget,
           Arguments([
             VariableGet(function.positionalParameters.first),
             StringLiteral(_getExtensionMemberName(node)),
  -          VariableGet(function.positionalParameters.last)
  +          VariableGet(value)
           ], types: [
  -          DynamicType()
  +          value.type
           ]))
         ..fileOffset = node.fileOffset;
  -    return ReturnStatement(AsExpression(
  -        _lowerSetProperty(setPropertyInvocation), function.returnType));
  +    return ReturnStatement(_lowerSetProperty(setPropertyInvocation));
     }
   
     /// Returns a new function body for the given [node] external method.
  
positive.code:               .map((argument) => VariableGet(argument))
                .toList())
          ], types: [
            DynamicType()
          ]))
        ..fileOffset = node.fileOffset;
      return ReturnStatement(AsExpression(
          _lowerCallMethod(callMethodInvocation), function.returnType));
    }
  
    /// Returns the extension member name.
  
negative.code:           VariableGet(function.positionalParameters.first),
            StringLiteral(_getExtensionMemberName(node))
          ], types: [
            function.returnType
          ]))
        ..fileOffset = node.fileOffset;
      return ReturnStatement(getPropertyInvocation);
    }
  
    /// Returns a new function body for the given [node] external setter.
  