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.
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