@Contract("null -> false")
    private boolean isModulePublicApi(@Nullable PsiMember member) {
      if (member == null || member instanceof PsiTypeParameter) return false;
      if (member.hasModifierProperty(PsiModifier.PUBLIC) || !isInFinalClass(member) && member.hasModifierProperty(PsiModifier.PROTECTED)) {
        PsiElement parent = member.getParent();
        if (parent instanceof PsiClass) {
          return isModulePublicApi((PsiClass)parent);
        }
        if (parent instanceof PsiJavaFile) {
          String packageName = ((PsiJavaFile)parent).getPackageName();
          return myExportedPackageNames.contains(packageName);
        }
      }
      return false;
    }
@Contract("null -> false")
    private boolean isModulePublicApi(@Nullable PsiMember member)