docs: @Override
      public boolean isEnableForMessageContainer(MessageContainer<?> messageContainer) {
          invoker = null;
  
          if (!(messageContainer instanceof HttpMessageContainer)) {
              return false;
          }
  
          HttpMessageContainer httpMessageContainer = (HttpMessageContainer) messageContainer;
  
          if (!isEnable(httpMessageContainer)) {
              return false;
          }
  
          invoker = getInvoker(httpMessageContainer);
  
          if (!isEnableForInvoker(invoker, httpMessageContainer)) {
              invoker = null;
              return false;
          }
  
          boolean enabled = false;
          if (isProcessExtensionPopupChildren()) {
              boolean childrenEnable = processExtensionPopupChildren(PopupMenuUtils.getPopupMenuInvokerWrapper(httpMessageContainer));
              if (isButtonStateOverriddenByChildren()) {
                  enabled = childrenEnable;
              }
          }
  
          if (!isProcessExtensionPopupChildren() || (isProcessExtensionPopupChildren() && !isButtonStateOverriddenByChildren())) {
              enabled = isButtonEnabledForHttpMessageContainerState(httpMessageContainer);
          }
  
          if (enabled && !isSafe()) {
              Mode mode = Control.getSingleton().getMode();
              if (mode.equals(Mode.protect)) {
                  enabled = isSelectedMessagesInSessionScope(httpMessageContainer);
              } else if (mode.equals(Mode.safe)) {
                  enabled = false;
              }
          }
  
          setEnabled(enabled);
  
          return true;
      }