Generally I have noticed the before modifier is carried through inheritance, however I have come across a scenario where this does not seem to be the case.
The case is where the before modifier is applied to a 'provides' installed method, which is then adjusted using the 'has +$var' syntax. For some reason, objects of the extended class no longer see the before modifier. See code below if none of that made sense. Is this 'feature' intentional? (actually I am hoping someone will say it is a bug ;-) It threw a big spanner in the works of an otherwise very elegant and compact object hierarchy. Sorry if there was something glaringly obvious in the documentation explaining this... #!/usr/bin/perl -w package Foo; use Moose; use MooseX::AttributeHelpers; has things => (is => 'rw' ,isa => 'ArrayRef[Str]' ,metaclass => 'Collection::Array' ,default => sub { [] } ,provides => { push => 'add_thing' } ); before add_thing => sub { warn "before\n" }; 1; package Bar; use Moose; extends 'Foo'; has '+things' => (lazy => 1); 1; my $list1 = new Foo; my $list2 = new Bar; $list1->add_thing("bob"); // This line results in 'before' being printed $list2->add_thing("jim"); // This line does not!