An abstract type allowing values to be either of T1 or T2 type. Supports implicit casts from/to either types.
T1
T2