// returns (timer, estimated firing time) or null static Pair nextFiringTimerInVM() { Collection timers = allTimersInVM(); long time = now(); new Lowest best; for (O timer : timers) pcall { long t = timer_nextFireTime(timer); if (t != 0) best.put(timer, t); } ret best.has() ? pair(best!, toLong(best.bestScore())) : null; }