}
	private void checkEqualsComparison(			Location location,			JavaClass jclass,			MethodGen methodGen,			TypeDataflow typeDataflow) throws DataflowAnalysisException {		InstructionHandle handle = location.getHandle();		String sourceFile = jclass.getSourceFileName();		TypeFrame frame = typeDataflow.getFactAtLocation(location);		if (frame.getStackDepth() < 2)			throw new DataflowAnalysisException("Stack underflow", methodGen, handle);		int numSlots = frame.getNumSlots();		Type lhsType_ = frame.getValue(numSlots - 2);		Type rhsType_ = frame.getValue(numSlots - 1);		// Ignore top and bottom values		if (lhsType_.getType() == T_TOP || lhsType_.getType() == T_BOTTOM				|| rhsType_.getType() == T_TOP || rhsType_.getType() == T_BOTTOM)			return;		if (!(lhsType_ instanceof ReferenceType) || !(rhsType_ instanceof ReferenceType)) {			if (rhsType_.getType() == T_NULL) {				boolean isTestCase = false;				Method method = methodGen.getMethod();				if (method.getName().startsWith("test") && method.isPublic() && method.getSignature().equals("()V")						|| methodGen.getClassName().endsWith("Test"))					isTestCase = true;				// A literal null value was passed directly to equals().				if (!isTestCase)					bugReporter.reportBug(new BugInstance(this, "EC_NULL_ARG", NORMAL_PRIORITY)					.addClassAndMethod(methodGen, sourceFile)					.addSourceLine(this.classContext, methodGen, sourceFile, location.getHandle()));			} else if (lhsType_.getType() == T_NULL) {				// Hmm...in this case, equals() is being invoked on				// a literal null value.  This is really the				// purview of FindNullDeref.  So, we'll just do nothing.			} else {				bugReporter.logError("equals() used to compare non-object type(s) " +						lhsType_ + " and " + rhsType_ +						" in " +						SignatureConverter.convertMethodSignature(methodGen) +						" at " + location.getHandle());			}			return;		}		if (lhsType_ instanceof ArrayType && rhsType_ instanceof ArrayType)			bugReporter.reportBug(new BugInstance(this, "EC_BAD_ARRAY_COMPARE", NORMAL_PRIORITY)			.addClassAndMethod(methodGen, sourceFile)			.addType(lhsType_.getSignature())			.addType(rhsType_.getSignature())			.addSourceLine(this.classContext, methodGen, sourceFile, location.getHandle())			);		IncompatibleTypes result = IncompatibleTypes.getPriorityForAssumingCompatible(lhsType_, rhsType_);		int priorityModifier = 0;		if (methodGen.getName().startsWith("test") && methodGen.getSignature().equals("()V")) {			try {				if (Hierarchy.isSubtype(methodGen.getClassName(), "junit.framework.TestCase"))					priorityModifier=2;			} catch (ClassNotFoundException e) { 				AnalysisContext.reportMissingClass(e);			}		}		if (result == IncompatibleTypes.ARRAY_AND_NON_ARRAY || result == IncompatibleTypes.ARRAY_AND_OBJECT) 			bugReporter.reportBug(new BugInstance(this, "EC_ARRAY_AND_NONARRAY", result.getPriority())			.addClassAndMethod(methodGen, sourceFile)			.addType(lhsType_.getSignature())			.addType(rhsType_.getSignature())			.addSourceLine(this.classContext, methodGen, sourceFile, location.getHandle())			);		else if (result == IncompatibleTypes.INCOMPATIBLE_CLASSES) 			bugReporter.reportBug(new BugInstance(this, "EC_UNRELATED_TYPES", result.getPriority() + priorityModifier)			.addClassAndMethod(methodGen, sourceFile)			.addType(lhsType_.getSignature())			.addType(rhsType_.getSignature())			.addSourceLine(this.classContext, methodGen, sourceFile, location.getHandle())			);		else if (result == IncompatibleTypes.UNRELATED_CLASS_AND_INTERFACE) 			bugReporter.reportBug(new BugInstance(this, "EC_UNRELATED_CLASS_AND_INTERFACE", result.getPriority())			.addClassAndMethod(methodGen, sourceFile)			.addType(lhsType_.getSignature())			.addType(rhsType_.getSignature())			.addSourceLine(this.classContext, methodGen, sourceFile, location.getHandle())			);		else if (result == IncompatibleTypes.UNRELATED_INTERFACES) 			bugReporter.reportBug(new BugInstance(this, "EC_UNRELATED_INTERFACES", result.getPriority())			.addClassAndMethod(methodGen, sourceFile)			.addType(lhsType_.getSignature())			.addType(rhsType_.getSignature())			.addSourceLine(this.classContext, methodGen, sourceFile, location.getHandle())			);	}