if (ACCURATE_EXCEPTIONS) {
if (FORCE_ACCURATE_EXCEPTIONS || AnalysisContext.currentAnalysisContext().getBoolProperty(AnalysisFeatures.ACCURATE_EXCEPTIONS)) {
	public void meetInto(TypeFrame fact, Edge edge, TypeFrame result) throws DataflowAnalysisException {		BasicBlock basicBlock = edge.getTarget();		if (fact.isValid()) {			TypeFrame tmpFact = null;			// Handling an exception?			if (basicBlock.isExceptionHandler()) {				tmpFact = modifyFrame(fact, tmpFact);								// Special case: when merging predecessor facts for entry to				// an exception handler, we clear the stack and push a				// single entry for the exception object.  That way, the locals				// can still be merged.				CodeExceptionGen exceptionGen = basicBlock.getExceptionGen();				tmpFact.clearStack();								// Determine the type of exception(s) caught.				Type catchType = null;								if (ACCURATE_EXCEPTIONS) {					try {						// Ideally, the exceptions that can be propagated						// on this edge has already been computed.						CachedExceptionSet cachedExceptionSet = getCachedExceptionSet(edge.getSource());						ExceptionSet edgeExceptionSet = cachedExceptionSet.getEdgeExceptionSet(edge);						if (!edgeExceptionSet.isEmpty()) {							//System.out.println("Using computed edge exception set!");							catchType = ExceptionObjectType.fromExceptionSet(edgeExceptionSet);						}					} catch (ClassNotFoundException e) {						lookupFailureCallback.reportMissingClass(e);					}				}								if (catchType == null) {					// No information about propagated exceptions, so					// pick a type conservatively using the handler catch type.					catchType = exceptionGen.getCatchType();					if (catchType == null)						catchType = Type.THROWABLE; // handle catches anything throwable				}								tmpFact.pushValue(catchType);			}						// See if we can make some types more precise due to			// a successful instanceof check in the source block.			if (valueNumberDataflow != null) {				tmpFact = handleInstanceOfBranch(fact, tmpFact, edge);			}			if (tmpFact != null) {				fact = tmpFact;			}		}		mergeInto(fact, result);	}