+
+instance Maskable Octet where
+ apply_mask _ Maskbits.None _ = Octet.None
+ apply_mask Octet.None _ _ = Octet.None
+ apply_mask oct mask bit
+ | mask == Eight = oct
+ | mask == Seven = oct { b8 = bit }
+ | mask == Six = oct { b8 = bit, b7 = bit }
+ | mask == Five = oct { b8 = bit, b7 = bit, b6 = bit }
+ | mask == Four = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit }
+ | mask == Three = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit }
+ | mask == Two = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit, b3 = bit }
+ | mask == Maskbits.One = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit, b3 = bit, b2 = bit }
+ | mask == Maskbits.Zero = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit, b3 = bit, b2 = bit, b1 = bit }
+ | otherwise = Octet.None