public IntersectExprEnumerator Init(IntersectExprEnumerable <T> parent, IPoolingEnumerator <T> src, IEqualityComparer <T> comparer)
            {
                _src              = src;
                _parent           = parent;
                _alreadyDoneItems = Pool <PoolingDictionary <T, int> > .Get().Init(0, comparer);

                return(this);
            }
            public void Dispose()
            {
                _src?.Dispose();
                _src = null;

                _alreadyDoneItems?.Dispose();
                Pool <PoolingDictionary <T, int> > .Return(_alreadyDoneItems);

                _alreadyDoneItems = default;

                _parent?.Dispose();
                _parent = default;

                Pool <IntersectExprEnumerator> .Return(this);
            }