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