if (methodName.equals("class$") && methodSig.equals("(Ljava/lang/String;)Ljava/lang/Class;")) {
if ((methodName.equals("forName") && targetClassName.equals("java.lang.Class") || methodName.equals("class$")) && methodSig.equals("(Ljava/lang/String;)Ljava/lang/Class;")) {
	public void visitINVOKESTATIC(INVOKESTATIC obj) {		if (REDUNDANT_LOAD_ELIMINATION) {			ConstantPoolGen cpg = getCPG();			String methodName = obj.getName(cpg);			String methodSig = obj.getSignature(cpg);			if (methodName.equals("class$") && methodSig.equals("(Ljava/lang/String;)Ljava/lang/Class;")) {				// Access of a Class object				ValueNumberFrame frame = getFrame();				try {					ValueNumber arg = frame.getTopValue();					String className = stringConstantMap.get(arg);					if (className != null) {						frame.popValue();						if (RLE_DEBUG) System.out.println("[found access of class object " + className + "]");						frame.pushValue(getClassObjectValue(className));						return;					}				} catch (DataflowAnalysisException e) {					throw new InvalidBytecodeException("stack underflow", methodGen, handle, e);				}			} else if (Hierarchy.isInnerClassAccess(obj, cpg)) {				// Possible access of field via an inner-class access method				XField xfield = loadedFieldSet.getField(handle);				if (xfield != null) {					if (loadedFieldSet.instructionIsLoad(handle)) {						// Load via inner-class accessor						if (doRedundantLoadElimination()) {							if (xfield.isStatic())								loadStaticField((StaticField) xfield, obj);							else								loadInstanceField((InstanceField) xfield, obj);							return;						}					} else {						// Store via inner-class accessor						if (doForwardSubstitution()) {							// Some inner class access store methods							// return the value stored.							boolean pushValue = !methodSig.endsWith(")V");								if (xfield.isStatic())								storeStaticField((StaticField) xfield, obj, pushValue);							else								storeInstanceField((InstanceField) xfield, obj, pushValue);							return;						}					}				}			} else {				// Don't know what this method invocation is doing.				// Kill all loads.				killLoadsOfObjectsPassed(obj);				getFrame().killAllLoadsOf(null);			}		}		handleNormalInstruction(obj);	}