There is a sticking point though. The mix-in may want to call an internal method, as:
However, the way the OO works, this method is expected in the package that has been mixed into, although you don't want to export it there.
Cees Hek pointed out a simple solution to this, which I managed to miss for several years:
Passing in $self like that keeps the method internal to the mix-in as desired.