Having refactored so that edge derivation doesn't happen until all the node processing is over, I moved on to adding dummy nodes, somehow thinking once again that it would be as easy as the book said it would be.
It wasn't the worst, but I also couldn't do it in an hour and a half. Certainly, it was not breezy. The main thing I need to work out next is positioning the dummy nodes horizontally in some relation to the nodes they're connecting but without colliding with any existing nodes. Putting them in a new space makes the graph really wide.
Because the neighbor median x-positioning step goes after this, I thought maybe it would straighten things out, but now that I think about it, all these far flung dummy nodes kind of sabotage that step.