SumType is a generic discriminated union implementation that uses design-by-introspection to generate safe and efficient code. Its features include: