void (final PsiClass aClass, final PsiClass bClass, final Set<? super PsiClass> descendants) { if (bClass.hasModifierProperty(PsiModifier.FINAL)) return; if (aClass.isInheritor(bClass, true)) { descendants.add(aClass); } else { for (PsiClass bInheritor : ClassInheritorsSearch.search(bClass, false)) { getGreatestLowerClasses(bInheritor, aClass, descendants); } } }