}
private boolean shouldGenerateCanEqual(@NotNull PsiClass psiClass) {
boolean result = true;
//needsCanEqual = !isFinal || !isDirectDescendantOfObject
final PsiClass superClass = psiClass.getSuperClass();
if (null == superClass && psiClass.hasModifierProperty(PsiModifier.FINAL)) {
result = false;
}
if (null != superClass && psiClass.hasModifierProperty(PsiModifier.FINAL)) {
final Project project = psiClass.getProject();
final PsiManager manager = psiClass.getContainingFile().getManager();
final PsiClassType javaLangObject = PsiType.getJavaLangObject(manager, GlobalSearchScope.projectScope(project));
result = !superClass.equals(javaLangObject.resolve());
}
return result;
}