@Override
  public void runProcess(@NotNull Runnable process, @Nullable ProgressIndicator progress) {
    if (progress != null) {
      assertNoOtherThreadUnder(progress);
    }
    executeProcessUnderProgress(() -> {
      try {
        try {
          if (progress != null && !progress.isRunning()) {
            progress.start();
          }
        }
        catch (RuntimeException e) {
          throw e;
        }
        catch (Throwable e) {
          throw new RuntimeException(e);
        }
        Span span = startProcessSpan(progress);
        if (span == null) {
          process.run();
        }
        else {
          TraceKt.use(span, (Span __) -> {
            process.run();
            return null;
          });
        }
      }
      finally {
        if (progress != null && progress.isRunning()) {
          progress.stop();
          if (progress instanceof ProgressIndicatorEx) {
            ((ProgressIndicatorEx)progress).processFinish();
          }
        }
      }
    }, progress);
  }
@Override
  public void runProcess(@NotNull Runnable process, @Nullable ProgressIndicator progress)