safe iterator doesn't provide ==. so we compare the data pointers ourself
removed obsolete returns
path doesn't have settings
override base add
copy the edge before removing it
use the global document for loading