///| pub(open) trait BoundedEnum: Compare { pred(Self) -> Self succ(Self) -> Self lower_bound() -> Self upper_bound() -> Self }