docs: public List<IUserLayoutNodeDescription> getFavoriteCollections(IUserLayout userLayout) {
  
          if (null == userLayout) {
              throw new IllegalArgumentException(
                      "Cannot get favorites collections from a null userLayout");
          }
  
          logger.trace("Extracting favorites collections from layout [{}].", userLayout);
  
          Enumeration<String> nodeIds = userLayout.getChildIds(userLayout.getRootId());
  
          List<IUserLayoutNodeDescription> results = new LinkedList<IUserLayoutNodeDescription>();
  
          while (nodeIds.hasMoreElements()) {
              String nodeId = nodeIds.nextElement();
  
              try {
                  IUserLayoutNodeDescription nodeDescription = userLayout.getNodeDescription(nodeId);
  
                  String parentId = userLayout.getParentId(nodeId);
                  String nodeName = nodeDescription.getName();
                  IUserLayoutNodeDescription.LayoutNodeType nodeType = nodeDescription.getType();
  
                  if (FOLDER.equals(nodeType)
                          && nodeDescription instanceof IUserLayoutFolderDescription) {
  
                      IUserLayoutFolderDescription folderDescription =
                              (IUserLayoutFolderDescription) nodeDescription;
  
                      String folderType = folderDescription.getFolderType();
  
                      if (FAVORITE_COLLECTION_TYPE.equals(folderType)) {
  
                          results.add(nodeDescription);
  
                          logger.trace(
                                  "Selected node with id [{}] named [{}] with "
                                          + "folderType [{}] and type [{}] as a collection of favorites.",
                                  nodeId,
                                  nodeName,
                                  folderType,
                                  nodeType);
  
                      } else {
  
                          logger.trace(
                                  "Rejected node with id [{}] named [{}] with "
                                          + "folderType [{}] and type [{}] as not a collection of favorites.",
                                  nodeId,
                                  nodeName,
                                  folderType,
                                  nodeType);
                      }
  
                  } else {
                      logger.trace(
                              "Rejected non-folder node with id [{}] named [{}] "
                                      + "with parentId [{}] and type [{}] as not a collection of favorites.",
                              nodeId,
                              nodeName,
                              parentId,
                              nodeType);
                  }
  
                  // if something goes wrong in processing a node, exclude it
              } catch (Exception e) {
                  logger.error(
                          "Error determining whether to include layout node [{}]"
                                  + " as a collection of favorites.  Excluding.",
                          nodeId,
                          e);
              }
          }
  
          logger.debug("Extracted favorites collections [{}] from [{}]", results, userLayout);
  
          return results;
      }