private void GenerateNewNodeIds(SGraph graph) { foreach (var node in graph.Nodes) { var newNodeId = Guid.NewGuid().ToString(); var fromConnections = graph.Connections.Where(connection => connection.FromNodeId == node.Id).ToArray(); var toConnections = graph.Connections.Where(connection => connection.ToNodeId == node.Id).ToArray(); node.Id = newNodeId; foreach (var fromConnection in fromConnections) { fromConnection.FromNodeId = newNodeId; } foreach (var toConnection in toConnections) { toConnection.ToNodeId = newNodeId; } foreach (var port in node.Ports) { port.NodeId = newNodeId; port.Connections.Clear(); port.Connections.AddRange(graph.GetConnections(port)); } } }