class LazyExecutorService implements ExecutorService {

  @Override
  public <T> Future<T> submit(final Callable<T> task) {
    checkNotNull(task, "Null task submitted.");
    tasksAndTerminationLock.lock();
    try {
      if (isShutdown()) {
        throw new RejectedExecutionException("ExecutorService is shutdown");
      }
      ExecutingFuture<T> future = new ExecutingFutureImpl<T>(task);
      pendingTasks.add(future);
      return future;
    } finally {
      tasksAndTerminationLock.unlock();
    }
  }

  public  LazyExecutorService();
  public  LazyExecutorService(ExecutorService backingService);

}