Confluence support dynamically uploading plugins into a running instance of the
web application. It does this by loading each plugin in its own class loader which
checks for classes in the uploaded jar file, then in any jar files bundled in
the META-INF/lib
directory, then in the web server's default class loader.
This is great, except that because each plugin is in it's own class loader, it makes direct inter-plugin communication nigh-on impossible. This library works around that limitation by using a combination of serialization and reflection.