function recursiveProxy(hint, path) {
  return new Proxy(
    function () {}, //makes it callable to survive a few more lines before we cause an error and stop collecting further policy updates.
    {
      get(target, key) {
        if (typeof key === 'symbol') {
          key = key.toString()
        }
        path = [...path, key]
        addToPolicy(hint, path.join('.'))
        return recursiveProxy(hint, path)
      },
    }
  )
}
Creates a recursive proxy object that lets us tap into nested field lookups
at runtime.

@param {string} hint - The hint for missing properties.
@param {string[]} path - The path to the missing property.
@returns {object} - The recursive proxy object.