code: func Reference(x interface{}) *interface{} {
  	var y interface{}
  	rv := reflect.ValueOf(x)
  	if rv.Kind() == reflect.Ptr {
  		return Reference(rv.Elem().Interface())
  	}
  	if rv.Kind() != reflect.Invalid {
  		y = rv.Interface()
  		return &y
  	}
  	return &x
  }
docs: // Reference returns a pointer to its argument unless the argument already is
  // a pointer. If the argument is **t, or ***t, etc, it will return *t.
  //
  // Used for preparing Go types (including pointers to structs) into values to be
  // put through util.RoundTrip().