/* finds patterns with a single changing token occurring at least twice inputs e.g. (with map splitAtSpaceTok(tlft(...))): kgopkgorkgorkogrkkkbla makes sense heldfdfdkfodkfodfkodlo makes sense but 12345! makes no sense but b1lubb makes no sense will find: * makes sense [2] but * makes no sense [2] */ static MultiSet findOneArgumentPatterns(LLS toks) { MultiSet patterns = ciMultiSet(); MultiMap byLength = indexListsByLength(lambdaMap simpleSpacesAndTrim(toks)); for (LLS toks2 : byLength.values()) { for (int i = 1; i < l(first(toks2))-1; i += 2) { int _i = i; MultiSet set = mapToCIMultiSet(toks2, tok -> join(cloneListReplacingElementAtIndex(tok, _i, "*"))); patterns.addAll(multiSetWithoutSingles(set)); } } ret patterns; }