In the below, the foo() from Bar cannot fulfill the requires of Baz. Anything I'm missing? (I know that there's an easy workaround of an explicit "sub foo() { $_[0]->thing()->foo() }" in Bar; it's simply not what one would prefer.)
package Foo; use Moose::Role; sub foo {}; package Bar; use Moose::Role; has thing => ( is => 'ro', isa => 'Foo', handles => [ 'foo' ], ); package Baz; use Moose::Role; requires 'foo'; package Quux; use Moose; with qw< Bar Baz >;