@Override
  public void execute(ExternalSystemTaskNotificationListener @NotNull ... listeners) {
    if (!compareAndSetState(ExternalSystemTaskState.NOT_STARTED, ExternalSystemTaskState.IN_PROGRESS)) {
      return;
    }
    try {
      addProgressListeners(listeners);
      withProcessingManager(() -> {
        withExecutionProgressManager(() -> {
          doExecute();
        });
      });
      setState(ExternalSystemTaskState.FINISHED);
    }
    catch (Exception e) {
      LOG.debug(e);
      myError.set(e);
      setState(ExternalSystemTaskState.FAILED);
    }
    catch (Throwable e) {
      LOG.error(e);
      myError.set(e);
      setState(ExternalSystemTaskState.FAILED);
    }
  }
@Override
  public void execute(ExternalSystemTaskNotificationListener @NotNull ... listeners)