has 'successor' => ( is => 'rw', isa => 'ChainOfResposibilityIf', ); #### has 'successor' => ( is => 'rw', does => 'ChainOfResposibilityIf', # !!! ); #### use Moose::Util::TypeConstraints qw(role_type); has 'successor' => ( is => 'rw', isa => role_type('ChainOfResposibilityIf'), );