// 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;
}