static void autoRestartModule(fS moduleVar, fS programID, final bool callMain) { doLater_daemon(5000, new Runnable { Var name = evaluateInBackground(func -> S { snippetWithTitle(programID) }); S localMD5 = serverAutoRestartMD5(programID); public void run() { S newMD5 = serverAutoRestartMD5(programID); if (isMD5(newMD5) && neq(localMD5, newMD5)) { S name = name.has() ? name! : fsI(programID); upgradeModuleVar(moduleVar, name, programID, callMain); } } }); }