/**
   * Extracts the groups from a collection of group folders.
   *
   * @param groupFolders the group folders
   * @return the groups
   * @throws GitLabApiException if the connection against GitLab failed
   */
  private Collection<GitLabGroupInfo> getGroupsFromFolders(Collection<GroupFolderInfo> groupFolders)
      throws GitLabApiException {
    List<GitLabGroupInfo> groups = new ArrayList<GitLabGroupInfo>();

    for (GroupFolderInfo groupFolder : groupFolders) {
      groups.add(groupFolder.getGroup());
    }
    return groups;
  }
 /**
  * Gets all group folders without applying the filter.
  *
  * @return all group folders
  */
 private Map<Integer, GroupFolderInfo> getUnfilteredFolders() {
   Map<Integer, GroupFolderInfo> folders = new TreeMap<Integer, GroupFolderInfo>();
   for (TopLevelItem item : itemGroup.getItems()) {
     // check if the item is a group folder
     GroupFolderInfo groupFolderInfo = GroupFolderInfo.createFromItem(item);
     if (groupFolderInfo != null) {
       folders.put(groupFolderInfo.getGroupId(), groupFolderInfo);
     }
   }
   return folders;
 }
 /**
  * Checks whether a group folder should be included.
  *
  * @param groupFolder the group folder
  * @return true if the group folder should be included
  */
 private boolean managesGroupFolder(GroupFolderInfo groupFolder) throws GitLabApiException {
   GitLabGroupInfo group = groupFolder.getGroup();
   return managesGroupPredicate == null
       || (group != null && managesGroupPredicate.shouldManageGroup(group));
 }