// doesn't implement all methods yet
sclass ValueOnDemandMap extends AbstractMap {
Set keys;
IF1 makeValue;
*() {}
*(Set *keys, IF1 *makeValue) {}
public B get(O a) {
ret !containsKey(a) ? null : makeValue.get(a);
}
public bool containsKey(O a) {
ret keys.contains(a);
}
public Set> entrySet() {
ret map.entrySet(); // TODO
}
public Set keySet() { ret keys; }
public int size() { ret keys.size(); }
}