protected @NotNull ProcessHandler startProcess(@NotNull PythonScriptTargetedCommandLineBuilder builder)
    throws ExecutionException {
    HelpersAwareTargetEnvironmentRequest helpersAwareTargetRequest = getPythonTargetInterpreter();

    Sdk sdk = getSdk();
    if (sdk != null) {
      RunConfigurationTargetEnvironmentAdjuster adjuster =
        RunConfigurationTargetEnvironmentAdjuster.Factory.findTargetEnvironmentRequestAdjuster(sdk);
      if (adjuster != null) {
        adjuster.adjust(helpersAwareTargetRequest.getTargetEnvironmentRequest(), myConfig);
      }
    }

    // The original Python script to be executed
    PythonExecution pythonScript = buildPythonExecutionFinal(helpersAwareTargetRequest, getSdk());

    // Python script that may be the debugger script that runs the original script
    PythonExecution realPythonExecution = builder.build(helpersAwareTargetRequest, pythonScript);

    if (myConfig instanceof PythonRunConfiguration pythonConfig) {
      String inputFilePath = pythonConfig.getInputFile();
      if (pythonConfig.isRedirectInput() && !StringUtil.isEmptyOrSpaces(inputFilePath)) {
        realPythonExecution.withInputFile(new File(inputFilePath));
      }
    }

    // TODO [Targets API] [major] Meaningful progress indicator should be taken
    EmptyProgressIndicator progressIndicator = new EmptyProgressIndicator();
    TargetEnvironment targetEnvironment =
      helpersAwareTargetRequest.getTargetEnvironmentRequest().prepareEnvironment(TargetProgressIndicator.EMPTY);

    // TODO Detect and discard existing overrides of configured parameters.
    List<String> allInterpreterParameters = Streams.concat(getConfiguredInterpreterParameters().stream(),
                                                        realPythonExecution.getAdditionalInterpreterParameters().stream()).toList();
    TargetedCommandLine targetedCommandLine =
      PythonScripts.buildTargetedCommandLine(realPythonExecution, targetEnvironment, sdk, allInterpreterParameters, myRunWithPty);

    // TODO [Targets API] `myConfig.isPassParentEnvs` must be handled (at least for the local case)
    ProcessHandler processHandler = doStartProcess(targetEnvironment, targetedCommandLine, progressIndicator);

    // Attach extensions
    PythonRunConfigurationExtensionsManager.Companion.getInstance()
      .attachExtensionsToProcess(myConfig, processHandler, getRunnerSettings());

    return processHandler;
  }
protected @NotNull ProcessHandler startProcess(@NotNull PythonScriptTargetedCommandLineBuilder builder)