// name -> (name, parsed map) static Map> mechMapCI_cache = synchroMap(); please include function parseDoubleLeftArrowMapCI_tlft. static SS mechMapCI(S listName) { Pair p = mechMapCI_cache.get(listName); S text = mechList_raw(listName); if (p != null && eq(p.a, text)) ret p.b; S parsing = first(mechList_opt(listName + " | Parsing")); SS map; if (parsing == null) map = parseDoubleArrowMapCI(tlft(text)); else ifdef FancyMechParsing map = asCIMap((SS) callAndMake(parsing, text)); endifdef ifndef FancyMechParsing map = asCIMap((SS) callMC(parsing, text)); endifndef p = pair(text, map); mechMapCI_cache.put(listName, p); ret p.b; }