public u32 u32(BitBufferReader <FibonacciDecoding> b)
        {
            bool lastbit = false;
            u8   fib     = 0;
            u32  result  = 0;
            bool sub     = false;

            while (true) // TODO: prevent loop with sane check
            {
                // TODO: optimize
                if (b.b())
                {
                    if (lastbit)
                    {
                        break;
                    }

                    result += Coder.Fibonacci.u32Lookup[fib];
                    // if (!sub)
                    // {
                    //     result -= 1;
                    //     sub = false;
                    // }

                    lastbit = true;
                }
                else
                {
                    lastbit = false;
                }

                fib++;
            }

            return(result - 1);
        }