pub struct B0;
pub struct B1;
use std::ops::Shl;
use std::ops::Sub;
pub type Shleft = >::Output;
pub type Sub1 = >::Output;
pub struct UInt {
    pub(crate) msb: U,
    pub(crate) lsb: B,
}
impl Shl> for UInt
where
    UInt: Sub,
    UInt, B0>: Shl>>,
{
    type Output = Shleft, B0>, Sub1>>;
    fn shl(self, rhs: UInt) -> Self::Output {
        unimplemented!()
    }
}