private static boolean canRun(@NotNull Project project,
                                  @NotNull List<SettingsAndEffectiveTarget> pairs,
                                  @NotNull Executor executor,
                                  @Nullable Ref<Boolean> isStartingTracker) {
      if (pairs.isEmpty()) {
        return false;
      }

      for (SettingsAndEffectiveTarget pair : pairs) {
        RunConfiguration configuration = pair.getConfiguration();
        if (configuration instanceof CompoundRunConfiguration o) {
          if (!canRun(project, o.getConfigurationsWithEffectiveRunTargets(), executor, isStartingTracker)) {
            return false;
          }
          continue;
        }

        ProgramRunner<?> runner = ProgramRunner.getRunner(executor.getId(), configuration);
        if (runner == null || !ExecutionTargetManager.canRun(configuration, pair.getTarget())) {
          return false;
        }
        else if (ExecutionManager.getInstance(project).isStarting(
          RunnerAndConfigurationSettingsImpl.getUniqueIdFor(configuration),
          executor.getId(), runner.getRunnerId())) {
          if (isStartingTracker != null) isStartingTracker.set(true);
          else return false;
        }
      }
      return true;
    }
private static boolean canRun(@NotNull Project project,
                                  @NotNull List<SettingsAndEffectiveTarget> pairs,
                                  @NotNull Executor executor,
                                  @Nullable Ref<Boolean> isStartingTracker)