private @NotNull Process createProcess(@NotNull TargetEnvironment targetEnvironment,
                                         @NotNull TargetedCommandLine targetedCommandLine,
                                         boolean askForSudo,
                                         @Nullable ProgressIndicator indicator) throws ExecutionException {
    if (askForSudo) {
      if (!(targetEnvironment instanceof LocalTargetEnvironment)) {
        // TODO [targets] Execute process on non-local target using sudo
        LOG.warn("Sudo flag is ignored");
      }
      else if (PySdkExtKt.adminPermissionsNeeded(getSdk())) {
        // This is hack to process sudo flag in the local environment
        GeneralCommandLine localCommandLine = ((LocalTargetEnvironment)targetEnvironment).createGeneralCommandLine(targetedCommandLine);
        return executeOnLocalMachineWithSudo(localCommandLine);
      }
    }
    // TODO [targets] Pass meaningful progress indicator
    return targetEnvironment.createProcess(targetedCommandLine, Objects.requireNonNullElseGet(indicator, EmptyProgressIndicator::new));
  }
private @NotNull Process createProcess(@NotNull TargetEnvironment targetEnvironment,
                                         @NotNull TargetedCommandLine targetedCommandLine,
                                         boolean askForSudo,
                                         @Nullable ProgressIndicator indicator)