Frequently one runs into a need to create deep copies from Thrift data objects. Since the framework does not really offer support for such a function, it seems helpful to have the Thrift Comnpiler generate the code necessary to support this.
- Microsoft explicitly discourages developeres to use ICloneable for this as there is no reliable definition whether ICloneable creates shallow or deep copies, so we don't use it either.
- Although there is no officially set standard, most common naming convention seems to be DeepCopy() for such a method, so we follow that model but leave room for future changes (i.e. different naming)