@Nonnull
    public Future<V> submit(@Nonnull Runnable task, V result) {
        if (task == null) throw new NullPointerException();
        RunnableFuture<V> f = newTaskFor(task, result);
        executor.execute(new QueueingFuture<>(f, completionQueue));
        return f;
    }
@throws RejectedExecutionException {@inheritDoc}
@throws NullPointerException       {@inheritDoc}
xmppserver/src/main/java/org/jivesoftware/util/ScheduledExecutorCompletionService.java