boolean (@NotNull Project project, @NotNull List<SettingsAndEffectiveTarget> pairs, @NotNull Executor executor) { if (pairs.isEmpty()) { return false; } for (SettingsAndEffectiveTarget pair : pairs) { RunConfiguration configuration = pair.getConfiguration(); if (configuration instanceof CompoundRunConfiguration) { if (!canRun(project, ((CompoundRunConfiguration)configuration).getConfigurationsWithEffectiveRunTargets(), executor)) { return false; } continue; } ProgramRunner<?> runner = ProgramRunner.getRunner(executor.getId(), configuration); if (runner == null || !ExecutionTargetManager.canRun(configuration, pair.getTarget()) || ExecutionManager.getInstance(project).isStarting(executor.getId(), runner.getRunnerId())) { return false; } } return true; }