sS ai_verbalizeAnalysisMap(Map> map) { if (map == null) null; if (empty(map)) ret "Map empty"; if (l(map) == 1) ret "Only a single feature value (" + firstKey(map) + ")"; bool disjoint = allSetsDisjoint(values(map)); if (allSetsAreSingletons(values(map))) ret "Feature success! " + sfu(mapValues(f first, map)); new Map singletons; for (O key, Set value : map) { if (l(value) == 1) singletons.put(key, first(value)); } if (nempty(singletons)) ret "Clear feature values: " + sfu(singletons); if (disjoint) ret "No feature overlap"; ret "Feature results inconclusive"; }