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