assembleRuntime = (KEY, runtimeModules) => {
  let assembly = 'const LAVAMOAT = Object.create(null);'
  runtimeModules.map(({ file, data, name, json, shimRequire }) => {
    let sourceString
    if (file) {
      sourceString = readFileSync(file, 'utf-8')
      sourceString = removeMultilineComments(sourceString)
    }
    if (data) {
      sourceString = JSON.stringify(data)
    }
    if (json) {
      sourceString = `LAVAMOAT['${name}'] = (${sourceString});`
    }
    if (shimRequire) {
      sourceString = readFileSync(require.resolve(shimRequire), 'utf-8')
      sourceString = removeMultilineComments(sourceString)
      sourceString = `;(()=>{
        const module = {exports: {}};
        const exports = module.exports;
          ${sourceString}
        ;
        LAVAMOAT['${name}'] = module.exports;
      })();`
    }
    if (sourceString) {
      assembly += `\n;/*${name}*/;\n${sourceString}`
    }
  })
  assembly += `;
  __webpack_require__.${KEY} = LAVAMOAT.defaultExport;
  (typeof harden !== 'undefined') && harden(__webpack_require__.${KEY});` // The harden line is likely unnecessary as the handler is being frozen anyway
  return assembly
}
@param {string} KEY
@param {RuntimeModule[]} runtimeModules
@returns {string}