code: func (v DynamicValue) Decode(ty cty.Type) (cty.Value, error) {
  	if v == nil {
  		return cty.NilVal, nil
  	}
  
  	return ctymsgpack.Unmarshal([]byte(v), ty)
  }
docs: // Decode retrieves the effective value from the receiever by interpreting the
  // serialized form against the given type constraint. For correct results,
  // the type constraint must match (or be consistent with) the one that was
  // used to create the receiver.
  //
  // A nil DynamicValue decodes to cty.NilVal, which is not a valid value and
  // instead represents the absense of a value.