code: private void recursivelyCollectFolderTree(final List<ObjectInFolderContainer> list, final Folder child, final int maxDepth, final int depth, final Boolean includeAllowableActions) throws FrameworkException {
  
  		if (depth > maxDepth) {
  			return;
  		}
  
  		final CMISObjectInFolderWrapper wrapper                = new CMISObjectInFolderWrapper(includeAllowableActions);
  		final ObjectInFolderContainerImpl impl                 = new ObjectInFolderContainerImpl();
  		final List<ObjectInFolderContainer> childContainerList = new LinkedList<>();
  		final String pathSegment                               = child.getName();
  
  		impl.setObject(wrapper.wrapObjectData(wrapper.wrapGraphObject(child), pathSegment));
  		impl.setChildren(childContainerList);
  
  		// add wrapped object to current list
  		list.add(impl);
  
  		// fetch and sort children
  		final List<Folder> children = Iterables.toList(child.getFolders());
  		Collections.sort(children, new GraphObjectComparator(AbstractNode.name, false));
  
  		// descend into children
  		for (final Folder folderChild: children) {
  			recursivelyCollectFolderTree(childContainerList, folderChild, maxDepth, depth+1, includeAllowableActions);
  		}
  
  	}
docs: ----- private methods -----