1. A machine-readable medium comprising one or more sequence of instructions stored therein, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of: determining whether a first method in a first class has a same name as a second method in a second class that is a subclass of the first class; in response to a determination that the first method has the same name as the second method, determining, by a compiler, whether each criterion of one or more criteria are satisfied, wherein the one or more criteria include a criterion that an erasure of a signature of the first method is the same as a signature of the second method; and allowing, by the compiler, the second method to directly override the first method only when all of the one or more criteria are satisfied, wherein the first method is a generified method while the second method is a non-generified method, wherein the generified method comprises a parameter is a generic type, and wherein the non-generified method does not comprise any parameter being the generic type.