static SS agiBlue_findProbableConcreteSlicesForMetaSlices() { new SS metaToConcrete; // id to id SS idToName = agiBlue_sliceNamesMap(); MultiMap nameToID = reversedMapAsMultiMap(idToName); for (S metaID, metaName : idToName) { S name = dropSuffixICOrNull_trim("[Meta]", metaName); if (name == null) continue; S concrete = agiBlue_concreteSliceOfMetaSlice(metaID); if (nempty(concrete)) continue with print("Found defined concrete slice for meta slice " + metaID + "/" + metaName + ": " + concrete); LS ids = nameToID.get(name); if (empty(ids)) print("Concrete slice for meta slice " + metaID + "/" + metaName + " not found"); else if (l(ids) > 1) print("Multiple possible concrete slices for meta slice " + metaID + "/" + metaName + ": " + ids); else { print("Found concrete slice for meta slice " + metaID + "/" + metaName + ": " + first(ids)); metaToConcrete.put(metaID, first(ids)); } } ret metaToConcrete; }