sclass WordIndex { S regexp = "\\w+"; MultiMap index = ciMultiMap(); void add(A a, S text) { Set words = extractWords(text); for (S word : words) index.add(word, a); } Set extractWords(S text) { ret asCISet(regexpExtractAll(regexp, text)); } L get(S word) { ret index.get(word); } void remove(A a, S text) { Set words = extractWords(text); for (S word : words) index.remove(word, a); } }