Probably use Moose roles and have the Tests and Actions ask their own Examiner for the dispatcher in the role method, rather than having the dispatcher be contained by the tests and actions themselves.
Assuming they know their examiners, something like:
package Logging; #the role
use Moose::Role;
requires 'examiner';
# ask my examiner, rather than contain this directly.
sub dispatcher {
return $self->examiner->dispatcher();
}
package MyTest; # the test class
use Moose;
with 'Logging';
#...later...
$self->dispatcher->warn("this example might work?");