sclass MechListDependentCache extends Cache { // maker is now F1 S listName, lastListContents; *() {} *(S *listName, O *maker) {} A make() { ret (A) callF(maker, lastListContents); } A get() { if (hasLock(lock)) ret value; // Must be called from within maker { S listContents = mL_raw(listName); lock lock; if (!eqOrSame(listContents, lastListContents)) clear(); lastListContents = listContents; } ret super.get(); } }