anchor.diff:  }
   
   Type _dartType(JsFunction jsValue) {
  -  if (jsValue == context['String']) {
  +  if (jsValue == _String) {
       return String;
  -  } else if (jsValue == context['Number']) {
  +  } else if (jsValue == _Number) {
       return num;
  -  } else if (jsValue == context['Boolean']) {
  +  } else if (jsValue == _Boolean) {
       return bool;
  -  } else if (jsValue == context['Array']) {
  +  } else if (jsValue == _Array) {
       return List;
  -  } else if (jsValue == context['Date']) {
  +  } else if (jsValue == _Date) {
       return DateTime;
  -  } else if (jsValue == context['Object']) {
  +  } else if (jsValue == _Object) {
       return Map;
     }
     // Unknown type
  
positive.code: 
  /// Adds a reference to the original dart instance to a js proxy object.
  void addDartInstance(JsObject jsObject, dartInstance) {
    var details = new JsObject.jsify(
        {'configurable': false, 'enumerable': false, 'writeable': false,});
    // Don't want to jsify the instance, if its a map that will make turn it into
    // a JsObject.
    details['value'] = dartInstance;
    context['Object'].callMethod(
        'defineProperty', [jsObject, '__dartClass__', details]);
  }
  
  /// Gets a reference to the original dart instance from a js proxy object.
  dynamic getDartInstance(JsObject jsObject) => jsObject['__dartClass__'];
  
negative.code:     if (dartClass != null) return dartClass;
  
      var constructor = jsValue['constructor'];
      if (constructor == _Date) {
        return new DateTime.fromMillisecondsSinceEpoch(
            jsValue.callMethod('getTime'));
      } else if (constructor == _Object) {
        var dartMap = {};
        var keys = _Object.callMethod('keys', [jsValue]);
        for (var key in keys) {
          dartMap[key] = dartValue(jsValue[key]);
        }
  