code: public Future<V> submit(Callable<V> task) {
          if (task == null) throw new NullPointerException();
          NotifyingFuture<V> f = executor.submit(task);
          f.setListener(listener);
          return f;
      }
docs: {@inheritDoc CompletionService}
  <p>
  This future object may not be used as a NotifyingFuture.  That is because
  internally this class sets the listener to provide ability to add to the queue.