sum_type
A convenience macro for creating a wrapper enum which may be one of several distinct types