@Override
  public @NotNull CancellablePromise<T> submit(@NotNull Executor backgroundThreadExecutor) {
    schedule(myOriginalComputation);
    Submission<T> submission = new Submission<>(this, backgroundThreadExecutor, myProgressIndicator);
    if (myCoalesceEquality == null) {
      submission.transferToBgThread();
    }
    else {
      submission.submitOrScheduleCoalesced(myCoalesceEquality);
    }
    return submission;
  }
@Override
  public @NotNull CancellablePromise<T> submit(@NotNull Executor backgroundThreadExecutor)