sclass AutoMap extends AbstractMap {
new HashMap map;
O f;
*() {}
*(O *f) {}
public B get(O a) {
if (map.containsKey(a))
ret map.get(a);
B b = cast callF(f, a);
map.put(a, b);
ret b;
}
// unclear semantics
public bool containsKey(O a) {
ret map.containsKey(a);
}
public Set> entrySet() {
ret map.entrySet();
}
}