docs: private void setUpComboBoxPosition() {
  
          m_fieldPosition.removeAllItems();
  
          List<CmsSite> sites = new ArrayList<CmsSite>();
          List<PositionComboBoxElementBean> beanList = new ArrayList<PositionComboBoxElementBean>();
          for (CmsSite site : OpenCms.getSiteManager().getAvailableSites(m_clonedCms, true)) {
              if (site.getSiteMatcher() != null) {
                  sites.add(site);
              }
          }
  
          float maxValue = 0;
          float nextPos = 0;
  
          // calculate value for the first navigation position
          float firstValue = 1;
          if (sites.size() > 0) {
              try {
                  maxValue = sites.get(0).getPosition();
              } catch (Exception e) {
                  // should usually never happen
              }
          }
  
          if (maxValue != 0) {
              firstValue = maxValue / 2;
          }
  
          // add the first entry: before first element
          beanList.add(
              new PositionComboBoxElementBean(
                  CmsVaadinUtils.getMessageText(Messages.GUI_SITE_CHNAV_POS_FIRST_0),
                  firstValue));
  
          // show all present navigation elements in box
          for (int i = 0; i < sites.size(); i++) {
  
              float navPos = sites.get(i).getPosition();
              String siteRoot = sites.get(i).getSiteRoot();
              // get position of next nav element
              nextPos = navPos + 2;
              if ((i + 1) < sites.size()) {
                  nextPos = sites.get(i + 1).getPosition();
              }
              // calculate new position of current nav element
              float newPos;
              if ((nextPos - navPos) > 1) {
                  newPos = navPos + 1;
              } else {
                  newPos = (navPos + nextPos) / 2;
              }
              // check new maxValue of positions and increase it
              if (navPos > maxValue) {
                  maxValue = navPos;
              }
              // if the element is the current file, mark it in select box
              if ((m_site != null) && (m_site.getSiteRoot() != null) && m_site.getSiteRoot().equals(siteRoot)) {
                  beanList.add(
                      new PositionComboBoxElementBean(
                          CmsVaadinUtils.getMessageText(Messages.GUI_SITE_CHNAV_POS_CURRENT_1, m_site.getTitle()),
                          -1));
              } else {
                  beanList.add(new PositionComboBoxElementBean(sites.get(i).getTitle(), newPos));
              }
          }
  
          // add the entry: at the last position
          PositionComboBoxElementBean lastEntry = new PositionComboBoxElementBean(
              CmsVaadinUtils.getMessageText(Messages.GUI_SITE_CHNAV_POS_LAST_0),
              maxValue + 1);
          beanList.add(lastEntry);
  
          // add the entry: no change
          beanList.add(
              new PositionComboBoxElementBean(CmsVaadinUtils.getMessageText(Messages.GUI_SITE_CHNAV_POS_NOCHANGE_0), -1));
  
          BeanItemContainer<PositionComboBoxElementBean> objects = new BeanItemContainer<PositionComboBoxElementBean>(
              PositionComboBoxElementBean.class,
              beanList);
  
          m_fieldPosition.setContainerDataSource(objects);
          m_fieldPosition.setItemCaptionPropertyId("title");
          m_fieldPosition.setValue(beanList.get(beanList.size() - 1));
          if (m_site == null) {
              m_fieldPosition.setValue(lastEntry);
          }
      }