List<MemberInfo> (PsiClass clazz, boolean includeInherited) { List<MemberInfo> result = new ArrayList<>(); Set<PsiClass> classes; if (includeInherited) { classes = InheritanceUtil.getSuperClasses(clazz); classes.add(clazz); } else { classes = Collections.singleton(clazz); } for (PsiClass aClass : classes) { if (CommonClassNames.JAVA_LANG_OBJECT.equals(aClass.getQualifiedName())) continue; MemberInfo.extractClassMembers(aClass, result, new MemberInfo.Filter<>() { @Override public boolean includeMember(PsiMember member) { if (!(member instanceof PsiMethod)) return false; if (member.hasModifierProperty(PsiModifier.PRIVATE) || (member.hasModifierProperty(PsiModifier.ABSTRACT) && member.getContainingClass() != clazz)) { return false; } return true; } }, false); } return result; }