code: func wrapPtr(v reflect.Value) reflect.Value {
  	if !v.IsValid() {
  		return v
  	}
  	vPtr := reflect.New(v.Type())
  	vPtr.Elem().Set(v)
  	return vPtr
  }
docs: // wrapPtr is a helper that takes v and always make it *v. copystructure
  // stores things internally as pointers until the last moment before unwrapping