I've got a very complex object (1000+ properties, and the properties are occasionally changed by another team.) and I am writing code to undo changes if the user desires. (I'm implementing ...