private List<String> buildCommand() throws IOException {
    ContainerInstall install = getInstall();

    // Start command list
    List<String> command = new ArrayList<>();
    // Path to the modify war script to run
    command.add(modifyWarScript.getAbsolutePath());
    // Path to the WAR file to modify
    command.add("-w");
    command.add(install.getWarFilePath().toString());
    // Get connection type for the WAR (peer-to-peer or client-server)
    command.add("-t");
    command.add(install.getConnectionType().getName());
    // Path to the modified version of the origin WAR file
    command.add("-o");
    command.add(getWarFile().toString());
    // Add all the cache properties setup to the WAR file
    for (String property : cacheProperties.keySet()) {
      command.add("-p");
      command.add("gemfire.cache." + property + "=" + getCacheProperty(property));
    }
    // Add all the system properties to the WAR file
    for (String property : systemProperties.keySet()) {
      command.add("-p");
      command.add("gemfire.property." + property + "=" + getSystemProperty(property));
    }

    return command;
  }
Builds the command needed to run the {@link GenericAppServerContainer#modifyWarScript}

The command is built as an array list of strings with each element representing a string
separated by a space on the command line. For example, the list {'-t', 'geode'} would represent
'modify_war -t geode' on the command line.

The command built points towards {@link ContainerInstall#getWarFilePath()} as the starting file
and {@link ServerContainer#getWarFile()} as the output file. Cache and system properties are
specified when modifying the WAR, so the elements contained within the {@link #cacheProperties}
and {@link #systemProperties} maps are also added to the command built.
geode-assembly/src/distributedTest/java/org/apache/geode/session/tests/GenericAppServerContainer.java