List<PsiMethod> () { final PsiReference[] refs = MethodReferencesSearch.search(myMethod).toArray(PsiReference.EMPTY_ARRAY); List<PsiMethod> result = new ArrayList<>(); for (PsiReference ref : refs) { final PsiElement element = ref.getElement(); if (!(element instanceof PsiReferenceExpression refExpr) || !(refExpr.getQualifierExpression() instanceof PsiSuperExpression)) { final PsiElement enclosingContext = PsiTreeUtil.getParentOfType(element, PsiMethod.class, PsiClass.class); if (enclosingContext instanceof PsiMethod enclosingMethod && !result.contains(enclosingContext) && !getMember().equals(enclosingContext) && !myCalled.contains(getMember()) && //do not add recursive methods noLibraryInheritors(enclosingMethod)) { result.add(enclosingMethod); } else if (element instanceof PsiClass aClass) { final PsiMethod method = JavaPsiFacade.getElementFactory(myProject).createMethodFromText(aClass.getName() + "(){}", aClass); if (!result.contains(method)) { result.add(method); } } } } return result; }