void (@NotNull ActionContext context, @NotNull PsiClass subclass, @NotNull ModPsiUpdater updater) { PsiClass parentClass = myParentClassPointer.getElement(); if (parentClass == null || !parentClass.hasModifierProperty(PsiModifier.SEALED)) return; if (ImplementOrExtendFix.implementOrExtend(parentClass, subclass) == null) return; PsiModifierList modifiers = subclass.getModifierList(); if (modifiers == null) return; if (hasSealedClassSubclassModifier(modifiers)) return; modifiers.setModifierProperty(myModifier, true); Query<PsiClass> subclassInheritors = DirectClassInheritorsSearch.search(subclass); if (PsiModifier.FINAL.equals(myModifier) && subclassInheritors.findFirst() != null || PsiModifier.SEALED.equals(myModifier) && subclassInheritors.anyMatch(child -> !hasSealedClassSubclassModifier(child))) { subclass.navigate(true); } }