anchor.diff:      // object for which there is an interceptor
       var jsObj = JS('', 'new #()', factoryFunction);
   
  -    return _wrapToDart(jsObj);
  +    return _castToJsObject(_wrapToDart(jsObj));
   
       // TODO(sra): Investigate:
       //
  
positive.code:   factory JsObject(JsFunction constructor, [List? arguments]) {
      var ctor = _convertToJS(constructor);
      if (arguments == null) {
        return _wrapToDart(JS('', 'new #()', ctor));
      }
  
      if (JS('bool', '# instanceof Array', arguments)) {
        int argumentCount = JS('int', '#.length', arguments);
        switch (argumentCount) {
          case 0:
            return _wrapToDart(JS('', 'new #()', ctor));
  
          case 1:
            var arg0 = _convertToJS(JS('', '#[0]', arguments));
            return _wrapToDart(JS('', 'new #(#)', ctor, arg0));
  
          case 2:
            var arg0 = _convertToJS(JS('', '#[0]', arguments));
            var arg1 = _convertToJS(JS('', '#[1]', arguments));
            return _wrapToDart(JS('', 'new #(#, #)', ctor, arg0, arg1));
  
          case 3:
            var arg0 = _convertToJS(JS('', '#[0]', arguments));
            var arg1 = _convertToJS(JS('', '#[1]', arguments));
            var arg2 = _convertToJS(JS('', '#[2]', arguments));
            return _wrapToDart(JS('', 'new #(#, #, #)', ctor, arg0, arg1, arg2));
  
          case 4:
            var arg0 = _convertToJS(JS('', '#[0]', arguments));
            var arg1 = _convertToJS(JS('', '#[1]', arguments));
            var arg2 = _convertToJS(JS('', '#[2]', arguments));
            var arg3 = _convertToJS(JS('', '#[3]', arguments));
            return _wrapToDart(
                JS('', 'new #(#, #, #, #)', ctor, arg0, arg1, arg2, arg3));
        }
      }
  
  
negative.code:       o, _DART_OBJECT_PROPERTY_NAME, (o) => JsObject._fromJs(o));
  }
  
  Object _getDartProxy(o, String propertyName, JsObject createProxy(o)) {
    var dartProxy = _getOwnProperty(o, propertyName);
    // Temporary fix for dartbug.com/15193
    // In some cases it's possible to see a JavaScript object that
    // came from a different context and was previously proxied to
  