docs: @Override
      public void destroy() {
          shell.unregisterPlugin(this);
          executeAction(PluginAction.UNLOAD, false);
          CommandUtil.dissociateAll(container);
  
          if (pluginEventListeners1 != null) {
              pluginEventListeners1.clear();
              pluginEventListeners1 = null;
          }
  
          if (pluginEventListeners2 != null) {
              executeAction(PluginAction.UNSUBSCRIBE, false);
              pluginEventListeners2.clear();
              pluginEventListeners2 = null;
          }
  
          if (registeredProperties != null) {
              registeredProperties.clear();
              registeredProperties = null;
          }
  
          if (registeredBeans != null) {
              registeredBeans.clear();
              registeredBeans = null;
          }
  
          if (registeredComponents != null) {
              for (BaseComponent component : registeredComponents) {
                  component.destroy();
              }
  
              registeredComponents.clear();
              registeredComponents = null;
          }
  
          super.destroy();
      }