public void AddOrUpdateLink(DataLink dataLink, int stamp)
        {
            try
            {
                Node source = modelService.GetNode(dataLink.Source);

                if (!TryGetTarget(dataLink, out Node target))
                {
                    modelService.QueueNode(new DataNode(dataLink.Target, null, dataLink.TargetType));
                    return;
                }

                target.Stamp = stamp;

                if (TryGetLink(source, target, out Link link))
                {
                    // Already added link
                    link.Stamp = stamp;
                    return;
                }

                link       = AddLink(source, target);
                link.Stamp = stamp;

                if (!dataLink.IsAdded)
                {
                    AddLinkToLines(link);
                }
            }
            catch (Exception e)
            {
                Log.Exception(e, $"Failed to update link {dataLink}");
                throw;
            }
        }
 public void QueueNode(DataNode dataNode) => modelService.QueueNode(dataNode);