+ !extras = bit bitCount - maxCode - 1
+ !code = B.toBits (B.take (bitCount - 1) bs)
+ (# code', bitCount' #)
+ = if code ≥ extras then
+ (# (code `shiftL` 1)
+ - extras
+ + b2n (bs B.!! bitCount)
+ , bitCount #)
+ else
+ (# code, bitCount - 1 #)
+ !bs' = B.drop bitCount' bs