public void AddNode(Node node, Node parentNode)
        {
            if (node.Bounds == RectEx.Zero)
            {
                if (modelService.TryGetSavedNode(node.Name, out DataNode savedNode))
                {
                    node.Bounds       = savedNode.Bounds;
                    node.ScaleFactor  = savedNode.Scale;
                    node.IsNodeHidden = savedNode.ShowState == Node.Hidden;
                }
            }

            modelService.Add(node);
            parentNode.AddChild(node);

            CreateNodeViewModel(node);

            AddNodeToParentCanvas(node, parentNode);

            if (modelService.TryGetQueuedLinesAndLinks(
                    node.Name,
                    out IReadOnlyList <DataLine> lines,
                    out IReadOnlyList <DataLink> links))
            {
                lines.ForEach(line => modelLineService.Value.AddOrUpdateLine(line, node.Stamp));
                links.ForEach(link => modelLinkService.Value.AddOrUpdateLink(link, node.Stamp));
                modelService.RemovedQueuedNode(node.Name);
            }
        }