synchronized void push(@NotNull ComponentActions ca) {
      if (!myStack.isEmpty() && myStack.peek() == ca) {
        return;
      }

      myStack.removeIf((other) -> ca == other); // don't store copies (just for insurance)
      myStack.push(ca);

      if (FORCE_UPDATE_ON_SHOW && ca.getCurrent() instanceof TBPanelActionGroup) { // just experimental possibility
        ((TBPanelActionGroup)ca.getCurrent()).updateActionItems();
      }

      _scheduleUpdateNative();
    }
synchronized void push(@NotNull ComponentActions ca)