docs: protected void deregisterMBeans(WebModuleMetaDataImpl webModule) {
          String methodName = "deregisterMBeans";
  
          String debugName;
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              debugName = webModule.getApplicationMetaData().getName() + " " + webModule.getName();                                
          } else {
              debugName = null;
          }
  
          
          WebMBeanRuntime mBeanRuntime = webMBeanRuntimeServiceRef.getService();
          if (mBeanRuntime == null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName, "Web Module [ " + debugName + " ]: No MBean Runtime");
              }
          } else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName, "Web Module [ " + debugName + " ]: MBean Runtime");
              }
          }
  
          ServiceRegistration<?> webModuleReg = webModule.mBeanServiceReg;                    
          if (webModuleReg != null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName, "Web Module [ " + debugName + " ]: Deregister module [ " + webModuleReg + " ]");
              }
              webModule.mBeanServiceReg = null;
              // The preference would be to call ServiceRegistrationImpl.isUnregistered(), but that 
              // is not in the ServiceRegistration API. That still might not be good enough anyways, 
              // if the deregistration happened between the call to isUnregistered and the local unregister() call.
              if (mBeanRuntime != null) {
                  try {
                      webModuleReg.unregister();
                  } catch (IllegalStateException ise) {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                         Tr.debug(tc, methodName, "Web Module [ " + debugName + " ]: Had already deregistered module [ " + webModuleReg + " ]");
                      }
                  }
              }
          } else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  debugName = webModule.getApplicationMetaData().getName() + webModule.getName();                
                  Tr.debug(tc, methodName, "Web Module [ " + debugName + " ]: No registration");
              }
          }
  
          Iterator<IServletConfig> servletConfigs = webModule.getConfiguration().getServletInfos();        
          while (servletConfigs.hasNext()) {
              IServletConfig servletConfig = servletConfigs.next();
              String servletName = servletConfig.getServletName();
  
              WebComponentMetaDataImpl wcmdi = (WebComponentMetaDataImpl) servletConfig.getMetaData();
              ServiceRegistration<?> servletReg = wcmdi.mBeanServiceReg;                                
              if (servletReg != null) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, methodName, "Servlet [ " + servletName  + " ]: Deregister [ " + servletReg + " ]");
                  }
                  wcmdi.mBeanServiceReg = null;
                  // The preference would be to call ServiceRegistrationImpl.isUnregistered(), but that 
                  // is not in the ServiceRegistration API. That still might not be good enough anyways, 
                  // if the deregistration happened between the call to isUnregistered and the local unregister() call.
                  if (mBeanRuntime != null) {
                      try {
                          servletReg.unregister();
                      } catch (IllegalStateException ise) {
                          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                              Tr.debug(tc, methodName, "Servlet [ " + servletName + " ]: Had already deregistered [ " + servletReg + " ]");
                          }
                      }
                  }
              } else {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, methodName, "Servlet [ " + servletName  + " ]: No registration");
                  }
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, methodName, "Web Module [ " + debugName + " ]: Completed deregistrations");
          }                
      }