code: func DecodeHook(f DecodeHookFunc) Option {
  	return func(o *options) {
  		o.DecodeHooks = append(o.DecodeHooks, f)
  	}
  }
docs: // DecodeHook registers a hook to be called before a value is decoded by the
  // system.
  //
  // This hook will be called with information about the target type and the
  // source data that will fill it.
  //
  // Multiple decode hooks may be specified by providing this option multiple
  // times. Hooks are exected in-order, feeding values from one hook to the
  // next.