@Override
  protected void perform(@NotNull RunnerAndConfigurationSettings configuration,
                         @NotNull ConfigurationContext context) {
    RunManagerEx runManager = (RunManagerEx)context.getRunManager();
    DataContext dataContext = context.getDefaultDataContext();
    ReadAction
      .nonBlocking(() -> findExisting(context))
      .finishOnUiThread(ModalityState.nonModal(), existingConfiguration -> {
        if (configuration != existingConfiguration) {
          RunConfigurationOptionUsagesCollector.logAddNew(context.getProject(), configuration.getType().getId(), context.getPlace());
          runManager.setTemporaryConfiguration(configuration);
          perform(runManager, configuration, dataContext);
        }
        else {
          perform(runManager, configuration, dataContext);
        }
      })
      .submit(AppExecutorUtil.getAppExecutorService());
  }
@Override
  protected void perform(@NotNull RunnerAndConfigurationSettings configuration,
                         @NotNull ConfigurationContext context)