class ProcrastinatingExecutor implements Executor {

    @Override
    public void execute(Runnable runner)
    {
        Lock lock = getLock();
        lock.lock();
        try
        {
            myLatestRunner = runner;
            schedule();
        }
        finally
        {
            lock.unlock();
        }
    }

    public  ProcrastinatingExecutor(ExecutorService executor);
    public  ProcrastinatingExecutor(ScheduledExecutorService executor, int minDelayMilliseconds);
    public  ProcrastinatingExecutor(ScheduledExecutorService executor, int minDelayMilliseconds, int maxDelayMilliseconds);
    public  ProcrastinatingExecutor(String executorThreadName, int minDelayMilliseconds);
    public  ProcrastinatingExecutor(String executorThreadName, int minDelayMilliseconds, int maxDelayMilliseconds);

}