Tagged union

A discriminant paired with a union payload under an invariant that the tag identifies the member currently holding a value.