¿Diferencia entre @Delegate, @Mixin y Traits en Groovy?

¿Alguien explicaría cuándo querría usarRasgos maravillosos vs. Mixins (@Mixin) vs. Delegados (@Delegate)? Quizás algunas compensaciones y preocupaciones de diseño ayudarían.

Todos parecen permitir la reutilización de múltiples "clases" de comportamiento. Gracias. :-)

Este hilo SO también fue útil:Diferencia entre las transformaciones AST @Delegate y @Mixin en Groovy