code: @Override
    public synchronized boolean cancel() {
      if (this.taskFuture != null && this.taskFuture.cancel(true)) {
        this.taskStateTracker.onTaskRunCompletion(this);
        return true;
      } else {
        return false;
      }
    }
docs: return true if the task is successfully cancelled.
  This method is a copy of the method in parent class.
  We need this copy so TaskIFaceWrapper variables are not shared between this class and its parent class
  @return