sclass DependentCache extends Cache { O f, lastValue; *() {} *(O *maker, O *f) {} A get() { lock lock; O value = callF(f); if (value != lastValue) { clear(); value = lastValue; } ret super.get(); } }