package AugmentationDetective; use Moose::Role; sub is_augmented { my ($self, $method_name) = @_; my $method = $self->meta->get_method($method_name); return blessed($method) && $method->isa('Moose::Meta::Method::Augmented'); } package C1; use Moose; with 'AugmentationDetective'; sub html { my $this = shift; return '' . $this->head . '' . inner() . '' . ''; } sub head { my $self = shift; return ''.($self->is_augmented('head')?inner():'').''; } package C2; use Moose; extends 'C1'; augment html => sub { return 'C2'; }; package main; warn C2->new->html;