public void Reverse()
        {
            var last = Last;

            for (var node = First; node != null; node = node.Prev)
            {
                var temp = node.Next;
                node.Next = node.Prev;
                node.Prev = temp;
            }

            Last  = First;
            First = last;
        }
        public void AddLast(T value)
        {
            var node = new DoubleLinkedNode <T>
            {
                Value = value,
                Prev  = Last
            };

            if (First == null)
            {
                First = node;
            }
            else
            {
                Last.Next = node;
            }

            Last = node;
        }
        public void AddFirst(T value)
        {
            var node = new DoubleLinkedNode <T>
            {
                Value = value,
                Next  = First
            };

            if (First == null)
            {
                Last = node;
            }
            else
            {
                First.Prev = node;
            }

            First = node;
        }