public Task<T> getTask()
  {
    return _task;
  }
@Test
  public void testGetTaskOfParSeqBasedCompletionStage() throws Exception {
    // Control: CompletableFuture with completed value
    CompletionStage<String> completionStageCompletableFuture = CompletableFuture.completedFuture(TESTVALUE2);
    testWithUnFinishedStage(completionStageCompletableFuture);

    // treatment: Use a ParSeqBasedCompletionStage with A Task already resolved
    CompletionStage<String> completionStageParSeq = createTestStage(TESTVALUE2, 0);
    assert(completionStageParSeq instanceof ParSeqBasedCompletionStage);
    CompletionStage<String> spyStage = Mockito.spy(completionStageParSeq);
    testWithUnFinishedStage(spyStage);
    verify((ParSeqBasedCompletionStage) spyStage, times(1)).getTask();


    // treatment: Use a ParSeqBasedCompletionStage with a task has not started
    Task<String> testTask = Task.value(TESTVALUE2);
    CompletionStage<String> completionStageParSeq2 = createStageFromTask(testTask);
    assert(completionStageParSeq2 instanceof ParSeqBasedCompletionStage);
    CompletionStage<String> spyStage2 = Mockito.spy(completionStageParSeq2);
    testWithUnStartedStage(spyStage2, testTask);

    // treatment: Use a ParSeqBasedCompletionStage started but will finish later
    CompletionStage<String> completionStageParSeq3 = createTestStage(TESTVALUE2, 100);
    assert(completionStageParSeq3 instanceof ParSeqBasedCompletionStage);
    CompletionStage<String> spyStage3 = Mockito.spy(completionStageParSeq3);
    testWithUnFinishedStage(spyStage3);
    verify((ParSeqBasedCompletionStage) spyStage3, times(1)).getTask();
  }