code: public CmsPair<List<CmsClientSitemapEntry>, List<CmsClientSitemapEntry>> getOpenAndClosedDescendants(String path) {
  
          List<CmsClientSitemapEntry> descendants = m_controller.getLoadedDescendants(path);
          List<CmsClientSitemapEntry> openDescendants = new ArrayList<CmsClientSitemapEntry>();
          List<CmsClientSitemapEntry> closedDescendants = new ArrayList<CmsClientSitemapEntry>();
          for (CmsClientSitemapEntry entry : descendants) {
              CmsSitemapTreeItem treeItem = getTreeItem(entry.getSitePath());
              List<CmsClientSitemapEntry> listToAddTo = treeItem.isLoaded() ? openDescendants : closedDescendants;
              listToAddTo.add(entry);
          }
          return new CmsPair<List<CmsClientSitemapEntry>, List<CmsClientSitemapEntry>>(
              openDescendants,
              closedDescendants);
  
      }
docs: Gets the list of descendants of a path and splits it into two lists, one containing the sitemap entries whose children have
  already been loaded, and those whose children haven't been loaded.<p>
  
  @param path the path for which the open and closed descendants should be returned
  
  @return a pair whose first and second components are lists of open and closed descendant entries of the path, respectively