when we want to apply a patch to an object, if we want to preserve the integrity of the original object, we're forced to do a deep clone of it. Is it possible to have another method applyClonePatch that will return the new object and preserve the original ?