pub fn general_shl<T1, T2>(l: T1, r: T2) -> Result<T1>where T1: CheckedShl + Debug, T2: TryInto<u32> + Debug,