Scala enumeration implementation using type macros