code: func NewConverter() *Converter {
  	c := &Converter{
  		conversionFuncs:          map[typePair]reflect.Value{},
  		generatedConversionFuncs: map[typePair]reflect.Value{},
  		defaultingFuncs:          map[reflect.Type]reflect.Value{},
  		defaultingInterfaces:     map[reflect.Type]interface{}{},
  		nameFunc:                 func(t reflect.Type) string { return t.Name() },
  		structFieldDests:         map[typeNamePair][]typeNamePair{},
  		structFieldSources:       map[typeNamePair][]typeNamePair{},
  
  		inputFieldMappingFuncs: map[reflect.Type]FieldMappingFunc{},
  		inputDefaultFlags:      map[reflect.Type]FieldMatchingFlags{},
  	}
  	c.RegisterConversionFunc(ByteSliceCopy)
  	return c
  }
docs: // NewConverter creates a new Converter object.