void (RunnerAndConfigurationSettings settings, ExecutionTarget target, RunContentDescriptor descriptor, @Nullable Consumer<ExecutionEnvironment> envCustomization) { RunConfiguration configuration = settings.getConfiguration(); Project project = configuration.getProject(); RunManager runManager = RunManager.getInstance(project); if (configuration instanceof CompoundRunConfiguration) { List<SettingsAndEffectiveTarget> subConfigurations = ((CompoundRunConfiguration)configuration).getConfigurationsWithEffectiveRunTargets(); for (SettingsAndEffectiveTarget subConfiguration : subConfigurations) { RunnerAndConfigurationSettings subSettings = runManager.findSettings(subConfiguration.getConfiguration()); if (subSettings != null) { runSubProcess(subSettings, subConfiguration.getTarget(), null, envCustomization); } } } else { if (target == null) { target = ExecutionTargetManager.getInstance(project).findTarget(configuration); assert target != null : "No target for configuration of type " + configuration.getType().getDisplayName(); } ProcessHandler processHandler = descriptor == null ? null : descriptor.getProcessHandler(); ExecutionManager.getInstance(project).restartRunProfile(project, getExecutor(), target, settings, processHandler, RunToolbarProcessData.prepareSuppressMainSlotCustomization(project, envCustomization)); } }