@Override
  public @NotNull PtyProcess createProcess(@NotNull ShellStartupOptions options) throws ExecutionException {
    String[] command = ArrayUtil.toStringArray(options.getShellCommand());
    Map<String, String> envs = options.getEnvVariables();
    TermSize initialTermSize = options.getInitialTermSize();
    String workingDir = options.getWorkingDirectory();
    if (workingDir == null) {
      throw new IllegalStateException("Working directory must not be null, startup options: " + options);
    }

    var shellIntegration = options.getShellIntegration();
    boolean isBlockTerminal = isBlockTerminalEnabled() && shellIntegration != null && shellIntegration.getCommandBlockIntegration() != null;
    TerminalUsageTriggerCollector.triggerLocalShellStarted(myProject, command, isBlockTerminal);

    if (isBlockTerminal) {
      String curVersionString = ApplicationInfo.getInstance().getBuild().asStringWithoutProductCodeAndSnapshot();
      TerminalUsageLocalStorage.getInstance().getState().setBlockTerminalUsedLastVersion(curVersionString);
    }

    try {
      long startNano = System.nanoTime();
      PtyProcess process = (PtyProcess)ProcessService.getInstance().startPtyProcess(
        command,
        workingDir,
        envs,
        LocalPtyOptions.defaults().builder()
          .initialColumns(initialTermSize != null ? initialTermSize.getColumns() : -1)
          .initialRows(initialTermSize != null ? initialTermSize.getRows() : -1)
          .useWinConPty(LocalPtyOptions.shouldUseWinConPty())
          .build(),
        null,
        false,
        false,
        false
      );
      LOG.info("Started " + process.getClass().getName() + " in " + TimeoutUtil.getDurationMillis(startNano) + " ms from "
               + stringifyProcessInfo(command, workingDir, initialTermSize, envs, !LOG.isDebugEnabled()));
      return process;
    }
    catch (Exception e) {
      throw new ExecutionException("Failed to start " + stringifyProcessInfo(command, workingDir, initialTermSize, envs, false), e);
    }
  }
@Override
  public @NotNull PtyProcess createProcess(@NotNull ShellStartupOptions options)