The big picture is even simpler:
We found a single place to put a Snapshot() call and a single place to put a Restore().
We implemented a Snapshot() method that pushes a copy of the editor onto a stack and a Restore() method that pops it back off the stack.
There was a little fumbling around with the installation, but no major refactoring was required. We didnt need to make changes all over the implementation. All the problems we encountered were typical of working with reasonably well-designed objects, not of working in a system that wasnt ready to receive the changes we needed to make. Frankly, it went quite well.