if (stringComparison != null) bugReporter.reportBug(stringComparison);
if (stringComparison != null) { if (sawCallToEquals && stringComparison.getPriority() >= NORMAL_PRIORITY) {  stringComparison.setPriority( 1+stringComparison.getPriority()); } if (stringComparison.getPriority() >= NORMAL_PRIORITY && !(method.isPublic() || method.isProtected())) {  stringComparison.setPriority( 1+stringComparison.getPriority()); } if (stringComparison.getPriority() <= LOW_PRIORITY) { bugReporter.reportBug(stringComparison); } } if (refComparison != null) { if (false && sawCallToEquals)  {  refComparison.setPriority( 1+refComparison.getPriority()); } if (refComparison.getPriority() <= LOW_PRIORITY) bugReporter.reportBug(refComparison); }
	private void analyzeMethod(ClassContext classContext, Method method)		throws CFGBuilderException, DataflowAnalysisException {		JavaClass jclass = classContext.getJavaClass();		ConstantPoolGen cpg = classContext.getConstantPoolGen();		MethodGen methodGen = classContext.getMethodGen(method);		// Report at most one String comparison per method.		// We report the first highest priority warning.		stringComparison = null;		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);		TypeFrameModelingVisitor 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();		for (Iterator<Location> i = cfg.locationIterator(); i.hasNext(); ) {			Location location = i.next();			Instruction ins = location.getHandle().getInstruction();			short opcode = ins.getOpcode();			if (opcode == Constants.IF_ACMPEQ || opcode == Constants.IF_ACMPNE) {				checkRefComparison(location, jclass, methodGen, typeDataflow);			} else if (invokeInstanceSet.get(opcode)) {				InvokeInstruction inv = (InvokeInstruction) ins;				String methodName = inv.getMethodName(cpg);				String methodSig = inv.getSignature(cpg);				if (methodName.equals("equals") && methodSig.equals("(Ljava/lang/Object;)Z"))					checkEqualsComparison(location, jclass, methodGen, typeDataflow);			}		}		// If a String reference comparison was found in the method,		// report it		if (stringComparison != null)			bugReporter.reportBug(stringComparison);	}