docs: private List<CmsNewResourceInfo> getResourceTypeInfos(
          CmsObject cms,
          List<CmsResourceTypeConfig> resourceTypeConfigs,
          List<CmsFunctionReference> functionReferences,
          CmsResource modelResource,
          Locale locale) {
  
          List<CmsNewResourceInfo> result = new ArrayList<CmsNewResourceInfo>();
          CmsNewResourceInfo defaultPageInfo;
          if (modelResource != null) {
              defaultPageInfo = new CmsNewResourceInfo(
                  modelResource.getTypeId(),
                  CmsADEManager.DEFAULT_DETAILPAGE_TYPE,
                  "Default",
                  "The default detail page will be used to display detail contents or functions.",
                  modelResource.getStructureId(),
                  false,
                  "The default detail page will be used to display detail contents or functions.");
  
          } else {
              defaultPageInfo = new CmsNewResourceInfo(
                  CmsResourceTypeXmlContainerPage.getContainerPageTypeIdSafely(),
                  CmsADEManager.DEFAULT_DETAILPAGE_TYPE,
                  "Default",
                  "The default detail page will be used to display detail contents or functions.",
                  null,
                  false,
                  "The default detail page will be used to display detail contents or functions.");
          }
  
          defaultPageInfo.setBigIconClasses(
              CmsIconUtil.getIconClasses(CmsResourceTypeXmlContainerPage.getStaticTypeName(), null, false));
          result.add(defaultPageInfo);
          for (CmsResourceTypeConfig typeConfig : resourceTypeConfigs) {
              if (typeConfig.isDetailPagesDisabled()) {
                  continue;
              }
              String typeName = typeConfig.getTypeName();
              try {
                  I_CmsResourceType resourceType = OpenCms.getResourceManager().getResourceType(typeName);
                  result.add(createResourceTypeInfo(resourceType, modelResource));
              } catch (CmsLoaderException e) {
                  LOG.error(e.getLocalizedMessage(), e);
              }
          }
          for (CmsFunctionReference functionRef : functionReferences) {
              try {
                  CmsResource functionRes = cms.readResource(functionRef.getStructureId());
                  String description = cms.readPropertyObject(
                      functionRes,
                      CmsPropertyDefinition.PROPERTY_DESCRIPTION,
                      false).getValue();
                  String subtitle = description;
                  try {
                      CmsGallerySearchResult searchResult = CmsGallerySearch.searchById(
                          cms,
                          functionRef.getStructureId(),
                          getWorkplaceLocale());
                      subtitle = searchResult.getDescription();
                  } catch (CmsException e) {
                      LOG.warn(e.getLocalizedMessage(), e);
                  }
  
                  CmsNewResourceInfo info = new CmsNewResourceInfo(
                      modelResource.getTypeId(),
                      CmsDetailPageInfo.FUNCTION_PREFIX + functionRef.getName(),
                      functionRef.getName(),
                      description,
                      modelResource.getStructureId(),
                      false,
                      subtitle);
                  info.setCreateParameter(functionRef.getStructureId().toString());
                  info.setIsFunction(true);
                  info.setBigIconClasses(
                      CmsIconUtil.getIconClasses(CmsXmlDynamicFunctionHandler.TYPE_FUNCTION, null, false));
                  result.add(info);
              } catch (CmsVfsResourceNotFoundException e) {
                  LOG.warn(e.getLocalizedMessage(), e);
              } catch (CmsException e) {
                  LOG.error(e.getLocalizedMessage(), e);
              }
          }
          return result;
      }