deleteEdgeFromNodes :: Edge -> StGNG a ()
deleteEdgeFromNodes edge = do
    ns <- State.gets (^.nodes)
    forM_ (map (^.nodeId) $ getAll ns [edge^.left, edge^.right])
        $ modifyNode (&edgeIds %~ filter (/= edge^.edgeId))
deleteEdgeFromNodes :: Edge -> StGNG a ()
deleteEdgeFromNodes edge = do
    ns <- State.gets (^.nodes)
    forM_ (map (^.nodeId) $ getAll ns [edge^.left, edge^.right])
        $ modifyNode (&edgeIds %~ filter (/= edge^.edgeId))
deleteEdgeFromNodes edge = do
    ns <- State.gets (^.nodes)
    forM_ (map (^.nodeId) $ getAll ns [edge^.left, edge^.right])
        $ modifyNode (&edgeIds %~ filter (/= edge^.edgeId))