static HighlightInfo.Builder checkInstantiationOfAbstractClass(@NotNull PsiClass aClass, @NotNull PsiElement highlightElement) {
    HighlightInfo.Builder errorResult = null;
    if (aClass.hasModifierProperty(PsiModifier.ABSTRACT) &&
        (!(highlightElement instanceof PsiNewExpression) || !(((PsiNewExpression)highlightElement).getType() instanceof PsiArrayType))) {
      String baseClassName = aClass.getName();
      PsiMethod anyAbstractMethod = ClassUtil.getAnyAbstractMethod(aClass);
      String message;
      if (aClass.isEnum()) {
        if (anyAbstractMethod == null || anyAbstractMethod.getContainingClass() != aClass) return null;
        message = JavaErrorBundle.message("enum.constant.must.implement.method", highlightElement.getText(),
                                          JavaHighlightUtil.formatMethod(anyAbstractMethod), baseClassName);
      }
      else {
        message = JavaErrorBundle.message("abstract.cannot.be.instantiated", baseClassName);
      }
      errorResult = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(highlightElement).descriptionAndTooltip(message);
      if (!aClass.isInterface() && anyAbstractMethod == null) {
        // suggest to make not abstract only if possible
        QuickFixAction.registerQuickFixActions(errorResult, null, JvmElementActionFactories.createModifierActions(aClass, MemberRequestsKt.modifierRequest(JvmModifier.ABSTRACT, false)));
      }
      if (anyAbstractMethod != null && highlightElement instanceof PsiNewExpression && ((PsiNewExpression)highlightElement).getClassReference() != null) {
        IntentionAction action = QuickFixFactory.getInstance().createImplementAbstractClassMethodsFix(highlightElement);
        errorResult.registerFix(action, null, null, null, null);
      }
    }
    return errorResult;
  }
static HighlightInfo.Builder checkInstantiationOfAbstractClass(@NotNull PsiClass aClass, @NotNull PsiElement highlightElement)