@Override
  public @NotNull List<BalloonImpl.ActionButton> createActions() {
    myActions = new ArrayList<>();

    if (!myLayoutData.showSettingButton) {
      myMoreButton = null;
    }
    else {
      myMoreButton = myBalloon.new ActionButton(
        AllIcons.Actions.More, null,
        IdeBundle.message("tooltip.turn.notification.off"),
        event -> myBalloon.runWithSmartFadeoutPause(() -> {
          if (!myBalloon.isDisposed()) {
            showMorePopup();
          }
        })) {
        @Override
        protected void paintIcon(@NotNull Graphics g, @NotNull Icon icon) {
          if (ExperimentalUI.isNewUI()) {
            icon = paintHover(g, icon, myButton, CloseHoverBounds.x, CloseHoverBounds.y);
            icon.paintIcon(this, g, CloseHoverBounds.x, CloseHoverBounds.y);
          }
          else {
            super.paintIcon(g, icon);
          }
        }

        @Override
        public void repaint() {
          super.repaint();
          if (myRepaintPanel != null) {
            myRepaintPanel.repaint();
          }
        }
      };
      myActions.add(myMoreButton);

      if (myRepaintPanel != null) {
        myLayoutData.showActions = () -> {
          for (BalloonImpl.ActionButton action : myActions) {
            if (!action.isShowing() || !action.hasPaint()) {
              return Boolean.FALSE;
            }
          }
          return Boolean.TRUE;
        };
      }
    }

    myCloseButton = myBalloon.new ActionButton(
      AllIcons.Ide.Notification.Close, AllIcons.Ide.Notification.CloseHover,
      IdeBundle.message( "tooltip.close.notification", SystemInfo.isMac ? "⌥" : "Alt+"),
      event -> {
        final int modifiers = event.getModifiers();
        //noinspection SSBasedInspection
        SwingUtilities.invokeLater(() -> {
          if ((modifiers & InputEvent.ALT_MASK) != 0 && myLayoutData.closeAll != null) {
            myLayoutData.closeAll.run();
          }
          else {
            BalloonLayoutData.MergeInfo mergeInfo = myLayoutData.mergeData;
            if (mergeInfo != null && mergeInfo.linkIds != null) {
              for (BalloonLayoutData.ID id : mergeInfo.linkIds) {
                NotificationCollector.getInstance()
                  .logNotificationBalloonClosedByUser(myLayoutData.project, id.notificationId, id.notificationDisplayId,
                                                      myNotification.getGroupId());
              }
            }
            NotificationCollector.getInstance()
              .logNotificationBalloonClosedByUser(myLayoutData.project, myNotification.id, myNotification.getDisplayId(),
                                                  myNotification.getGroupId());
            myBalloon.hide(true);
          }
        });
      }) {
      @Override
      protected void paintIcon(@NotNull Graphics g, @NotNull Icon icon) {
        icon = paintHover(g, icon, myButton, CloseHoverBounds.x, CloseHoverBounds.y);
        icon.paintIcon(this, g, CloseHoverBounds.x, CloseHoverBounds.y);
      }
    };
    myActions.add(myCloseButton);

    return myActions;
  }


@Override
  public @NotNull List<BalloonImpl.ActionButton> createActions()