On Tue, Mar 29, 2011 at 5:09 AM, Peter Gordon <pe...@pg-consultants.com> wrote: > has '+value' => ( > isa => 'Bool', > );
Without looking at the details of Mouse, I'd guess this right here is your cuprit. Assuming Mouse follows the Moose implementation this *copies* the attribute definition into the local class, and generates a local accessor method that overrides/shadows the parent class method. You're adding logic to the generated accessor, the method in MyValueBool must be different from the method in MyValue. Method modifiers are bound directly to the method they wrap. So since MyValueBool has shadowed the value() method from MyValue (with it's own value() method that type checks for Bool), the around modifier isn't called since the value() method it is bound to isn't called. I can't think of an easy work around to this other than to be aware that it is what it is and to design accordingly. -Chris