@Override
  public void actionPerformed(@NotNull AnActionEvent e) {
    QuickActionProvider provider = e.getData(QuickActionProvider.KEY);
    if (provider == null) return;
    List<AnAction> actions = provider.getActions(true);

    DefaultActionGroup group = new DefaultActionGroup(actions);
    group.addSeparator();

    JComponent component = provider.getComponent();
    if (component != null && !provider.isCycleRoot()) {
      Component eachParent = component.getParent();
      while (eachParent != null) {
        QuickActionProvider parentProvider = ObjectUtils.tryCast(eachParent, QuickActionProvider.class);
        if (parentProvider != null && provider != parentProvider) {
          List<AnAction> parentActions = parentProvider.getActions(false);
          if (!parentActions.isEmpty()) {
            String name = StringUtil.notNullize(parentProvider.getName());
            DefaultActionGroup parentGroup = new DefaultActionGroup(name, parentActions);
            if (!StringUtil.isEmpty(name)) {
              parentGroup.setPopup(true);
            }
            else {
              group.add(Separator.getInstance());
            }
            group.add(parentGroup);
          }
          if (parentProvider.isCycleRoot()) break;
        }
        eachParent = eachParent.getParent();
      }
    }

    JBPopupFactory.getInstance()
      .createActionGroupPopup(null, group, e.getDataContext(), ALPHA_NUMBERING, true)
      .showInBestPositionFor(e.getDataContext());
  }
@Override
  public void actionPerformed(@NotNull AnActionEvent e)