/// <summary>
        /// Function registered with VisRen to be called once per frame, we use it to process our queue messages
        /// and trigger Lua callbacks when speech recognition is complete.
        /// See https://developers.virtalis.com/blogs/thread-safety-in-visionary-render-plugins
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="ud"></param>
        public static void Update(double dt, IntPtr ud)
        {
            while (MessageQueue.TryDequeue(out var item))
            {
                FFIVarHandle[] args =
                {
                    FFI.MakeString(item.Callback),
                    FFI.MakeString(item.Param ?? "")
                };

                FFI.Invoke("__callback", args);
            }
        }