public void AddOrUpdateLine(DataLine dataLine, int stamp)
        {
            try
            {
                Node source = modelDatabase.GetNode(dataLine.Source);

                if (!TryGetTarget(dataLine, out Node target))
                {
                    return;
                }

                if (TryGetLine(source, target, out Line line))
                {
                    // Already added link
                    line.Stamp = stamp;

                    if (dataLine.Points == null)
                    {
                        if (modelDatabase.TryGetSavedLine(source.Name, target.Name, out DataLine savedLine))
                        {
                            line.View.Points.InsertRange(1, savedLine.Points);
                        }
                    }

                    return;
                }

                AddLine(source, target, dataLine.LinkCount, dataLine.Points);
            }
            catch (Exception e)
            {
                Log.Exception(e, $"Failed to update link {dataLine}");
                throw;
            }
        }
        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;
            }
        }