Code generators need to preserve the points of possible initialization of a class or
interface, inserting an invocation of the initialization procedure just described. If
this initialization procedure completes normally and the Class
object is fully initialized and ready for use, then the invocation of the initialization procedure is no
longer necessary and it may be eliminated from the code-for example, by patching it out or otherwise regenerating the code.
Compile-time analysis may, in some cases, be able to eliminate many of the checks that a type has been initialized from the generated code, if an initialization order for a group of related types can be determined. Such analysis must, however, fully account for the fact that Java is concurrent and that initialization code is unrestricted.