code: function parseNameValueArg (args, parsed, shortName, longName) {
    let arg = args[0];
  
    /** @name ParsedArg **/
    let parsedArg = {
  
      /**
       * If the argument name and value were joined together by an "=",
       * rather than being separated by a space, then this prefix is
       * the part before the value (e.g. "--outfile=", "--exclude=", etc.)
       * @type {string}
       */
      prefix: "",
  
      /**
       * The argument value.
       * @type {string}
       */
      value: ""
    };
  
    // Check for space-separated name/value
    if (arg === shortName || arg === longName) {
      // Shift this arg as-is
      parsed.args.push(args.shift());
  
      // The next arg is the value
      parsedArg.value = args.shift();
      return parsedArg;
    }
  
    // Check for name/value joined by "="
    shortName += "=";
    longName += "=";
    if (arg.indexOf(shortName) === 0) {
      parsedArg.prefix = shortName;
    }
    else if (arg.indexOf(longName) === 0) {
      parsedArg.prefix = longName;
    }
  
    if (parsedArg.prefix) {
      let value = args.shift();
      parsedArg.value = value.substr(parsedArg.prefix.length);
      return parsedArg;
    }
  }
docs: Parses a name/value argument, such as --outfile, --exclude, etc.
  
  @param {string[]} args - The command-line arguments that have not yet been parsed
  @param {ParsedArgs} parsed - The command-line arguments that have already been parsed
  @param {string} shortName - The short argument name, such as "-o"
  @param {string} longName - The long argument name, such as "--outfile"
  @returns {ParsedArg}