macro_rules! read_bits {
($bistream:ident, $c:literal $(, $ctx:expr)?) => { ... };
($bitstream:ident, u($n:literal) $(, $ctx:expr)?) => { ... };
($bitstream:ident, u($n:literal); UnpackSigned $(, $ctx:expr)?) => { ... };
($bitstream:ident, $c:literal + u($n:literal) $(, $ctx:expr)?) => { ... };
($bitstream:ident, $c:literal + u($n:literal); UnpackSigned $(, $ctx:expr)?) => { ... };
($bitstream:ident, U32($($args:tt)+) $(, $ctx:expr)?) => { ... };
($bitstream:ident, U32($($args:tt)+); UnpackSigned $(, $ctx:expr)?) => { ... };
($bitstream:ident, U64 $(, $ctx:expr)?) => { ... };
($bitstream:ident, U64; UnpackSigned $(, $ctx:expr)?) => { ... };
($bitstream:ident, F16 $(, $ctx:expr)?) => { ... };
($bitstream:ident, Bool $(, $ctx:expr)?) => { ... };
($bitstream:ident, Enum($enumtype:ty) $(, $ctx:expr)?) => { ... };
($bitstream:ident, ZeroPadToByte $(, $ctx:expr)?) => { ... };
($bitstream:ident, Bundle($bundle:ty)) => { ... };
($bitstream:ident, Bundle($bundle:ty), $ctx:expr) => { ... };
($bitstream:ident, Vec[$($inner:tt)*]; $count:expr $(, $ctx:expr)?) => { ... };
($bitstream:ident, Array[$($inner:tt)*]; $count:expr $(, $ctx:expr)?) => { ... };
}