static A persistentObjectFromProgram(S progID, S name) {
PersistentLister l = persistentListerReadOnly(progID);
IVar v = l.getVar(name, null);
ret v == null ? null : v!;
}
// makeDefaultObject: (func -> A) or Class
static A persistentObjectFromProgram(S progID, S name, O makeDefaultObject) {
A a = persistentObjectFromProgram(progID, name);
if (a == null)
ret (A) (makeDefaultObject instanceof Class ? nu((Class) makeDefaultObject) : callF(makeDefaultObject));
ret a;
}