anchor.diff:      'setProperty'
     ];
     final Iterable<Procedure> _allowedInteropJsUtilTargets;
  +  final Procedure _jsTarget;
     final Procedure _allowInteropTarget;
     final Procedure _listEmptyFactory;
   
  
positive.code: 
    /// Replaces js_util method calls with optimization when possible.
    ///
    /// Lowers `getProperty` for any argument type straight to JS fragment call.
    /// Lowers `setProperty` to `_setPropertyUnchecked` for values that are
    /// not Function type and guaranteed to be interop allowed.
    /// Lowers `callMethod` to `_callMethodUncheckedN` when the number of given
    /// arguments is 0-4 and all arguments are guaranteed to be interop allowed.
    @override
    visitStaticInvocation(StaticInvocation node) {
      if (node.target == _getPropertyTarget) {
        node = _lowerGetProperty(node);
      } else if (node.target == _setPropertyTarget) {
        node = _lowerSetProperty(node);
      } else if (node.target == _callMethodTarget) {
        node = _lowerCallMethod(node);
  
negative.code:           StringLiteral(_getExtensionMemberName(node))
          ]))
        ..fileOffset = node.fileOffset;
      return ReturnStatement(
          AsExpression(getPropertyInvocation, function.returnType));
    }
  
    /// Returns a new function body for the given [node] external setter.
  