Similar to reactivemongo.bson.Macros.Options.UnionType but finds all implementations of the top trait automatically.
Default options that are implied if invoking "non-Opts" method.
write method also store class name(dynamic type) as a string
in a property named "className".
Use type parameter
A as static type but use pattern matching to handle
different possible subtypes.
Print out generated code during compilation.
Type for making type-level lists for UnionType.