boolean inheritedEqualsIsFinal = false;
boolean inheritedEqualsIsAbstract = false;
boolean inheritedEqualsFromAbstractClass = false;
XMethod inheritedEquals = null;
if (!hasEqualsObject) {
XClass we = Lookup.findImplementor(getXClass(), "equals", "(Ljava/lang/Object;)Z", false, bugReporter);
if (we == null || we.equals(getXClass())) {
whereEqual = "java.lang.Object";
} else {
inheritedEqualsFromAbstractClass = we.isAbstract();
whereEqual = we.getClassDescriptor().getDottedClassName();
inheritedEquals = we.findMethod("equals", "(Ljava/lang/Object;)Z", false);
if (inheritedEquals != null) {
inheritedEqualsIsFinal = inheritedEquals.isFinal();
inheritedEqualsIsAbstract = inheritedEquals.isAbstract();
}
}
}
boolean usesDefaultEquals = whereEqual.equals("java.lang.Object");
String whereHashCode = getDottedClassName();
if (!hasHashCode) {
XClass wh = Lookup.findSuperImplementor(getXClass(), "hashCode", "()I", false, bugReporter);
if (wh == null) {
whereHashCode = "java.lang.Object";
} else {
whereHashCode = wh.getClassDescriptor().getDottedClassName();
XMethod m = wh.findMethod("hashCode", "()I", false);
if (m != null && m.isFinal()) {
inheritedHashCodeIsFinal = true;
}
}
}