code: func Transform(source interface{}, target interface{}, additionalTransformers ...Transformer) error {
  	data := mapstructure.Metadata{}
  	config := &mapstructure.DecoderConfig{
  		DecodeHook: mapstructure.ComposeDecodeHookFunc(
  			createTransformHook(additionalTransformers...),
  			mapstructure.StringToTimeDurationHookFunc()),
  		Result:   target,
  		Metadata: &data,
  	}
  	decoder, err := mapstructure.NewDecoder(config)
  	if err != nil {
  		return err
  	}
  	return decoder.Decode(source)
  }
docs: // Transform converts the source into the target struct with compose types transformer
  // and the specified transformers if any.