Module Lib.These

type ('a, 'b) t = [
| `This of 'a
| `That of 'b
| `Those of 'a * 'b
]

These allows you to represent one or another or both while keeping * neither unrepresentable