I finally got round to completely gutting
Module::Pluggable and refactoring it.
The upshot of this is that there's now
Module::Pluggable::Object which has object orientated, as the name suggests, which makes it much easier to reafctor out into smaller methods which in turn makes it easier to subclass. The inner package stuff is refactored out into
Devel::InnerPackage and then
Module::Pluggable itself just has an import {} sub that instantiates a
Module::Pluggable::Object and calls it.
This means that instead of shoving new functionality into the main class which was becoming increasingly large and brittle, people can sub class.
Less work for me. Yay!