Mirrors allows typelevel access to enums, case classes and objects, and their sealed parents.
The names of the product elements
The name of the type
The mirrored *-type