anchor.diff:  
     toReflection(TypeReflection targetReflection) {
       Converter converter = Converters.find(source, targetReflection);
  -    if(converter is ConverterBase) {
  +    if (converter is ConverterBase) {
         return converter.convertTo(object, targetReflection);
       }
       return converter.convert(object);
  
positive.code: }
  
  class Converters {
    static Set<Converter> converters = new Set();
  
    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;
    }
  
    static Converter find(TypeReflection source, TypeReflection target) {
      return converters.firstWhere(
              (c) => c.source.sameOrSuper(source) && c.target.sameOrSuper(target),
          orElse: () => throw new ConverterException('No converter found from ' + source.toString() + ' to ' + target.toString() + '.'));
    }
  }
  
  
negative.code:       return type.fields.values
        .where((field) => !field.has(Transient))
        .map((field) => {
          field.name: _convert(field.value(object))
        })
        .reduce((Map m1, Map m2) {
          m2.addAll(m1);
  