code: func uglyDeepCopy(v interface{}) (interface{}, error) {
  	// marshal
  	ugly := &uglyWrapper{Field: v}
  	b, err := json.Marshal(ugly)
  	if err != nil {
  		return nil, err
  	}
  
  	// demarshal
  	var ugly2 *uglyWrapper
  	err = json.Unmarshal(b, &ugly2)
  	if err != nil {
  		return nil, err
  	}
  
  	return ugly2.Field, nil
  }
docs: // uglyDeepCopy is a truly ugly and hacky way to ensure a deep copy is done on
  // an object, but it is what is necessary to ensure that the source object is
  // fully cloned so that it can be assigned to the destination and ensure futher
  // changes within the destination do not use a shared pointer and alter the
  // source. This method of wrapping it in JSON has side effects around integer
  // handling in Go and limits object types, such has maps with only string
  // keys. However, Go has no true deep copy functionality built in or currently
  // available via third party packages that work or are up to date.