@Override
  protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiModifierListOwner element) {
    final PsiModifierList modifierList = element.getModifierList();
    if (modifierList == null) return null;
    PsiFile containingFile = modifierList.getContainingFile();
    if (containingFile == null) return null;
    if (containingFile.getVirtualFile() == null) return null;
    PsiVariable variable = ObjectUtils.tryCast(element, PsiVariable.class);
    boolean isAvailable = modifierList.hasExplicitModifier(myModifier) != myShouldHave && !(variable instanceof SyntheticElement);
    if (!isAvailable) return null;

    String name = myName;
    if (myShowContainingClass) {
      PsiElement elementUnderCaret = context.findLeaf();
      if (elementUnderCaret != null && PsiTreeUtil.isAncestor(element, elementUnderCaret, false)) {
        name = format(variable, modifierList, false);
      }
    }

    return switch (myProcessHierarchy) {
      case YES -> Presentation.of(QuickFixBundle.message("fix.update.modifier.change.inheritors"));
      case NO -> Presentation.of(QuickFixBundle.message("fix.update.modifier.change.this"));
      case UNSURE -> Presentation.of(name).withFixAllOption(this,
                                                            action -> action instanceof ModifierFix modifierFix &&
                                                                      modifierFix.myModifier.equals(myModifier) &&
                                                                      modifierFix.myShouldHave == myShouldHave);
    };
  }
@Override
  protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiModifierListOwner element)