public ToTokenEnumerator(INodeEnumerator ne, bool deep, bool applyMove)
        {
            this.ne = ne;
            if (deep && ne.Index > ne.TokenCount)
            {
                e1   = (ExNode.Enumerator)ne;
                save =
                    applyMove
                    ? -1
                    : e1.index;
            }

            stack = new Stack <INodeEnumerator>();
        }
        public void Dispose()
        {
            if (stack != null)
            {
                while (stack.Count > 0)
                {
                    stack.Pop().Dispose();
                }

                stack = null;

                ne = null;
                e1 = null;

                current = null;

                save = 0;
            }
            GC.SuppressFinalize(this);
        }