static HighlightInfo.Builder checkFunctionalInterface(@NotNull PsiAnnotation annotation, @NotNull LanguageLevel languageLevel) {
    if (JavaFeature.LAMBDA_EXPRESSIONS.isSufficient(languageLevel) && 
        Comparing.strEqual(annotation.getQualifiedName(), CommonClassNames.JAVA_LANG_FUNCTIONAL_INTERFACE)) {
      PsiAnnotationOwner owner = annotation.getOwner();
      if (owner instanceof PsiModifierList) {
        PsiElement parent = ((PsiModifierList)owner).getParent();
        if (parent instanceof PsiClass) {
          String errorMessage = LambdaHighlightingUtil.checkInterfaceFunctional((PsiClass)parent, JavaErrorBundle.message("not.a.functional.interface", ((PsiClass)parent).getName()));
          if (errorMessage != null) {
            HighlightInfo.Builder info =
              HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(annotation).descriptionAndTooltip(errorMessage);
            IntentionAction action = QuickFixFactory.getInstance().createDeleteFix(annotation);
            info.registerFix(action, null, null, null, null);
            return info;
          }

          if (((PsiClass)parent).hasModifierProperty(PsiModifier.SEALED)) {
            HighlightInfo.Builder info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR)
              .range(annotation)
              .descriptionAndTooltip(
                JavaErrorBundle.message("functional.interface.must.not.be.sealed.error.description", PsiModifier.SEALED));
            IntentionAction action = QuickFixFactory.getInstance().createDeleteFix(annotation);
            info.registerFix(action, null, null, null, null);
            return info;
          }
        }
      }
    }
    return null;
  }
static HighlightInfo.Builder checkFunctionalInterface(@NotNull PsiAnnotation annotation, @NotNull LanguageLevel languageLevel)