macro_rules! object_select { ( $Select:ident { $( $Enum:ident ( $Param:ident = $Object:ty ) ),+ $(,)? } ) => { ... }; }
The macro for making a union of objects.
You can read more about the technique here.