The system classes are loaded and defined by the VM bootstrap class loader (null).
In modular world, the system classes are modularized into multiple modules and many
of which will be loaded by its own (non-null) module loader.
The JDK implementation have the assumption that the defining class loader of
all system classes is null and this needs to be fixed to prepare for modularization.
Typical patterns are:
Class.forName(classname, false, null) should be changed to:
Class.forName(classname, false, <loader of the current class>)
if (loader == null) condition check should be modified to check if the loader
is responsible for loading system classes.