anchor.diff:        entries.add(new NameValuePair(
             name: entries.length.toString(), value: entryWrapper));
       });
  +    addInstanceMembers(object, entries);
       addMetadataChildren(object, entries);
       return entries.toList();
  +  }
  +
  +  // We've formatted as a Map, but we may want to see the internals
  +  // of the Map, particularly for domain objects that implement Map.
  +  // Add an ObjectFormatter view underneath.
  +  void addInstanceMembers(object, Set<NameValuePair> ret) {
  +    ret.add(new NameValuePair(
  +        name: "[[instance members]]",
  +        value: object,
  +        config: JsonMLConfig.asObject));
     }
   }
   
  
positive.code:     var type = dart.getType(object);
      var ret = new LinkedHashSet<NameValuePair>();
      // We use a Set rather than a List to avoid duplicates.
      var properties = new Set<NameValuePair>();
      addPropertiesFromSignature(dart.getFields(type), properties, object, true);
      addPropertiesFromSignature(dart.getGetters(type), properties, object, true);
      ret.addAll(sortProperties(properties));
      addMetadataChildren(object, ret);
      return ret.toList();
    }
  }
  
  
negative.code:   static const skipDart = const JsonMLConfig("skipDart");
    static const keyToString = const JsonMLConfig("keyToString");
    static const asClass = const JsonMLConfig("asClass");
    static const asObject = const JsonMLConfig("asObject");
    toString() => "JsonMLConfig($name)";
  }
  
  int _maxSpanLength = 100;
  