1. In a Java virtual machine system, a method for automated injection of Java bytecode instructions for Java load time optimization via runtime checking with upcasts, the method consisting of: in a processor couple to a memory having a process in the Java virtual machine system, the process configured for: generating an execution state for the Java bytecode instructions; generating a subclass configured to keep a history of the Java bytecode instructions that have modified the execution state; statically scanning a plurality of Java classes associated with the Java bytecode instructions to locate class file configurations and Java bytecode instruction patterns that cause loading of additional classes to complete a verification of each of the classes in the plurality of Java classes, the Java bytecode instruction patterns including a Java exception throw, a Java exception catch, an upcast of method arguments, an upcast of method returns, an upcast of field access and a dataflow merge of different classes; delaying the loading of the additional classes until required at a runtime; recording modifications that have been made to the execution state by the Java bytecode instructions; and applying the modifications to each of the bytecodes in the Java bytecode instructions.