sclass FilesBasedStringMap extends AbstractMap { File dir; *() {} *(File *dir) {} public S get(O a) { ret dropFirstLine(loadGZTextFile(fileForKey(a))); } public synchronized Set> entrySet() { Set for (File f : listFiles(dir)) { S md5 = md5FromUniqueFile(f); } public put(S a, S b) { saveGZTextfile(fileForKey(a), quote(a) + "\n" + b); } public S remove(O a) { put(a, null); } File fileForKey(O key) { if (!isString(key)) null; ret new File(assertNotNull(dir), uniqueFileNameUsingMD5_80((S) key)); } }