private void addRunnerSettingsEditors(List<? super SettingsEditorFragment<Settings, ?>> fragments) {
    for (Executor executor : Executor.EXECUTOR_EXTENSION_NAME.getExtensionList()) {
      ProgramRunner<RunnerSettings> runner = ProgramRunner.getRunner(executor.getId(), mySettings);
      if (runner == null) {
        continue;
      }
      SettingsEditor<ConfigurationPerRunnerSettings> configEditor = mySettings.getRunnerSettingsEditor(runner);
      SettingsEditor<RunnerSettings> runnerEditor = runner.getSettingsEditor(executor, mySettings);
      if (configEditor == null && runnerEditor == null) {
        continue;
      }
      JComponent component = new JPanel(new BorderLayout());
      component.setBorder(IdeBorderFactory.createTitledBorder(executor.getStartActionText(), false));
      if (configEditor != null) {
        component.add(configEditor.getComponent(), BorderLayout.CENTER);
      }
      if (runnerEditor != null) {
        component.add(runnerEditor.getComponent(), configEditor == null ? BorderLayout.CENTER : BorderLayout.SOUTH);
      }
      RunConfigurationEditorFragment<Settings, JComponent> fragment =
        new RunConfigurationEditorFragment<>(executor.getId() + ".config", executor.getStartActionText(),
                                             ExecutionBundle.message("run.configuration.startup.connection.rab.title"),
                                             component, 0, settings -> false) {
          @Override
          public void doReset(@NotNull RunnerAndConfigurationSettingsImpl s) {
            if (configEditor != null) {
              configEditor.resetFrom(s.getConfigurationSettings(runner));
            }
            if (runnerEditor != null) {
              runnerEditor.resetFrom(s.getRunnerSettings(runner));
            }
          }

          @Override
          public void applyEditorTo(@NotNull RunnerAndConfigurationSettingsImpl s) {
            try {
              if (configEditor != null) {
                configEditor.applyTo(s.getConfigurationSettings(runner));
              }
              if (runnerEditor != null) {
                runnerEditor.applyTo(s.getRunnerSettings(runner));
              }
            }
            catch (ConfigurationException e) {
              LOG.error(e);
            }
          }
        };
      if (configEditor != null) {
        Disposer.register(fragment, configEditor);
      }
      if (runnerEditor != null) {
        Disposer.register(fragment, runnerEditor);
      }
      fragments.add(fragment);
    }
  }
private void addRunnerSettingsEditors(List<? super SettingsEditorFragment<Settings, ?>> fragments)