boolean relaxed = FindBugsAnalysisProperties.isRelaxedMode();
boolean relaxed = FindBugsAnalysisFeatures.isRelaxedMode();
	private void analyzeMethod(ClassContext classContext, final Method method)	        throws CFGBuilderException, DataflowAnalysisException {		boolean sawCallToEquals = false;		JavaClass jclass = classContext.getJavaClass();		ConstantPoolGen cpg = classContext.getConstantPoolGen();		MethodGen methodGen = classContext.getMethodGen(method);		// Enqueue all of the potential violations we find in the method.		// Normally we'll only report the first highest-priority warning,		// but if in relaxed mode or if REPORT_ALL_REF_COMPARISONS is set,		// then we'll report everything.		LinkedList<WarningWithProperties> refComparisonList =			new LinkedList<WarningWithProperties>();		LinkedList<WarningWithProperties> stringComparisonList =			new LinkedList<WarningWithProperties>();		CFG cfg = classContext.getCFG(method);		DepthFirstSearch dfs = classContext.getDepthFirstSearch(method);		ExceptionSetFactory exceptionSetFactory =		        classContext.getExceptionSetFactory(method);		// Perform type analysis using our special type merger		// (which handles String types specially, keeping track of		// which ones appear to be dynamically created)		RefComparisonTypeMerger typeMerger =		        new RefComparisonTypeMerger(bugReporter, exceptionSetFactory);		RefComparisonTypeFrameModelingVisitor visitor =		        new RefComparisonTypeFrameModelingVisitor(methodGen.getConstantPool(), bugReporter);		TypeAnalysis typeAnalysis =		        new TypeAnalysis(methodGen, cfg, dfs, typeMerger, visitor, bugReporter, exceptionSetFactory);		TypeDataflow typeDataflow = new TypeDataflow(cfg, typeAnalysis);		typeDataflow.execute();		// Inspect Locations in the method for suspicious ref comparisons and calls to equals()		for (Iterator<Location> i = cfg.locationIterator(); i.hasNext();) {			Location location = i.next();			sawCallToEquals = inspectLocation(					sawCallToEquals,					jclass,					cpg,					methodGen,					refComparisonList,					stringComparisonList,					visitor,					typeDataflow,					location);		}				// Add method-wide properties to BugInstances		final boolean sawEquals = sawCallToEquals;		decorateWarnings(stringComparisonList, new WarningDecorator(){			public void decorate(WarningWithProperties warn) {				if (sawEquals) {					warn.propertySet.addProperty(RefComparisonWarningProperty.SAW_CALL_TO_EQUALS);				}								if (!(method.isPublic() || method.isProtected())) {					warn.propertySet.addProperty(RefComparisonWarningProperty.PRIVATE_METHOD);				}			}		});		decorateWarnings(refComparisonList, new WarningDecorator() {			public void decorate(WarningWithProperties warn) {				if (sawEquals) {					warn.propertySet.addProperty(RefComparisonWarningProperty.SAW_CALL_TO_EQUALS);				}			}		});				// Report violations		boolean relaxed = FindBugsAnalysisProperties.isRelaxedMode();		reportBest(classContext, method, stringComparisonList, relaxed);		reportBest(classContext, method, refComparisonList, relaxed);	}