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