The problem is, are you really going to remember that every time you change something on `node`?  There are other values in `node` (not just edgemap) that could be changed.  Why have a getNode() at all if you can't actually use the `Node` that gets returned without special casing whether or not it's saved?

Seems like it's better to use the getter/setters and keep track of what's been accessed/changed that way.