if (argumentTypeList.length == 0 && accessField.isStatic()) {  loadStaticField((StaticField) accessField, obj); return; } else if (argumentTypeList.length == 1 && classSig.equals(argumentTypeList[0].getSignature()) && !accessField.isStatic()) {  loadInstanceField((InstanceField) accessField, obj); return; }
if (access.isStatic()) storeStaticField((StaticField) access.getField(), obj, true); else storeInstanceField((InstanceField) access.getField(), obj, true);
	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 IllegalStateException("stack underflow at " + handle);				}			} else if (methodName.startsWith("access$")) {				String className = obj.getClassName(cpg);				try {					Map<String, XField> accessMap = InnerClassAccessMap.instance().getAccessMapForClass(className);					XField accessField = accessMap.get(methodName);					if (accessField != null) {						// Field access from inner class to outer						Type[] argumentTypeList = Type.getArgumentTypes(methodSig);						Type returnType = Type.getReturnType(methodSig);						String classSig = "L" + className.replace('.', '/') + ";";								if (returnType.equals(Type.VOID)) {							// Store							if (argumentTypeList.length == 1 && accessField.isStatic()) {								// Static store								storeStaticField((StaticField) accessField, obj);								return;							} else if (argumentTypeList.length == 2									&& classSig.equals(argumentTypeList[0].getSignature())									&& !accessField.isStatic()) {								// Instance store								storeInstanceField((InstanceField) accessField, obj);								return;							}						} else {							// Load							if (argumentTypeList.length == 0 && accessField.isStatic()) {								// Static load								loadStaticField((StaticField) accessField, obj);								return;							} else if (argumentTypeList.length == 1									&& classSig.equals(argumentTypeList[0].getSignature())									&& !accessField.isStatic()) {								// Instance load								loadInstanceField((InstanceField) accessField, obj);								return;							}						}					}				} catch (ClassNotFoundException e) {					lookupFailureCallback.reportMissingClass(e);				}			}		}		handleNormalInstruction(obj);	}