private void executeAction(
    @NotNull BuildController controller,
    @NotNull ExecutorService converterExecutor,
    @NotNull GradleOpenTelemetry telemetry,
    @NotNull GradleDaemonModelHolder models
  ) {
    BuildController buildController = models.createBuildController(controller);
    GradleModelConsumer modelConsumer = models.createModelConsumer(converterExecutor);
    Collection<? extends GradleBuild> gradleBuilds = models.getGradleBuilds();

    try {
      getModelFetchPhases().forEach(phase -> {
        telemetry.runWithSpan(phase.name(), __ -> {
          Set<ProjectImportModelProvider> modelProviders = myModelProviders.getOrDefault(phase, Collections.emptySet());
          populateModels(buildController, telemetry, modelConsumer, gradleBuilds, modelProviders);
          sendPendingState(buildController, telemetry, models, phase);
        });
      });
    }
    catch (Exception e) {
      throw new ExternalSystemException(e);
    }
  }
private void executeAction(
    @NotNull BuildController controller,
    @NotNull ExecutorService converterExecutor,
    @NotNull GradleOpenTelemetry telemetry,
    @NotNull GradleDaemonModelHolder models
  )