Thanks to GitHub Copilot for the implementation, it just needed
improving around the edges to make it work perfectly.
For the record, copilot generated it in JS, and then
I manually ported it to Lua.
If the Copilot code looks sufficiently similar to your own source,
get in touch and I will give you full credit.