for (Map.Entry<ValueNumber, Set<Location>> e  : nullValueGuaranteedDerefMap.entrySet()) {
for (Map.Entry<ValueNumber, NullValueUnconditionalDeref> e  : nullValueGuaranteedDerefMap.entrySet()) {
	private void examineNullValues() throws CFGBuilderException, DataflowAnalysisException {		Set<LocationWhereValueBecomesNull> locationWhereValueBecomesNullSet =			invDataflow.getAnalysis().getLocationWhereValueBecomesNullSet();		// For each value number that is null somewhere in the		// method, collect the set of locations where it becomes null.		// FIXME: we may see some locations that are not guaranteed to be dereferenced (how to fix this?)		Map<ValueNumber, Set<Location>> nullValueAssignmentMap =			new HashMap<ValueNumber, Set<Location>>();		for (LocationWhereValueBecomesNull lwvbn : locationWhereValueBecomesNullSet) {			Set<Location> locationSet = nullValueAssignmentMap.get(lwvbn.getValueNumber());			if (locationSet == null) {				locationSet = new HashSet<Location>();				nullValueAssignmentMap.put(lwvbn.getValueNumber(), locationSet);			}			locationSet.add(lwvbn.getLocation());		}				// Inspect the method for locations where a null value is guaranteed to		// be dereferenced.  Add the dereference locations		Map<ValueNumber, Set<Location>> nullValueGuaranteedDerefMap =			new HashMap<ValueNumber, Set<Location>>();				// Check every location		for (Iterator<Location> i = classContext.getCFG(method).locationIterator(); i.hasNext();) {			Location location = i.next();						if (DEBUG_DEREFS) {				System.out.println("At location " + //location.getBasicBlock().getId() + ":" +						location);			}						checkForUnconditionallyDereferencedNullValues(					nullValueGuaranteedDerefMap,					vnaDataflow.getFactAtLocation(location),					invDataflow.getFactAtLocation(location),					uvdDataflow.getFactAfterLocation(location));		}				// Check every non-exception control edge		for (Iterator<Edge> i = classContext.getCFG(method).edgeIterator(); i.hasNext();) {			Edge edge = i.next();						if (edge.isExceptionEdge()) {				continue;			}						if (DEBUG_DEREFS) {				System.out.println("On edge " + edge.formatAsString(false));			}						checkForUnconditionallyDereferencedNullValues(					nullValueGuaranteedDerefMap,					/*vnaDataflow.getFactOnEdge(edge)*/					vnaDataflow.getResultFact(edge.getSource()),					invDataflow.getFactOnEdge(edge),					uvdDataflow.getFactOnEdge(edge));		}				// Report 		for (Map.Entry<ValueNumber, Set<Location>> e  : nullValueGuaranteedDerefMap.entrySet()) {			ValueNumber valueNumber = e.getKey();			Set<Location> derefLocationSet = e.getValue();			Set<Location> assignedNullLocationSet = nullValueAssignmentMap.get(valueNumber);			if (assignedNullLocationSet == null) {				if (DEBUG_DEREFS) {					String where = classContext.getJavaClass().getClassName() + "." + method.getName() + ":" + method.getSignature();					System.out.println("Problem at " + where);					for (Location loc : derefLocationSet) {						System.out.println("Dereference at " + loc);					}				}				assert false: "No assigned NullLocationSet for " + valueNumber + " in " + nullValueAssignmentMap.keySet();				assignedNullLocationSet = Collections.EMPTY_SET;			}			collector.foundGuaranteedNullDeref(assignedNullLocationSet, derefLocationSet, valueNumber);		}	}