variant
A type safe generalized union type