code: func (c ConversionFuncs) AddUntyped(a, b interface{}, fn ConversionFunc) error {
  	tA, tB := reflect.TypeOf(a), reflect.TypeOf(b)
  	if tA.Kind() != reflect.Ptr {
  		return fmt.Errorf("the type %T must be a pointer to register as an untyped conversion", a)
  	}
  	if tB.Kind() != reflect.Ptr {
  		return fmt.Errorf("the type %T must be a pointer to register as an untyped conversion", b)
  	}
  	c.untyped[typePair{tA, tB}] = fn
  	return nil
  }
docs: // AddUntyped adds the provided conversion function to the lookup table for the types that are
  // supplied as a and b. a and b must be pointers or an error is returned. This method overwrites
  // previously defined functions.