sclass DynModuleRef { S moduleID; transient O module; *() {} *(S *moduleID) {} void _doneLoading() { resolve(); } void resolve { if (module == null && moduleID != null) module = dm_getModule(moduleID); } O get() { resolve(); ret module; } void set(S moduleID) { this.moduleID = moduleID; module = null; } }