// r may return false to cancel timer static TimerTask smartTimerTask(final O r, final java.util.Timer timer, final long delay) { ret new 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(); } } } }; }