sclass LazyValueTreeMap extends TreeMap {
static B placeholder = cast new O; // fool type system
O valueMaker;
*(Collection keys, O *valueMaker) {
for (A key : unnull(keys)) put(key, placeholder);
}
public B get(O key) {
B value = super.get(key);
if (value == placeholder)
put(key, value = callF(valueMaker, key));
ret value;
}
}