private @NotNull List<String> detectShells() {
    List<String> shells = new ArrayList<>();
    if (SystemInfo.isUnix) {
      addIfExists(shells, "/bin/bash");
      addIfExists(shells, "/usr/bin/bash");
      addIfExists(shells, "/usr/local/bin/bash");
      addIfExists(shells, "/opt/homebrew/bin/bash");

      addIfExists(shells, "/bin/zsh");
      addIfExists(shells, "/usr/bin/zsh");
      addIfExists(shells, "/usr/local/bin/zsh");
      addIfExists(shells, "/opt/homebrew/bin/zsh");

      addIfExists(shells, "/bin/fish");
      addIfExists(shells, "/usr/bin/fish");
      addIfExists(shells, "/usr/local/bin/fish");
      addIfExists(shells, "/opt/homebrew/bin/fish");

      addIfExists(shells, "/opt/homebrew/bin/pwsh");
    }
    else if (SystemInfo.isWindows) {
      File powershell = PathEnvironmentVariableUtil.findInPath("powershell.exe");
      if (powershell != null && StringUtil.startsWithIgnoreCase(powershell.getAbsolutePath(), "C:\\Windows\\System32\\WindowsPowerShell\\")) {
        shells.add(powershell.getAbsolutePath());
      }
      File cmd = PathEnvironmentVariableUtil.findInPath("cmd.exe");
      if (cmd != null && StringUtil.startsWithIgnoreCase(cmd.getAbsolutePath(), "C:\\Windows\\System32\\")) {
        shells.add(cmd.getAbsolutePath());
      }
      File pwsh = PathEnvironmentVariableUtil.findInPath("pwsh.exe");
      if (pwsh != null && StringUtil.startsWithIgnoreCase(pwsh.getAbsolutePath(), "C:\\Program Files\\PowerShell\\")) {
        shells.add(pwsh.getAbsolutePath());
      }
      File gitBash = new File("C:\\Program Files\\Git\\bin\\bash.exe");
      if (gitBash.isFile()) {
        shells.add(gitBash.getAbsolutePath());
      }
      String cmderRoot = EnvironmentUtil.getValue("CMDER_ROOT");
      if (cmderRoot == null) {
        cmderRoot = myEnvVarField.getEnvs().get("CMDER_ROOT");
      }
      if (cmderRoot != null && cmd != null && StringUtil.startsWithIgnoreCase(cmd.getAbsolutePath(), "C:\\Windows\\System32\\")) {
        shells.add("cmd.exe /k \"%CMDER_ROOT%\\vendor\\init.bat\"");
      }
    }
    return shells;
  }
private @NotNull List<String> detectShells()