int argSlot = invFrame.getArgumentSlot(i, numParams);
int argSlot = vnaFrame.getArgumentSlot(i, numParams);
	private void checkUnconditionalDerefDatabase(			Location location,			ValueNumberFrame vnaFrame,			UnconditionalValueDerefSet fact) throws DataflowAnalysisException {				ParameterNullnessPropertyDatabase database =			AnalysisContext.currentAnalysisContext().getUnconditionalDerefParamDatabase();		if (database == null) {			if (DEBUG_CHECK_CALLS) {				System.out.println("no database!");			}			return;		}				InvokeInstruction inv = (InvokeInstruction) location.getHandle().getInstruction();		TypeFrame typeFrame = typeDataflow.getFactAtLocation(location);		if (!typeFrame.isValid()) {			if (DEBUG_CHECK_CALLS) {				System.out.println("invalid type frame!");			}			return;		}				SignatureParser sigParser = new SignatureParser(inv.getSignature(methodGen.getConstantPool()));		int numParams = sigParser.getNumParameters();				try {			Set<JavaClassAndMethod> targetSet = Hierarchy.resolveMethodCallTargets(					inv,					typeFrame,					methodGen.getConstantPool());						if (targetSet.isEmpty()) {				return;			}						// Compute the intersection of all properties			ParameterNullnessProperty derefParamSet = null;			for (JavaClassAndMethod target : targetSet) {				if (DEBUG_CHECK_CALLS) {					System.out.print("Checking " + target + ": ");				}								ParameterNullnessProperty targetDerefParamSet = database.getProperty(target.toXMethod());				if (targetDerefParamSet == null) {					// Hmm...no information for this target.					// Just ignore it.					if (DEBUG_CHECK_CALLS) {						System.out.println(" ==> unknown");					}					continue;				}								if (DEBUG_CHECK_CALLS) {					System.out.println("==> " + targetDerefParamSet);				}				if (derefParamSet == null) {					derefParamSet = new ParameterNullnessProperty();					derefParamSet.copyFrom(targetDerefParamSet);				} else {					derefParamSet.intersectWith(targetDerefParamSet);				}			}						if (derefParamSet == null || derefParamSet.isEmpty()) {				return;			}			if (DEBUG_CHECK_CALLS) {				System.out.println("** Summary of call: " + derefParamSet);			}						IsNullValueFrame invFrame = null;			if (IGNORE_DEREF_OF_NONNULL && invDataflow != null) {				invFrame = invDataflow.getFactAfterLocation(location);				if (!invFrame.isValid()) {					invFrame = null;				}			}						for (int i = 0; i < numParams; i++) {				if (!derefParamSet.isNonNull(i)) {					continue;				}								int argSlot = invFrame.getArgumentSlot(i, numParams);				if (invFrame != null) {					IsNullValue val = invFrame.getValue(argSlot);					if (val.isDefinitelyNotNull()) {						continue;					}				}								fact.addDeref(vnaFrame.getValue(argSlot), location);				if (DEBUG_CHECK_CALLS) {					System.out.println("Adding deref of " + vnaFrame.getValue(argSlot) + " at location " + location);				}			}		} catch (ClassNotFoundException e) {			AnalysisContext.reportMissingClass(e);		}	}