code: func tranformInterface(i interface{}) interface{} {
  	switch reflect.TypeOf(i).Kind() {
  	case reflect.Slice:
  		return transformSlice(i.([]interface{}))
  	case reflect.Map:
  		return transformMap(i.(map[interface{}]interface{}))
  	case reflect.String:
  		return interpolateValue(i.(string))
  	default:
  		// Was int, float or some other value that we do not need to do any transform on.
  		return i
  	}
  }
docs: // tranformInterface tries to transform any interface type into proper value with env expansion. It travers maps and
  // slices and the actual interpolation is done on all simple string values in the structure. It returns a copy of any
  // map or slice value instead of modifying them in place.