@NotNull List<PsiMember> calcMembersByName(@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));
    }
@NotNull List<PsiMember> calcMembersByName(@NotNull MemberType type, @NotNull String name, PsiClass psiClass, PsiElement context)