use Moops; use Data::Dx; class Special; class Foo { method _actual_work { return 'foo', Special->new } method my_method(--> Any) { return $self->_actual_work } method my_method_special(--> InstanceOf['Special']) { return ($self->_actual_work)[1] } method my_method_string(--> Str) { ($self->_actual_work)[0] } } my $f = Foo->new; Dx $f->my_method; Dx $f->my_method_special; Dx $f->my_method_string;