private void DoLayout(IDiagram diagram) { var nodes = diagram.Nodes.Where(i => !i.HasParent).ToArray(); var connectors = nodes.SelectMany(i => diagram.GetConnectorsByNode(i.Id)).Distinct(); var oldRects = GetRects(nodes); var newRects = _layoutAlgorithm.Calculate(nodes, connectors); var changedRects = GetChanges(oldRects, newRects); Debug.WriteLine($"ChangedRects.Count={changedRects.Count}"); ApplyChanges(changedRects, diagram); }