if (DEBUG) System.out.println("Making resource nonexistent on load of final field from block " + source.getId());
	public void meetInto(ResourceValueFrame fact, Edge edge, ResourceValueFrame result) throws DataflowAnalysisException {		BasicBlock source = edge.getSource();		BasicBlock dest = edge.getDest();		ResourceValueFrame tmpFact = null;		if (source.isExceptionThrower()) {			// Ignore exceptions thrown by load of final instance fields.			// We'll just assume (in the name of reducing false positives)			// that they got initialized to something.			InstructionHandle handle = source.getExceptionThrower();			if (isFinalFieldLoad(handle)) {				tmpFact = modifyFrame(fact, tmpFact);				tmpFact.setStatus(ResourceValueFrame.NONEXISTENT);			} else if (fact.getStatus() == ResourceValueFrame.OPEN) {				// If status is OPEN, downgrade to OPEN_ON_EXCEPTION_PATH				tmpFact = modifyFrame(fact, tmpFact);				tmpFact.setStatus(ResourceValueFrame.OPEN_ON_EXCEPTION_PATH);			}		}		if (dest.isExceptionHandler()) {			// Clear stack, push value for exception			if (fact.isValid()) {				tmpFact = modifyFrame(fact, tmpFact);				tmpFact.clearStack();				tmpFact.pushValue(ResourceValue.notInstance());				// Special case: if the instruction that closes the resource				// throws an exception, we consider the resource to be successfully				// closed anyway.				InstructionHandle exceptionThrower = source.getExceptionThrower();				assert exceptionThrower != null; // is it possible to reach an exception handler by a non-exception edge?				if (resourceTracker.isResourceClose(dest, exceptionThrower, methodGen.getConstantPool(), resource, fact)) {					tmpFact.setStatus(ResourceValueFrame.CLOSED);					if (DEBUG) System.out.print("(failed attempt to close)");				}			}		}		// Make the resource nonexistent if it is compared against null		int edgeType = edge.getType();		if (edgeType == IFCMP_EDGE || edgeType == FALL_THROUGH_EDGE) {			InstructionHandle lastInSourceHandle = source.getLastInstruction();			if (lastInSourceHandle != null) {				Instruction lastInSource = lastInSourceHandle.getInstruction();				if (lastInSource instanceof IFNULL || lastInSource instanceof IFNONNULL) {					// Get the frame at the if statement					ResourceValueFrame frameAtIf = getFactAtLocation(new Location(lastInSourceHandle, source));					ResourceValue topValue = frameAtIf.getValue(frameAtIf.getNumSlots() - 1);					if (topValue.isInstance()) {						if ((lastInSource instanceof IFNULL && edgeType == IFCMP_EDGE) ||							(lastInSource instanceof IFNONNULL && edgeType == FALL_THROUGH_EDGE)) {							//System.out.println("**** making resource nonexistent on edge "+edge.getId());							tmpFact = modifyFrame(fact, tmpFact);							tmpFact.setStatus(ResourceValueFrame.NONEXISTENT);						}					}				}			}		}		if (tmpFact != null)			fact = tmpFact;		result.mergeWith(fact);	}