code: func getInterpolated(unmarshal func(interface{}) error) (*interpolated, error) {
  	var raw string
  	err := unmarshal(&raw)
  	if err != nil {
  		return &interpolated{}, err
  	}
  	value := interpolateValue(raw)
  	return &interpolated{raw: raw, value: value}, nil
  }
docs: // getInterpolated unmarshals the value as string and runs interpolation on it. It is the responsibility of each
  // value type to convert this string value to appropriate type.