!7 srecord SM(S moduleID, S moduleName, WeakReference subModule) {} module SubModules extends DynObjectTable { start { itemToMap = func(SM sm) -> Map { litorderedmap( "Module ID" := sm.moduleID, "Module" := sm.moduleName, "Submodule ID" := or2(programID(sm.subModule!), "?")) }; doEveryAndNow(10000, r { new L out; for (O mod : dm_listModules()) { L subModules = dependentClassesOfProgram(mainClass(mod)); if (nempty(subModules)) { S moduleID = dm_moduleID(mod); S name = dm_moduleName(mod); for (O sub : subModules) out.add(SM(moduleID, name, weakRef(sub))); } } setData(out); }); } }