When using Moose::Role, a class which provides a method a role provides will silently override that method. This can cause strange, hard-to-debug errors when the role's methods are not called. Simply use MooseX::Role::WarnOnConflict instead of Moose::Role and overriding a role's method becomes a composition-time warning. See the synopsis for a resolution.