List<PsiMember> (@NotNull MemberType type, @NotNull String name, PsiClass psiClass, PsiElement context) { List<PsiMember> result = null; for (PsiClass eachSuper : myAllSupers) { if (type == MemberType.METHOD) { PsiMethod[] methods = eachSuper.findMethodsByName(name, false); if (methods.length > 0) { if (result == null) result = new ArrayList<>(); Collections.addAll(result, methods); } } else { PsiMember member = type == MemberType.CLASS ? eachSuper.findInnerClassByName(name, false) : eachSuper.findFieldByName(name, false); if (member != null) { if (result == null) result = new ArrayList<>(); result.add(member); } } } if (type == MemberType.METHOD && psiClass != null && context != null) { List<PsiExtensionMethod> methods = PsiAugmentProvider.collectExtensionMethods(psiClass, name, context); if (!methods.isEmpty()) { if (result == null) result = new ArrayList<>(); result.addAll(methods); } } return result == null ? Collections.emptyList() : ContainerUtil.filter(result, e -> !skipInvalid(e)); }