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: /// TODO(jakemac): Use expando to cache js arrays that mirror dart lists?
  dynamic jsValue(dartValue) {
    if (dartValue is JsObject) {
      return dartValue;
    } else if (dartValue is JsProxyInterface) {
      return dartValue.jsProxy;
  
negative.code: 
  /// Adds a reference to the original dart instance to a js proxy object.
  void addDartInstance(JsObject jsObject, dartInstance) {
    jsObject['__dartClass__'] = dartInstance;
  }
  
  /// Gets a reference to the original dart instance from a js proxy object.
  dynamic getDartInstance(JsObject jsObject) => jsObject['__dartClass__'];
  
  final _Object = context['Object'];
  final _String = context['String'];
  final _Number = context['Number'];
  final _Boolean = context['Boolean'];
  final _Array = context['Array'];
  final _Date = context['Date'];
  