Classloader implementation to facilitate loading classes and resources from a collection of other classloaders.
Effectively it forms a proxy to one or more other classloaders.
The way it works:
- Get all (unique) classloaders from all provided classes
- For each class or resource that is 'requested':
- First try all provided classloaders and if we have a match, return that
- If no match was found: proceed with 'normal' classloading in 'current classpath' scope
In this particular context: only loadClass and getResource overrides are needed, since those
are the methods that a classloading and resource loading process will need.