code: String[] getProgramArguments() throws IOException {
          LOGGER.entering();
  
          InstanceType type = getType();
          // start with the commands we have
          List<String> args = new LinkedList<>(commands);
  
          // add the default hub or node config arguments
          if (InstanceType.SELENIUM_NODE.equals(type)) {
              args.addAll(Arrays.asList(getNodeProgramArguments()));
          }
          if (InstanceType.SELENIUM_HUB.equals(type)) {
              args.addAll(Arrays.asList(getHubProgramArguments()));
          }
          // else role is standalone
  
          // pass the -selionConfig by default, when not already present.
          if (!commands.contains(ProcessLauncherConfiguration.SELION_CONFIG_ARG)) {
              args.add(ProcessLauncherConfiguration.SELION_CONFIG_ARG);
              args.add(SELION_CONFIG_FILE);
          }
  
          LOGGER.exiting(args.toString());
          return args.toArray(new String[args.size()]);
      }
docs: Get program arguments to pass
  
  @return the program arguments to pass represented as an array of {@link String}
  @throws IOException