String[] (PsiModifierList list, @NotNull PsiElement scope) { if (HighlightingFeature.SEALED_CLASSES.isAvailable(scope)) { if (list == null) { return CLASS_MODIFIERS_WITH_SEALED.clone(); } else { final List<String> ret = new ArrayList<>(); addIfNotPresent(PsiModifier.PUBLIC, list, ret); if (!list.hasModifierProperty(PsiModifier.FINAL)) { boolean hasNonSealed = list.hasModifierProperty(PsiModifier.NON_SEALED); boolean hasSealed = list.hasModifierProperty(PsiModifier.SEALED); if (!hasNonSealed) { addIfNotPresent(PsiModifier.SEALED, list, ret); } if (!hasSealed) { addIfNotPresent(PsiModifier.NON_SEALED, list, ret); } boolean hasAbstract = list.hasModifierProperty(PsiModifier.ABSTRACT); if (!hasAbstract) { ret.add(PsiModifier.ABSTRACT); if (!hasNonSealed && !hasSealed) { ret.add(PsiModifier.FINAL); } } } return ArrayUtilRt.toStringArray(ret); } } return addKeywords(list, CLASS_MODIFIERS); }