Так сериализаторы в скале используют макросы, и ничего. Генераторы рослина тоже для метапрограммирования на этапе компиляции. Не такие крутые, наверное, но тем не менее.
Они обычно на тайпклассах, это даёт им очень удобную расширяемость, в отличие от любого код гена