use strict; use warnings; package BaseClass::Meta::Role; use Moose::Role; package BaseClass; use Moose; use Moose::Util::MetaRole; BEGIN { Moose::Util::MetaRole::apply_metaroles( for => __PACKAGE__, class_metaroles => { class => [qw/ BaseClass::Meta::Role /], }, ); extends qw/MooseX::MethodAttributes::Inheritable/; } sub moo : Moo {} { my $affe_was_run = 0; sub affe : Birne { $affe_was_run++; } sub no_calls_to_affe { $affe_was_run } } sub foo : Foo {} sub bar : Baz {} { no warnings 'redefine'; sub moo : Moo {} } 1;