// name -> (name, parsed map) static Map<S, Pair<S, MultiMap<S>>> mechMultiMapCI_cache = synchroMap(); static MultiMap<S> mechMultiMapCI(S listName) { Pair<S, MultiMap<S>> p = mechMultiMapCI_cache.get(listName); S text = mechList_opt_raw(listName); if (p != null && eq(p.a, text)) ret p.b; MultiMap<S> map = parseDoubleArrowMultiMapCI(tlft(text)); p = pair(text, map); mechMultiMapCI_cache.put(listName, p); ret p.b; }