static new ThreadLocal autoRestartModule_checkInterval; static java.util.Timer autoRestartModule(fS moduleVar, fS programID, final bool callMain) { ret autoRestartModule(moduleVar, programID, callMain, null); } static java.util.Timer autoRestartModule(fS moduleVar, fS programID, final bool callMain, fO afterReload) { ret doEvery_daemon(optPar(autoRestartModule_checkInterval, 10.0), new Runnable { Var name = evaluateInBackground(func -> S { snippetWithTitle(programID) }); S localMD5 = serverAutoRestartMD5(programID); public void run() { S newMD5 = serverAutoRestartMD5(programID); //print("MD5: " + localMD5 + " -> " + newMD5); if (isMD5(newMD5) && neq(localMD5, newMD5)) { localMD5 = newMD5; S _name = name.has() ? name! : fsI(programID); upgradeModuleVar(moduleVar, programID, _name, callMain, afterReload); } } }); }