code: func (c *Converter) RegisterDefaultingFunc(defaultingFunc interface{}) error {
  	fv := reflect.ValueOf(defaultingFunc)
  	ft := fv.Type()
  	if ft.Kind() != reflect.Func {
  		return fmt.Errorf("expected func, got: %v", ft)
  	}
  	if ft.NumIn() != 1 {
  		return fmt.Errorf("expected one 'in' param, got: %v", ft)
  	}
  	if ft.NumOut() != 0 {
  		return fmt.Errorf("expected zero 'out' params, got: %v", ft)
  	}
  	if ft.In(0).Kind() != reflect.Ptr {
  		return fmt.Errorf("expected pointer arg for 'in' param 0, got: %v", ft)
  	}
  	inType := ft.In(0).Elem()
  	c.defaultingFuncs[inType] = fv
  	c.defaultingInterfaces[inType] = defaultingFunc
  	return nil
  }
docs: // RegisterDefaultingFunc registers a value-defaulting func with the Converter.
  // defaultingFunc must take one parameters: a pointer to the input type.
  //
  // Example:
  // c.RegisteDefaultingFunc(
  //         func(in *v1.Pod) {
  //                 // defaulting logic...
  //          })