public static @Nullable LanguageLevel getLastIncompatibleLanguageLevel(@NotNull PsiMember member, @NotNull LanguageLevel languageLevel) {
    if (member instanceof PsiAnonymousClass) return null;
    PsiClass containingClass = member.getContainingClass();
    if (containingClass instanceof PsiAnonymousClass) return null;
    if (member instanceof PsiClass && !(member.getParent() instanceof PsiClass || member.getParent() instanceof PsiFile)) return null;
    String signature = getSignature(member);
    if (signature == null) return null;
    LanguageLevel lastLanguageLevel = getLastIncompatibleLanguageLevelForSignature(signature, languageLevel);
    if (lastLanguageLevel != null) {
      if (member instanceof PsiMethod && !((PsiMethod)member).isConstructor()) {
        LanguageLevel lowestSuperLanguageLevel = lastLanguageLevel;
        for (PsiMethod method : ((PsiMethod)member).findSuperMethods()) {
          String superSignature = getSignature(method);
          if (superSignature == null) return null;
          LanguageLevel lastSuperLanguageLevel = getLastIncompatibleLanguageLevelForSignature(superSignature, languageLevel);
          if (lastSuperLanguageLevel == null) return null;
          if (lastSuperLanguageLevel.isLessThan(lowestSuperLanguageLevel)) {
            lowestSuperLanguageLevel = lastSuperLanguageLevel;
          }
        }
        return lowestSuperLanguageLevel;
      }
    }
    return lastLanguageLevel;
  }
public static @Nullable LanguageLevel getLastIncompatibleLanguageLevel(@NotNull PsiMember member, @NotNull LanguageLevel languageLevel)