code: func hcl2InterpolationFuncs() map[string]function.Function {
  	hcl2Funcs := map[string]function.Function{}
  
  	for name, hilFunc := range Funcs() {
  		hcl2Funcs[name] = hcl2InterpolationFuncShim(hilFunc)
  	}
  
  	// Some functions in the old world are dealt with inside langEvalConfig
  	// due to their legacy reliance on direct access to the symbol table.
  	// Since 0.7 they don't actually need it anymore and just ignore it,
  	// so we're cheating a bit here and exploiting that detail by passing nil.
  	hcl2Funcs["lookup"] = hcl2InterpolationFuncShim(interpolationFuncLookup(nil))
  	hcl2Funcs["keys"] = hcl2InterpolationFuncShim(interpolationFuncKeys(nil))
  	hcl2Funcs["values"] = hcl2InterpolationFuncShim(interpolationFuncValues(nil))
  
  	// As a bonus, we'll provide the JSON-handling functions from the cty
  	// function library since its "jsonencode" is more complete (doesn't force
  	// weird type conversions) and HIL's type system can't represent
  	// "jsondecode" at all. The result of jsondecode will eventually be forced
  	// to conform to the HIL type system on exit into the rest of Terraform due
  	// to our shimming right now, but it should be usable for decoding _within_
  	// an expression.
  	hcl2Funcs["jsonencode"] = stdlib.JSONEncodeFunc
  	hcl2Funcs["jsondecode"] = stdlib.JSONDecodeFunc
  
  	return hcl2Funcs
  }
docs: // ---------------------------------------------------------------------------
  // This file contains some helper functions that are used to shim between
  // HCL2 concepts and HCL/HIL concepts, to help us mostly preserve the existing
  // public API that was built around HCL/HIL-oriented approaches.
  // ---------------------------------------------------------------------------