protected final @NotNull Map.Entry<String, Map<String, String>> runProcessAndReadOutputAndEnvs(@NotNull List<String> command,
                                                                                                   @Nullable Path workingDir,
                                                                                                   @Nullable Map<String, String> scriptEnvironment,
                                                                                                   @NotNull Path envDataFile) throws IOException {
      return runProcessAndReadOutputAndEnvs(command, workingDir, (it) -> {
        if (scriptEnvironment != null) {
          // we might need the default environment for a process to launch correctly
          it.putAll(scriptEnvironment);
        }
      }, envDataFile);
    }
protected final @NotNull Map.Entry<String, Map<String, String>> runProcessAndReadOutputAndEnvs(@NotNull List<String> command,
                                                                                                   @Nullable Path workingDir,
                                                                                                   @Nullable Map<String, String> scriptEnvironment,
                                                                                                   @NotNull Path envDataFile)