anchor.diff:          newMap[k] = convertToJs(v);
         });
         _jsMapExpando[dartValue] = newMap;
  -      addDartInstance(newMap, dartValue);
  +      setDartInstance(newMap, dartValue);
       }
     } else if (dartValue is Map) {
       var newMap = new JsObject(_Object);
       dartValue.forEach((k, v) {
         newMap[k] = convertToJs(v);
       });
  -    addDartInstance(newMap, dartValue);
  +    setDartInstance(newMap, dartValue);
       return newMap;
     } else if (dartValue is DateTime) {
       return new JsObject(_Date, [dartValue.millisecondsSinceEpoch]);
  
positive.code: }
  
  /// Adds a reference to the original dart instance to a js proxy object.
  void addDartInstance(JsObject jsObject, dartInstance) {
    assert(jsObject['__dartClass__'] == null);
    jsObject['__dartClass__'] = dartInstance;
  }
  
negative.code:     if (dartList != null) return dartList;
      dartList = jsValue.map((item) => convertToDart(item)).toList();
      _jsArrayExpando[dartList] = jsValue;
      setDartInstance(jsValue, dartList);
      return dartList;
    } else if (jsValue is JsFunction) {
      // If we are passed a recognized JS constructor function, return the
  