@PossiblyNull public Analysis getAnalysis(Method method) throws CFGBuilderException, DataflowAnalysisException {
@CheckForNull public Analysis getAnalysis(Method method) throws CFGBuilderException, DataflowAnalysisException {
		@PossiblyNull public Analysis getAnalysis(Method method) throws CFGBuilderException, DataflowAnalysisException {			AnalysisResult<Analysis> result = map.get(method);			if (result == null) {				if (TIME_ANALYSES) {					++depth;					indent();					System.out.println("CC: Starting " + analysisName + " for " +					        SignatureConverter.convertMethodSignature(jclass, method) + ":");				}				long begin = System.currentTimeMillis();								// Create a new AnalysisResult				result = new AnalysisResult<Analysis>();				// Attempt to create the Analysis and store it in the AnalysisResult.				// If an exception occurs, record it in the AnalysisResult.				Analysis analysis = null;				try {					analysis = analyze(method);					result.setAnalysis(analysis);				} catch (CFGBuilderException e) {					result.setCFGBuilderException(e);				} catch (DataflowAnalysisException e) {					if (TIME_ANALYSES) {						long end = System.currentTimeMillis();						indent();						System.out.println("CC: " + analysisName + " killed by exception after " +						        (end - begin) + " millis");						e.printStackTrace();						--depth;					}					result.setDataflowAnalysisException(e);				} catch (AnalysisException e) {					result.setAnalysisException(e);				}				if (TIME_ANALYSES) {					long end = System.currentTimeMillis();					indent();					System.out.println("CC: finished " + analysisName + " in " + (end - begin) + " millis");					--depth;				}				// Cache the outcome of this analysis attempt.				map.put(method, result);			}						return result.getAnalysis();		}