@Override
      public void execute(@NotNull ProgressIndicator indicator) {
        environment.putUserData(ExternalSystemRunnableState.PROGRESS_INDICATOR_KEY, indicator);
        environment.putUserData(ExternalSystemRunnableState.TASK_NOTIFICATION_LISTENER_KEY, spec.getListener());
        indicator.setIndeterminate(true);

        boolean result = waitForProcessExecution(project, environment, () -> environment.getRunner().execute(environment));
        TaskCallback callback = spec.getCallback();
        if (callback != null) {
          if (result) {
            callback.onSuccess();
          }
          else {
            callback.onFailure();
          }
        }
        if (!result && spec.getActivateToolWindowOnFailure()) {
          ApplicationManager.getApplication().invokeLater(() -> {
            var window = ToolWindowManager.getInstance(project).getToolWindow(environment.getExecutor().getToolWindowId());
            if (window != null) {
              window.activate(null, false, false);
            }
          }, project.getDisposed());
        }
      }
@Override
      public void execute(@NotNull ProgressIndicator indicator)