Classloader created on a local member to define a class from a bytecode loaded from a remote source.
We use a classloader per each class loaded from a remote source as it allows us to discard the classloader
and reload the class via another classloader as we see fit.
bytecodes of inner/anonymous classes are kept with their parent classes. If there is nested inner classes,
they are also kept in the same class loader.
Delegation model:
1. When the request matches the specific classname then it will provide the class on its own
2. Then it delegates to the parent classloader - that's usually a regular classloader loading classes
from a local classpath only
3. Finally it delegates to
ClassLocator
which may initiate a remote lookup