createEdgeNPairUnsafe :: Label -> Node -> Node -> GS (Edge, Edge, Node, Node)
createEdgeNPairUnsafe l sn en = do (e1, sn1, en1) <- createEdgeNUnsafe l sn en
                                   (e2, en2, sn2) <- createEdgeNUnsafe l en1 sn1
                                   return (e1, e2, sn2, en2)
createEdgeNPairUnsafe :: Label -> Node -> Node -> GS (Edge, Edge, Node, Node)
createEdgeNPairUnsafe l sn en = do (e1, sn1, en1) <- createEdgeNUnsafe l sn en
                                   (e2, en2, sn2) <- createEdgeNUnsafe l en1 sn1
                                   return (e1, e2, sn2, en2)
createEdgeNPairUnsafe l sn en = do (e1, sn1, en1) <- createEdgeNUnsafe l sn en
                                   (e2, en2, sn2) <- createEdgeNUnsafe l en1 sn1
                                   return (e1, e2, sn2, en2)