boolean pushValue = !methodSig.endsWith(")V");
if (doForwardSubstitution()) {   boolean pushValue = !methodSig.endsWith(")V");  if (xfield.isStatic()) storeStaticField((StaticField) xfield, obj, pushValue); else storeInstanceField((InstanceField) xfield, obj, pushValue);
	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.print("[found access of class object " + className + "]");						frame.pushValue(getClassObjectValue(className));						return;					}				} catch (DataflowAnalysisException e) {					throw new AnalysisException("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 /*&& doRedundantLoadElimination(xfield)*/) {					if (loadedFieldSet.instructionIsLoad(handle)) {						if (xfield.isStatic())							loadStaticField((StaticField) xfield, obj);						else							loadInstanceField((InstanceField) xfield, obj);					} else {						// 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;				}			}		}		handleNormalInstruction(obj);	}