public void AddAfter(CircularLinkedListNode <T> node, CircularLinkedListNode <T> newNode)
 {
     VerifyReferencedNode(node);
     VerifyBlankNode(newNode);
     newNode.InsertBetween(node, node.forward, this);
     count++;
     version++;
 }
        public void AddBefore(CircularLinkedListNode <T> node, CircularLinkedListNode <T> newNode)
        {
            VerifyReferencedNode(node);
            VerifyBlankNode(newNode);
            newNode.InsertBetween(node.back, node, this);
            count++;
            version++;

            if (node == first)
            {
                first = newNode;
            }
        }
 public void AddLast(CircularLinkedListNode <T> node)
 {
     VerifyBlankNode(node);
     if (first == null)
     {
         node.SelfReference(this);
         first = node;
     }
     else
     {
         node.InsertBetween(first.back, first, this);
     }
     count++;
     version++;
 }