$thing->break if $thing->isa("Fragile"); #### package MyApp::Plugin::Stage1 { use Role::Tiny }; package MyApp::Plugin::Stage2 { use Role::Tiny }; package MyApp::Plugin::Frobnicate { use Role::Tiny::With; with "MyApp::Plugin::Stage2"; } ...; foreach my $plugin ($self->plugins) { # The "DOES" method is like "isa", but checks roles # instead of checking inheritance. # if ($plugin->DOES("MyApp::Plugin::Stage2")) { $plugin->activate($self); } }