public override void skipEntriesEqual()
        {
            AbstractTreeIterator ch = CurrentHead;

            for (int i = 0; i < Trees.Length; i++)
            {
                AbstractTreeIterator t = Trees[i];
                if (t.Matches != ch)
                {
                    continue;
                }

                if (t.MatchShift == 0)
                {
                    t.skip();
                }
                else
                {
                    t.back(t.MatchShift);
                    t.MatchShift = 0;
                }

                t.Matches = null;
            }
        }
        public override void popEntriesEqual()
        {
            AbstractTreeIterator ch = CurrentHead;

            for (int i = 0; i < Trees.Length; i++)
            {
                AbstractTreeIterator t = Trees[i];
                if (t.Matches == ch)
                {
                    if (t.MatchShift == 0)
                    {
                        t.next(1);
                    }
                    else
                    {
                        t.back(t.MatchShift);
                        t.MatchShift = 0;
                    }
                    t.Matches = null;
                }
            }
        }