public override void Clear()
        {
            if (Count == 0)
            {
                return;
            }

            _traversalActions.SetActions(postAction: n =>
            {
                n.Dispose();
                return(true);
            });

            // Start Dispose from the last node (postAction)
            _consolidateRoots.Sift(_traversalActions);

            foreach (var root in GetRoots())
            {
                root.Sift(_traversalActions);
            }

            _roots.Clear();
            _minNode          = null;
            _consolidateRoots = null;
            Count             = 0;
        }