Represent different “possibilities” in your code on the type level. Multiverse of possibilities. See also Discriminated union