docs: static Process execShellProcess(final ExecutionListener logger, final File workingdir,
                                      final String scriptargs,
                                      final Map<String, Map<String, String>> envContext,
                                      final Map<String, Map<String, String>> newDataContext,
                                      final String remoteShell,
                                      final String logName) throws IOException {
  
          ArrayList<String> shells = new ArrayList<String>(Arrays.asList(remoteShell.split(" ")));
  
          //use script-copy attribute and replace datareferences
          final String newargs = DataContextUtils.replaceDataReferencesInString(scriptargs, newDataContext);
          shells.add(newargs);
  
          final ProcessBuilder processBuilder = new ProcessBuilder(shells).directory(workingdir);
          final Map<String, String> environment = processBuilder.environment();
          //create system environment variables from the data context
          environment.putAll(DataContextUtils.generateEnvVarsFromContext(envContext));
  
  
          logger.log(3, "[" + logName + "] executing: " + remoteShell + " " + newargs);
          return processBuilder.start();
      }