}
   public void visitAfter(JavaClass obj) {	try {	if (!obj.isClass()) return;	if (getDottedClassName().equals("java.lang.Object")) return;	int accessFlags = obj.getAccessFlags();	// if ((accessFlags & ACC_ABSTRACT) != 0) return;	if ((accessFlags & ACC_INTERFACE) != 0) return;	String whereEqual = getDottedClassName();	if (!hasEqualsObject)  {		whereEqual = Lookup.findSuperImplementor(obj, "equals",					"(Ljava/lang/Object;)Z", bugReporter)			  .getClassName();		}	boolean usesDefaultEquals = whereEqual.equals("java.lang.Object");	String whereHashCode = getDottedClassName();	if (!hasHashCode)		whereHashCode = Lookup.findSuperImplementor(obj, "hashCode",					"()I", bugReporter)			  .getClassName();	boolean usesDefaultHashCode = whereHashCode.equals("java.lang.Object");	if (!hasEqualsObject &&  hasEqualsSelf) {		if (usesDefaultEquals) 		  bugReporter.reportBug(new BugInstance("EQ_SELF_USE_OBJECT", HIGH_PRIORITY).addClass(getDottedClassName()));		else		  bugReporter.reportBug(new BugInstance("EQ_SELF_NO_OBJECT", NORMAL_PRIORITY).addClass(getDottedClassName()));		}	/*	System.out.println("Class " + betterClassName);	System.out.println("usesDefaultEquals: " + usesDefaultEquals);	System.out.println("hasHashCode: : " + hasHashCode);	System.out.println("usesDefaultHashCode: " + usesDefaultHashCode);	System.out.println("hasEquals: : " + hasEqualsObject);	*/	if (!hasCompareToObject &&  hasCompareToSelf) {		if (!extendsObject)		  bugReporter.reportBug(new BugInstance("CO_SELF_NO_OBJECT", NORMAL_PRIORITY).addClass(getDottedClassName()));		}	// if (!hasFields) return;	if (hasHashCode && !(hasEqualsObject ||  hasEqualsSelf))  { 		/*		System.out.println("has hashCode, missing equals");		System.out.println("equals defined in " + whereEqual);		System.out.println("extendsObject: " + extendsObject);		*/		if (usesDefaultEquals) 		  bugReporter.reportBug(new BugInstance("HE_HASHCODE_USE_OBJECT_EQUALS", LOW_PRIORITY).addClass(getDottedClassName()));		else		  bugReporter.reportBug(new BugInstance("HE_HASHCODE_NO_EQUALS", LOW_PRIORITY). addClass(getDottedClassName()));		}	if (!hasHashCode && (hasEqualsObject ||  hasEqualsSelf))  {		if (usesDefaultHashCode) 		  bugReporter.reportBug(new BugInstance("HE_EQUALS_USE_HASHCODE", HIGH_PRIORITY).addClass(getDottedClassName()));		else		  bugReporter.reportBug(		    new BugInstance("HE_EQUALS_NO_HASHCODE", 			hasFields ? NORMAL_PRIORITY : LOW_PRIORITY)		    .addClass(getDottedClassName()));		}	} catch (NullPointerException e) {		/*		System.err.println("That was strange. Error in doing HE check on " + betterClassName);		e.printStackTrace();		*/		}	}