code: func (r *RawConfig) Copy() *RawConfig {
  	if r == nil {
  		return nil
  	}
  
  	r.lock.Lock()
  	defer r.lock.Unlock()
  
  	if r.Body != nil {
  		return NewRawConfigHCL2(r.Body)
  	}
  
  	newRaw := make(map[string]interface{})
  	for k, v := range r.Raw {
  		newRaw[k] = v
  	}
  
  	result, err := NewRawConfig(newRaw)
  	if err != nil {
  		panic("copy failed: " + err.Error())
  	}
  
  	result.Key = r.Key
  	return result
  }
docs: // Copy returns a copy of this RawConfig, uninterpolated.