!7 sclass Blob { L> items = new L; } static new Map blobs; p { blobs.put("nasty", parseBlob([[something nasty -> You're an asshole]])); printStruct(blobs); assertEqualsVerbose("You're an asshole", blobLookupIC(blobs.get("nasty"), "Something nasty")); print("OK"); } static Blob parseBlob(S s) { new Blob blob; for (S line : toLinesFullTrim(s)) { L l = splitAtSimpleArrow(line); if (l(l) == 2) blob.items.add(mapPair(f trim, listToPair(l))); } ret blob; } static S blobLookupIC(Blob blob, S key) { if (blob != null) for (Pair p : blob.items) if (eqic(p.a, key)) ret p.b; null; }