private void withExecutionProgressManager(@NotNull ThrowableRunnable<Exception> runnable) {
    var progressManager = ExternalSystemProgressNotificationManagerImpl.getInstanceImpl();
    try {
      progressManager.onStart(getId(), myExternalProjectPath);
      runnable.run();
      progressManager.onSuccess(getId());
    }
    catch (ProcessCanceledException exception) {
      progressManager.onCancel(getId());

      Throwable cause = exception.getCause();
      if (cause == null || cause instanceof ExternalSystemException) {
        throw exception;
      }
      throw new ProcessCanceledException(new ExternalSystemException(cause));
    }
    catch (ExternalSystemException exception) {
      progressManager.onFailure(getId(), exception);
      throw exception;
    }
    catch (Exception exception) {
      progressManager.onFailure(getId(), exception);
      throw new ExternalSystemException(exception);
    }
    catch (Throwable throwable) {
      var exception = new ExternalSystemException(throwable);
      progressManager.onFailure(getId(), exception);
      throw exception;
    }
    finally {
      progressManager.onEnd(getId());
    }
  }
private void withExecutionProgressManager(@NotNull ThrowableRunnable<Exception> runnable)