code: func (b *Block) EmptyValue() cty.Value {
  	vals := make(map[string]cty.Value)
  	for name, attrS := range b.Attributes {
  		vals[name] = attrS.EmptyValue()
  	}
  	for name, blockS := range b.BlockTypes {
  		vals[name] = blockS.EmptyValue()
  	}
  	return cty.ObjectVal(vals)
  }
docs: // EmptyValue returns the "empty value" for the recieving block, which for
  // a block type is a non-null object where all of the attribute values are
  // the empty values of the block's attributes and nested block types.
  //
  // In other words, it returns the value that would be returned if an empty
  // block were decoded against the recieving schema, assuming that no required
  // attribute or block constraints were honored.