Diferença entre @Delegate, @Mixin e Traits no Groovy?

Alguém explicaria quando eu gostaria de usarTraços Groovy x Mixins (@Mixin) x delegados (@Delegate)? Talvez algumas compensações e preocupações com o design ajudem.

Todos eles parecem permitir a reutilização de várias "classes" de comportamento. Obrigado. :-)

Este segmento SO também foi útil:Diferença entre as transformações @Delegate e @Mixin AST no Groovy

questionAnswers(1)

yourAnswerToTheQuestion