anchor.diff:      if (newList == null) {
         newList = new JsArray.from(dartValue.map((item) => convertToJs(item)));
         _jsArrayExpando[dartValue] = newList;
  -      addDartInstance(newList, dartValue);
  +      setDartInstance(newList, dartValue);
       }
       return newList;
     } else if (dartValue is Map) {
  
positive.code:         newMap[k] = convertToJs(v);
        });
        _jsMapExpando[dartValue] = newMap;
        addDartInstance(newMap, dartValue);
      }
    } else if (dartValue is Map) {
      var newMap = new JsObject(_Object);
      dartValue.forEach((k, v) {
        newMap[k] = convertToJs(v);
      });
      addDartInstance(newMap, dartValue);
      return newMap;
    } else if (dartValue is DateTime) {
      return new JsObject(_Date, [dartValue.millisecondsSinceEpoch]);
  
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
  