// r may return false to cancel timer static TimerTask smartTimerTask(O r, java.util.Timer timer, long delay) { ret SmartTimerTask(r, timer, delay, _threadInfo()); } srecord noeq SmartTimerTask(O r, java.util.Timer timer, long delay, O threadInfo) extends TimerTask { long lastRun; public void run() { if (!licensed()) timer.cancel(); else { _threadInheritInfo(threadInfo); temp tempActivity(r); lastRun = fixTimestamp(lastRun); long now = now(); if (now >= lastRun + delay*0.9) { lastRun = now; if (eq(false, pcallF(r))) timer.cancel(); } } } }