Replacing a child should create just one record, which has
the old child in the removedNodes, and new node in the addedNodes.
Currently the spec creates separate records.
This can't be done in general
Or maybe I'm wrong :)
I think I fixed this. Review welcome.
Looks good to me, thanks! Just one nit: step 12 of "replace" says "Insert ... with the suppress observers flag." instead of "...with the suppress observers flag set." Seems like that should be consistent throughout this section.