@Override
    public @Nullable Presentation getPresentation(@NotNull ActionContext context) {
      if (myUnwrappedAction != null) {
        if (myDescriptor.getStartElement() == null) return null;
        ActionContext descriptorContext = ActionContext.from(myDescriptor);
        return myUnwrappedAction.getPresentation(
          descriptorContext.withOffset(MathUtil.clamp(context.offset(), descriptorContext.selection().getStartOffset(),
                                                      descriptorContext.selection().getEndOffset())));
      }
      PsiElement psiElement = myDescriptor.getPsiElement();
      if (psiElement == null || !psiElement.isValid()) return null;
      PsiFile containingFile = psiElement.getContainingFile();
      if (!(containingFile == context.file() || containingFile == null ||
             containingFile.getViewProvider().getVirtualFile().equals(context.file().getViewProvider().getVirtualFile()))) {
        return null;
      }
      Presentation presentation = Presentation.of(myFix.getName());
      List<RangeToHighlight> highlight = myFix.getRangesToHighlight(context.project(), myDescriptor);
      if (!highlight.isEmpty()) {
        Presentation.HighlightRange[] ranges = ContainerUtil.map2Array(highlight, Presentation.HighlightRange.class,
                                                          r -> new Presentation.HighlightRange(r.getRangeInFile(), r.getHighlightKey()));
        presentation = presentation.withHighlighting(ranges);
      }
      if (myFix instanceof Iconable iconable) {
        presentation = presentation.withIcon(iconable.getIcon(0));
      }
      if (myFix instanceof PriorityAction priorityAction) {
        presentation = presentation.withPriority(priorityAction.getPriority());
      }
      return presentation;
    }
@Override
    public @Nullable Presentation getPresentation(@NotNull ActionContext context)