This makes the asymptotic runtime worse, but we don't care so much right now given the anticipated sizes of our graphs.
This is important for the "upgrade all" algorithm. We want to attempt upgrades in the same order every time, especially when the user restarts an "upgrade all" operation partway through after resolving a merge conflict.
This makes the asymptotic runtime worse, but we don't care so much right now given the anticipated sizes of our graphs.
This is important for the "upgrade all" algorithm. We want to attempt upgrades in the same order every time, especially when the user restarts an "upgrade all" operation partway through after resolving a merge conflict.