sclass DoLater implements AutoCloseable { long targetSysTime; volatile Runnable action; transient ISleeper sleeper; transient IF1 executor; transient bool enabled; *() {} *(DoLater *targetSysTime, Runnable *action) {} void enable() { if (enabled) ret; if (sleeper == null) sleeper = defaultSleeper(); sleeper.doLater(targetSysTime, r { runWithExecutor(action, executor); }); } }