docs: function buildStructFactory () {
      cachedFieldNames = []
      for (let i = 0; i < fields.length; i++) {
        const [key, value] = fields[i]
        if (key) {
          cachedFieldNames.push(key)
        } else if (value && value[kFieldNames]) {
          cachedFieldNames.push(...value[kFieldNames]())
        }
      }
  
      const objectDecl = cachedFieldNames.reduce((str, name) => {
        return `${str}  ${JSON.stringify(name)}: undefined,\n`
      }, '')
  
      // eslint-disable-next-line no-new-func
      structFactory = Function(`return {\n${objectDecl}}`)
    }