@Override
    public synchronized boolean cancel(boolean mayInterruptIfRunning) {
      List<TaskFuture<?>> delegates = myDelegates;
      if (delegates == null) {
        myRequestedCancelState = mayInterruptIfRunning;
        return true;
      }
      boolean cancelled = false;
      for (TaskFuture<?> delegate : delegates) {
        cancelled |= delegate.cancel(mayInterruptIfRunning);
      }
      return cancelled;
    }
@Override
    public synchronized boolean cancel(boolean mayInterruptIfRunning)