docs: public void addNormalSites(boolean includeRoot, String startFolder) {
  
          CmsSiteManagerImpl siteManager = OpenCms.getSiteManager();
          List<CmsSite> sites = siteManager.getAvailableSites(m_cms, true, false, m_cms.getRequestContext().getOuFqn());
          try {
              CmsObject rootCms = OpenCms.initCmsObject(m_cms);
              rootCms.getRequestContext().setSiteRoot("/");
              if (sites.isEmpty()) {
                  String siteRoot = m_cms.getRequestContext().getSiteRoot();
                  if (!rootCms.existsResource(siteRoot, CmsResourceFilter.ONLY_VISIBLE_NO_DELETED)) {
                      if (startFolder != null) {
                          siteRoot = CmsStringUtil.joinPaths(siteRoot, startFolder);
                      }
                      if ((startFolder == null)
                          || !rootCms.existsResource(siteRoot, CmsResourceFilter.ONLY_VISIBLE_NO_DELETED)) {
                          siteRoot = null;
                      }
                  }
                  if (siteRoot != null) {
                      Type type = Type.site;
                      String message = siteRoot;
                      addOption(type, siteRoot, message);
                  }
              }
              for (CmsSite site : sites) {
                  // Do not add the shared site - it will be among sites if you are on the shared site at the moment.
                  if (site.isSharedSite()) {
                      continue;
                  }
                  String siteRoot = site.getSiteRoot();
                  if (!rootCms.existsResource(siteRoot, CmsResourceFilter.ONLY_VISIBLE_NO_DELETED)) {
                      if (startFolder != null) {
                          siteRoot = CmsStringUtil.joinPaths(siteRoot, startFolder);
                      }
                      if ((startFolder == null)
                          || !rootCms.existsResource(siteRoot, CmsResourceFilter.ONLY_VISIBLE_NO_DELETED)) {
                          siteRoot = null;
                      }
                  }
                  if (siteRoot != null) {
                      Type type = Type.site;
                      String message = null;
                      String title = site.getTitle();
                      if (!CmsStringUtil.isEmptyOrWhitespaceOnly(title)) {
                          message = title;
                      } else {
                          message = siteRoot;
                      }
                      if (siteRoot.equals("")) {
                          type = Type.root;
                          Locale locale = OpenCms.getWorkplaceManager().getWorkplaceLocale(m_cms);
                          message = Messages.get().getBundle(locale).key(Messages.GUI_ROOT_SITE_0);
                          if (!includeRoot) {
                              continue;
                          }
                      }
                      addOption(type, siteRoot, message);
                  }
              }
          } catch (CmsException e) {
              LOG.error(e);
          }
      }