code: func (c *ResourceConfig) DeepCopy() *ResourceConfig {
  	// DeepCopying a nil should return a nil to avoid panics
  	if c == nil {
  		return nil
  	}
  
  	// Copy, this will copy all the exported attributes
  	copy, err := copystructure.Config{Lock: true}.Copy(c)
  	if err != nil {
  		panic(err)
  	}
  
  	// Force the type
  	result := copy.(*ResourceConfig)
  
  	// For the raw configuration, we can just use its own copy method
  	result.raw = c.raw.Copy()
  
  	return result
  }
docs: // DeepCopy performs a deep copy of the configuration. This makes it safe
  // to modify any of the structures that are part of the resource config without
  // affecting the original configuration.