docs: public CmsSitemapTreeNode createNode(final CmsSitemapTreeNodeData entry) {
  
          final CmsSitemapTreeNode node = new CmsSitemapTreeNode();
  
          node.addLayoutClickListener(new LayoutClickListener() {
  
              private static final long serialVersionUID = 1L;
  
              @SuppressWarnings("synthetic-access")
              public void layoutClick(LayoutClickEvent event) {
  
                  Component currentComponent = event.getClickedComponent();
                  if (currentComponent != null) {
                      boolean linked = false;
                      do {
                          currentComponent = currentComponent.getParent();
                          if ((currentComponent != null)
                              && "linked".equals(((AbstractComponent)currentComponent).getData())) {
                              linked = true;
                          }
                          if (event.getClickedComponent() instanceof CmsResourceIcon) {
                              if (currentComponent == node) {
                                  openTargetPage((CmsSitemapTreeNodeData)(node.getData()), linked);
                              } else if (currentComponent instanceof CmsSitemapTreeNode) {
                                  break;
                              }
                          }
                      } while (currentComponent != null);
                  }
  
              }
  
          });
          Resource icon = CmsResourceIcon.getSitemapResourceIcon(
              A_CmsUI.getCmsObject(),
              entry.getResource(),
              IconMode.localeCompare);
          CmsResourceInfo info = new CmsResourceInfo(
              entry.getClientEntry().getTitle(),
              entry.getClientEntry().getSitePath(),
              icon);
          info = CmsResourceInfo.createSitemapResourceInfo(
              entry.getResource(),
              OpenCms.getSiteManager().getSiteForRootPath(m_localeContext.getRoot().getRootPath()));
          info.getResourceIcon().addStyleName(OpenCmsTheme.POINTER);
          info.getResourceIcon().setDescription(CmsVaadinUtils.getMessageText(Messages.GUI_LOCALECOMPARE_OPEN_PAGE_0));
  
          if (entry.getClientEntry().isHiddenNavigationEntry()) {
              info.addStyleName(OpenCmsTheme.RESOURCE_INFO_WEAK);
          }
          final MenuBar menu = new MenuBar();
          boolean noTranslation = false;
          noTranslation = entry.isMarkedNoTranslation(m_localeContext.getComparisonLocale());
  
          final MenuItem main = menu.addItem("", null);
          main.setIcon(FontOpenCms.CONTEXT_MENU);
          CssLayout rightSide = new CssLayout();
          info.setButtonWidget(rightSide);
          rightSide.addComponent(menu);
          main.setCommand(new Command() {
  
              /** Serial version id. */
              private static final long serialVersionUID = 1L;
  
              public void menuSelected(MenuItem selectedItem) {
  
                  List<I_CmsSimpleContextMenuEntry<MenuContext>> entries = Arrays.asList(
  
                      new EntryOpen(),
                      new EntryExplorer(),
                      new EntryProperties(),
                      new EntryLink(),
                      new EntryUnlink(),
                      new EntryMark(),
                      new EntryRemoveMark(),
                      new EntryCopy(),
                      new EntryInfo());
  
                  MenuContext context = new MenuContext(entry, node);
                  m_menu.setEntries(entries, context);
                  m_menu.open(menu);
  
              }
  
          });
  
          menu.addStyleName("borderless o-toolbar-button o-resourceinfo-toolbar");
          if (entry.isLinked()) {
              CmsSite site = OpenCms.getSiteManager().getSiteForRootPath(m_localeContext.getRoot().getRootPath());
              CmsResourceInfo linkedInfo = CmsResourceInfo.createSitemapResourceInfo(
                  readSitemapEntryFolderIfPossible(entry.getLinkedResource()),
                  site);
              linkedInfo.addStyleName(OpenCmsTheme.RESOURCE_INFO_DIRECTLINK);
              rightSide.addComponent(linkedInfo, 0);
              linkedInfo.setWidth(RHS_WIDTH + "px");
              node.setContent(info);
              linkedInfo.setData("linked"); // Data used by click handler to distinguish clicked resource icons
              linkedInfo.getResourceIcon().setDescription(
                  CmsVaadinUtils.getMessageText(Messages.GUI_LOCALECOMPARE_OPEN_PAGE_0));
              linkedInfo.getResourceIcon().addStyleName(OpenCmsTheme.POINTER);
          } else {
              if (noTranslation) {
                  CmsResourceInfo noTranslationInfo = new CmsResourceInfo();
                  String topMessage = CmsVaadinUtils.getMessageText(Messages.GUI_LOCALECOMPARE_NO_TRANSLATION_TOP_0);
                  String bottomMessage = CmsVaadinUtils.getMessageText(
                      Messages.GUI_LOCALECOMPARE_NO_TRANSLATION_BOTTOM_0);
                  noTranslationInfo.getTopLine().setValue(topMessage);
                  noTranslationInfo.getBottomLine().setValue(bottomMessage);
                  noTranslationInfo.getResourceIcon().setValue(
                      "<span class=\""
                          + OpenCmsTheme.RESOURCE_ICON
                          + " "
                          + OpenCmsTheme.NO_TRANSLATION_ICON
                          + "\">"
                          + FontAwesome.BAN.getHtml()
                          + "</span>");
                  noTranslationInfo.addStyleName(OpenCmsTheme.RESOURCE_INFO_DIRECTLINK);
                  noTranslationInfo.setWidth(RHS_WIDTH + "px");
                  rightSide.addComponent(noTranslationInfo, 0);
              }
              node.setContent(info);
          }
  
          if (entry.hasNoChildren()) {
              node.setOpen(true);
              node.setOpenerVisible(false);
          }
          node.setData(entry);
          return node;
  
      }