// vars can be a "degenerate set" (e.g. made with predicateToSet) static ItIt arbitraryVarsFlexFindIC_iterator(Set vars, S pat, S input) { new LS usedVars; S starsPat = arbitraryVarsToStars(pat, vars, usedVars); ret mapI(flexFindIC_iterator(starsPat, input), m -> matchesToMapUsingVarList_ciMap(m, usedVars)); }