@ApiStatus.NonExtendable
  public @NotNull Process createProcess() throws ExecutionException {
    if (LOG.isDebugEnabled()) {
      LOG.debug("Executing [" + getCommandLineString() + "]");
      if (myWorkingDirectory != null) {
        LOG.debug("  working dir: " + myWorkingDirectory.toAbsolutePath());
      }
      LOG.debug("  environment: " + myEnvParams + " (+" + myParentEnvironmentType + ")");
      LOG.debug("  charset: " + myCharset);
    }

    try {
      var commands = myProcessCreator == null ? validateAndPrepareCommandLineForLocalRun() : ContainerUtil.concat(List.of(myExePath), myProgramParams.getList());
      return startProcess(commands);
    }
    catch (IOException e) {
      if (SystemInfo.isWindows) {
        var mode = System.getProperty("jdk.lang.Process.allowAmbiguousCommands");
        @SuppressWarnings("removal") var sm = System.getSecurityManager();
        if ("false".equalsIgnoreCase(mode) || sm != null) {
          e.addSuppressed(new IllegalStateException("Suspicious state: allowAmbiguousCommands=" + mode + " SM=" + (sm != null ? sm.getClass() : null)));
        }
      }
      throw new ProcessNotCreatedException(e.getMessage(), e, this);
    }
  }
@ApiStatus.NonExtendable
  public @NotNull Process createProcess()