public Node Prepend(T value)
        {
            if (Tail == null && Head == null)
            {
                var newNode = new Node(NextId++, this)
                {
                    Value = value
                };
                ChangedNodes.Add(newNode);

                return(Head = Tail = newNode);
            }

            return(Head = Head.AddBefore(value));
        }