code: func (c *Converter) RegisterConversionFunc(conversionFunc interface{}) error {
  	fv := reflect.ValueOf(conversionFunc)
  	ft := fv.Type()
  	if err := verifyConversionFunctionSignature(ft); err != nil {
  		return err
  	}
  	c.conversionFuncs[typePair{ft.In(0).Elem(), ft.In(1).Elem()}] = fv
  	return nil
  }
docs: // RegisterConversionFunc registers a conversion func with the
  // Converter. conversionFunc must take three parameters: a pointer to the input
  // type, a pointer to the output type, and a conversion.Scope (which should be
  // used if recursive conversion calls are desired).  It must return an error.
  //
  // Example:
  // c.RegisterConversionFunc(
  //         func(in *Pod, out *v1.Pod, s Scope) error {
  //                 // conversion logic...
  //                 return nil
  //          })