code: func (b *Block) CoerceValue(in cty.Value) (cty.Value, error) {
  	var path cty.Path
  	return b.coerceValue(in, path)
  }
docs: // CoerceValue attempts to force the given value to conform to the type
  // implied by the receiever, while also applying the same validation and
  // transformation rules that would be applied by the decoder specification
  // returned by method DecoderSpec.
  //
  // This is useful in situations where a configuration must be derived from
  // an already-decoded value. It is always better to decode directly from
  // configuration where possible since then source location information is
  // still available to produce diagnostics, but in special situations this
  // function allows a compatible result to be obtained even if the
  // configuration objects are not available.
  //
  // If the given value cannot be converted to conform to the receiving schema
  // then an error is returned describing one of possibly many problems. This
  // error may be a cty.PathError indicating a position within the nested
  // data structure where the problem applies.