code: func CopyOf(src interface{}) (dst interface{}) {
  	dsti := reflect.New(reflect.TypeOf(src).Elem())
  	dst = dsti.Interface()
  	rcopy(dsti, reflect.ValueOf(src), true)
  	return
  }
docs: // CopyOf returns a copy of src while also allocating the memory for dst.
  // src must be a pointer type or this operation will fail.