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; }