anchor.diff:      return dest;
     }
   
  -  ///noSuchMethod() is where the magic happens.
  -  ///If we try to access a property using dot notation (eg: o.wibble ), then
  -  ///noSuchMethod will be invoked, and identify the getter or setter name.
  -  ///It then looks up in the map contained in _objectData (represented using
  -  ///this (as this class implements [Map], and forwards it's calls to that
  -  ///class.
  -  ///If it finds the getter or setter then it either updates the value, or
  -  ///replaces the value.
  -  ///
  -  ///If isExtendable = true, then it will allow the property access
  -  ///even if the property doesn't yet exist.
  +  /** noSuchMethod() is where the magic happens.
  +   * If we try to access a property using dot notation (eg: o.wibble ), then
  +   * noSuchMethod will be invoked, and identify the getter or setter name.
  +   * It then looks up in the map contained in _objectData (represented using
  +   * this (as this class implements [Map], and forwards it's calls to that
  +   * class.
  +   * If it finds the getter or setter then it either updates the value, or
  +   * replaces the value.
  +   * 
  +   * If isExtendable = true, then it will allow the property access
  +   * even if the property doesn't yet exist.
  +   */
     noSuchMethod(InvocationMirror mirror) {
       int positionalArgs = 0;
       if (mirror.positionalArguments != null) positionalArgs = mirror.positionalArguments.length;
  
positive.code: 
    }
  
    ///An alternate constructor, allows creating directly from a map
    ///rather than a json string.
    JsonObject.fromMap(Map map) {
      _jsonString = JSON.stringify(map);
      _objectData = map;
  
negative.code:     }
    }
  
    /** If [isExtendable] is true, or the key already exists,
     * then allow the removal.
     * Throw [JsonObjectException] if we're not allowed to remove a
     * key
     */
    remove(key) {
      if (this.isExtendable == true || this.containsKey(key)) {
        return _objectData.remove(key);
  