!--a11y-->
Class Loader References 
The class loading mechanisms use several different types of class loaders that have different roles and are connected with references to each other. The external view of the system makes direct contact with the references among loaders.
A reference from a loader (for example A) to another loader (B) means that the first loader (A) can load classes, loaded through another loader (B).
References between modules are used when you have at least two modules and there is dependence between them. The possible scenarios for dependences between modules are:
· Module A can work without module B, and module B can work without module A – in this case it is enough to set weak references between A and B.
· Module A can work without module B, but module B cannot work without module A – in this case A must have a weak reference to B, and B has a strong reference to A.
· Module A cannot work without module B, but module B can work without module A – here A must have a strong reference to B, and B has a weak reference to A.
· Module A cannot work without module B, and module B cannot work without module A – here A must have a strong reference to B, and B has a strong reference to A.
The difference between the parent and reference relation is that reference is a one-to-zero-or-many relation and is only one level deep (only direct references can be traversed through try-to-load process of a loader).
