anchor.diff:    }
   }
   
  -class JsonToObject extends Converter {
  +class JsonToObject extends ConverterBase<Json, Object> {
     JsonToObject() : super(new TypeReflection(Json), new TypeReflection(Object));
   
  -  convert(Json json, TypeReflection targetReflection) {
  +  convertTo(Json json, TypeReflection targetReflection) {
       var decoded = JSON.decode(json.toString());
       return _convert(decoded, targetReflection);
     }
  
positive.code: }
  
  installJsonConverters() {
    Converter.converters.add(new ObjectToJson());
    Converter.converters.add(new JsonToObject());
  }
  
  class ObjectToJson extends Converter {
    ObjectToJson() : super(new TypeReflection(Object), new TypeReflection(Json));
  
    convert(object, TypeReflection targetReflection) {
      var simplified = _convert(object);
      return new Json(JSON.encode(simplified));
    }
  
negative.code:   }
  
    toReflection(TypeReflection targetReflection) {
      Converter converter = Converters.find(source, targetReflection);
      if(converter is ConverterBase) {
        return converter.convertTo(object, targetReflection);
      }
      return converter.convert(object);
    }
  }
  
  class Converters {
    static List<Converter> converters = [];
  
    static Converter register(Type source, Type target, Transformation conversion) {
      Converter converter = new ConverterBase(new TypeReflection(source), new TypeReflection(target), conversion);
      converters.add(converter);
      return converter;
    }
  
    static Converter add(Converter converter) {
      converters.add(converter);
      return converter;
    }
  