@Contract(pure = true)
  public @NotNull ProgressRunner<R> withProgress(@NotNull ProgressIndicator progressIndicator) {
    ProgressIndicator myIndicator;
    try {
      myIndicator = myProgressIndicatorFuture.isDone() ? myProgressIndicatorFuture.get() : null;
    }
    catch (InterruptedException | ExecutionException e) {
      myIndicator = null;
    }
    return progressIndicator.equals(myIndicator)
           ? this
           : new ProgressRunner<>(myComputation, isSync, isModal, myThreadToUse, CompletableFuture.completedFuture(progressIndicator));
  }
@Contract(pure = true)
  public @NotNull ProgressRunner<R> withProgress(@NotNull ProgressIndicator progressIndicator)