stripProcessArgv = (entrypoint, nonOptionArguments = []) => {
  /**
   * This module could be executed in myriad ways (`lavamoat`, `node
   * /path/to/lavamoat`, `npx lavamoat2`, etc.), so we are just going to
   * recreate the args from scratch
   */
  const start = 0

  /**
   * If the user provided `--` we want everything after that, but if they
   * didn't, the entire rest of the array is lavamoat args, so it can be
   * removed.
   */
  const deleteCount = process.argv.includes('--')
    ? process.argv.indexOf('--')
    : process.argv.length

  /**
   * Path to `node`, any args to `node`, the path to the entrypoint, then
   * whatever was in {@link nonOptionArguments}. Hope this works!
   */
  const items = [
    process.execPath,
    ...process.execArgv,
    entrypoint,
    ...nonOptionArguments.map(String),
  ]

  process.argv.splice(start, deleteCount, ...items)
}
Strip out all `lavamoat` CLI args from `process.argv` so that the entrypoint
receives a `process.argv` like it would if it were executed directly with
`node`.

Used for execution only.

For this to work, we _must_ mutate `process.argv` _in place_.

@param {string} entrypoint Entry module
@param {(string | number)[]} nonOptionArguments Array of stuff passed after
  `--` on the command-line. Note that Yargs parses numbers, and we have to
  convert them back to strings.
@returns {void}