code: public Map<String, List<CmsCategory>> getReadPathCategories() {
  
          if (null == m_pathCategories) {
              m_pathCategories = CmsCollectionsGenericWrapper.createLazyMap(new Transformer() {
  
                  public Object transform(Object categoryPath) {
  
                      List<CmsCategory> result = new ArrayList<CmsCategory>();
  
                      String path = (String)categoryPath;
  
                      if ((null == path) || (path.length() <= 1)) {
                          return result;
                      }
  
                      //cut last slash
                      path = path.substring(0, path.length() - 1);
  
                      List<String> pathParts = Arrays.asList(path.split("/"));
  
                      String currentPath = "";
                      for (String part : pathParts) {
                          currentPath += part + "/";
                          CmsCategory category = getReadCategory().get(currentPath);
                          if (null != category) {
                              result.add(category);
                          }
                      }
                      return CmsCategoryService.getInstance().localizeCategories(
                          m_cms,
                          result,
                          m_cms.getRequestContext().getLocale());
                  }
  
              });
          }
          return m_pathCategories;
      }
docs: Transforms the category path to the list of all categories on that path.<p>
  
  Example: For path <code>"location/europe/"</code>
  the list <code>[getReadCategory.get("location/"),getReadCategory.get("location/europe/")]</code>
  is returned.
  @return a map from a category path to list of categories on that path.