private void ProcessNode(Node node) { for (int i = _processedNodes; i < _nodes.Count; i++) { if (_nodes[i] != node) { continue; } bool isChanged = false; while (i > _processedNodes) { // This only happens if we weren't in topo order if (Debugger.IsAttached) { Debugger.Break(); } _nodes.Swap(i - 1, i); i--; isChanged = true; } // Signal that these rows have changed if (isChanged) { Updated?.Invoke(); } _processedNodes++; break; } }