docs: protected IPortletRenderExecutionWorker startPortletRenderInternal(
              IPortletWindowId portletWindowId,
              HttpServletRequest request,
              HttpServletResponse response) {
          // first check to see if there is a Throwable in the session for this IPortletWindowId
          final Map<IPortletWindowId, Exception> portletFailureMap = getPortletErrorMap(request);
          final Exception cause = portletFailureMap.remove(portletWindowId);
  
          final IPortletRenderExecutionWorker portletRenderExecutionWorker;
          if (null != cause) {
              // previous action failed, dispatch to errorPortlet immediately
              portletRenderExecutionWorker =
                      this.portletWorkerFactory.createFailureWorker(
                              request, response, portletWindowId, cause);
          } else {
              IPortletWindow portletWindow =
                      portletWindowRegistry.getPortletWindow(request, portletWindowId);
              IPortletDefinition portletDef = portletWindow.getPortletEntity().getPortletDefinition();
              if (portletDef.getLifecycleState().equals(PortletLifecycleState.MAINTENANCE)) {
                  // Prevent the portlet from rendering;  replace with a helpful "Out of Service"
                  // message
                  portletRenderExecutionWorker =
                          this.portletWorkerFactory.createFailureWorker(
                                  request, response, portletWindowId, new MaintenanceModeException());
              } else {
                  // Happy path
                  portletRenderExecutionWorker =
                          this.portletWorkerFactory.createRenderWorker(
                                  request, response, portletWindowId);
              }
          }
  
          portletRenderExecutionWorker.submit();
  
          final Map<IPortletWindowId, IPortletRenderExecutionWorker> portletRenderingMap =
                  this.getPortletRenderingMap(request);
          portletRenderingMap.put(portletWindowId, portletRenderExecutionWorker);
  
          return portletRenderExecutionWorker;
      }