docs: public static void includeTagAction(
          PageContext context,
          String target,
          String element,
          Locale locale,
          boolean editable,
          boolean cacheable,
          Map<String, String[]> paramMap,
          Map<String, Object> attrMap,
          ServletRequest req,
          ServletResponse res)
      throws JspException {
  
          // the Flex controller provides access to the internal OpenCms structures
          CmsFlexController controller = CmsFlexController.getController(req);
  
          if (target == null) {
              // set target to default
              target = controller.getCmsObject().getRequestContext().getUri();
          }
  
          // resolve possible relative URI
          target = CmsLinkManager.getAbsoluteUri(target, controller.getCurrentRequest().getElementUri());
  
          try {
              // check if the target actually exists in the OpenCms VFS
              controller.getCmsObject().readResource(target);
          } catch (CmsException e) {
              // store exception in controller and discontinue
              controller.setThrowable(e, target);
              throw new JspException(e);
          }
  
          // include direct edit "start" element (if enabled)
          boolean directEditOpen = editable
              && CmsJspTagEditable.startDirectEdit(context, new CmsDirectEditParams(target, element));
  
          // save old parameters from request
          Map<String, String[]> oldParameterMap = CmsCollectionsGenericWrapper.map(req.getParameterMap());
          try {
              // each include will have it's unique map of parameters
              Map<String, String[]> parameterMap = (paramMap == null)
              ? new HashMap<String, String[]>()
              : new HashMap<String, String[]>(paramMap);
              if (cacheable && (element != null)) {
                  // add template element selector for JSP templates (only required if cacheable)
                  addParameter(parameterMap, I_CmsResourceLoader.PARAMETER_ELEMENT, element, true);
              }
              // add parameters to set the correct element
              controller.getCurrentRequest().addParameterMap(parameterMap);
              // each include will have it's unique map of attributes
              Map<String, Object> attributeMap = (attrMap == null)
              ? new HashMap<String, Object>()
              : new HashMap<String, Object>(attrMap);
              // add attributes to set the correct element
              controller.getCurrentRequest().addAttributeMap(attributeMap);
              Set<String> dynamicParams = controller.getCurrentRequest().getDynamicParameters();
              Map<String, String[]> extendedParameterMap = null;
              if (!dynamicParams.isEmpty()) {
                  // We want to store the parameters from the request with keys in dynamicParams in the flex response's include list, but only if they're set
                  extendedParameterMap = Maps.newHashMap();
                  extendedParameterMap.putAll(parameterMap);
                  for (String dynamicParam : dynamicParams) {
                      String[] val = req.getParameterMap().get(dynamicParam);
                      if (val != null) {
                          extendedParameterMap.put(dynamicParam, val);
                      }
                  }
              }
              if (cacheable) {
                  // use include with cache
                  includeActionWithCache(
                      controller,
                      context,
                      target,
                      extendedParameterMap != null ? extendedParameterMap : parameterMap,
                      attributeMap,
                      req,
                      res);
              } else {
                  // no cache required
                  includeActionNoCache(controller, context, target, element, locale, req, res);
              }
          } finally {
              // restore old parameter map (if required)
              if (oldParameterMap != null) {
                  controller.getCurrentRequest().setParameterMap(oldParameterMap);
              }
          }
  
          // include direct edit "end" element (if required)
          if (directEditOpen) {
              CmsJspTagEditable.endDirectEdit(context);
          }
      }