code: func (rcs *ResourceInstanceChangeSrc) DeepCopy() *ResourceInstanceChangeSrc {
  	if rcs == nil {
  		return nil
  	}
  	ret := *rcs
  
  	ret.RequiredReplace = cty.NewPathSet(ret.RequiredReplace.List()...)
  
  	if len(ret.Private) != 0 {
  		private := make([]byte, len(ret.Private))
  		copy(private, ret.Private)
  		ret.Private = private
  	}
  
  	ret.ChangeSrc.Before = ret.ChangeSrc.Before.Copy()
  	ret.ChangeSrc.After = ret.ChangeSrc.After.Copy()
  
  	return &ret
  }
docs: // DeepCopy creates a copy of the receiver where any pointers to nested mutable
  // values are also copied, thus ensuring that future mutations of the receiver
  // will not affect the copy.
  //
  // Some types used within a resource change are immutable by convention even
  // though the Go language allows them to be mutated, such as the types from
  // the addrs package. These are _not_ copied by this method, under the
  // assumption that callers will behave themselves.