public bool MoveNext()
    {
        if (myBFS.Count == 0)
        {
            return(false);
        }
        Current = null;
        if (myCurrentNodes != null)
        {
            lastCount++;
            if (myCurrentNodes.Count > lastCount)
            {
                Current = myCurrentNodes[lastCount];
            }
        }
        while (myBFS.Count != 0 && Current == null)
        {
            ITrieNode <ArrayType, Item> Out = myBFS.Dequeue();
            if (Out.HasTerminalNodes())
            {
                myCurrentNodes = Out.GetTerminalItems();
                lastCount      = 0;
                Current        = myCurrentNodes[lastCount];
            }
            foreach (var A in Out.Children)
            {
                myBFS.Enqueue(A);
            }
        }

        return(Current != null);
    }