Разница между @Delegate, @Mixin и чертами в Groovy?

Будет ли кто-нибудь объяснить, когда я хотел бы использоватьGroovy Черты против Mixins (@Mixin) против Делегатов (@Delegate)? Может быть, помогут некоторые компромиссы и проблемы дизайна.

Кажется, что все они позволяют повторно использовать несколько «классов» поведения. Благодарю. :-)

Эта тема тоже была полезна:Разница между преобразованиями @Delegate и @Mixin AST в Groovy