When a node is first created it is mutable (edges can be created or changed), but it does not own refs on nodes it points to, so the client of my library is responsible for keeping nodes alive through this first stage. When they client is ready they can “finalize” a set of nodes which does the SCC search and guarantees, from then on, that all reachable nodes are always kept alive.