
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. simple use moosex::role::strict instead of moose::role and overriding a role's method becomes a composition-time failure.
warning: this is alpha code. more features to be added later.