public IVersionedLinkedListNode <T> GetNext(ulong version, IVersionedLinkedListNode <T> currentNode)
        {
            VersionedLinkedListNode node = (VersionedLinkedListNode)currentNode;

            node = node.Next;
            return(ScanListLookingForNextNodeMatchingVersion(version, node));
        }
        public void MarkForRemove(IVersionedLinkedListNode <T> nodeToRemove)
        {
            VersionedLinkedListNode node = (VersionedLinkedListNode)nodeToRemove;

            if (_recursionCount == 0)
            {
                Remove(node);
            }
            else
            {
                node.MarkForDelete();
                _toBeRemoved.Push(node);
            }
        }