/// <summary> /// Return an automata-based enum for matching up to <paramref name="editDistance"/> from /// <paramref name="lastTerm"/>, if possible /// </summary> protected virtual TermsEnum GetAutomatonEnum(int editDistance, BytesRef lastTerm) { IList <CompiledAutomaton> runAutomata = InitAutomata(editDistance); if (editDistance < runAutomata.Count) { //if (BlockTreeTermsWriter.DEBUG) System.out.println("FuzzyTE.getAEnum: ed=" + editDistance + " lastTerm=" + (lastTerm==null ? "null" : lastTerm.utf8ToString())); CompiledAutomaton compiled = runAutomata[editDistance]; return(new AutomatonFuzzyTermsEnum(this, m_terms.Intersect(compiled, lastTerm == null ? null : compiled.Floor(lastTerm, new BytesRef())), runAutomata.SubList(0, editDistance + 1).ToArray(/*new CompiledAutomaton[editDistance + 1]*/))); } else { return(null); } }