!7 sclass GhostModules extends DynCalculatedList { void start { ownTimer(doEvery(30.0, r updateMe)); } L calc() { ret map(dm_ghostModules(), func(Object c, GhostModule m) { S programID = str(getOpt(getMainClass(c), 'programID)); bool hasInstance = m.instance! != null; ret programID + "/" + shortClassName(c) + " - " + or2(m.name, "?") + (hasInstance ? "" : " [instance gone]"); }); } }