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); }