Sorry for the delay, I've been very busy for the last two weeks. Attached is the latest version of the patch.
The snapshot update code is still the same, I have no good idea what, if anything, should be done to it. In addition to that, I decided to keep the code in ExecutePlan() as it was in the last patch. I tried to make the comments a bit more clear to avoid confusion.