@Override
  protected void perform(@NotNull Project project,
                         @NotNull ProjectSystemId projectSystemId,
                         @NotNull TaskData taskData,
                         @NotNull AnActionEvent e) {
    final ExternalTaskExecutionInfo taskExecutionInfo = ExternalSystemActionUtil.buildTaskInfo(taskData);
    final ConfigurationContext context = ConfigurationContext.getFromContext(e.getDataContext(), e.getPlace());

    RunnerAndConfigurationSettings configuration = findOrGet(context);
    if (configuration == null ||
        !runTaskAsExistingConfiguration(project, projectSystemId, taskExecutionInfo, configuration)) {
      runTaskAsNewRunConfiguration(project, projectSystemId, taskExecutionInfo);
      configuration = findOrGet(context); // if created during runTaskAsNewRunConfiguration
    }

    context.getRunManager().setSelectedConfiguration(configuration);
  }
@Override
  protected void perform(@NotNull Project project,
                         @NotNull ProjectSystemId projectSystemId,
                         @NotNull TaskData taskData,
                         @NotNull AnActionEvent e)