private void purge(final Folder folder, final SearchFilter filter) throws Exception {
    final int num = folder.getChildFolderCount();
    if (includeSubfolders && num > 0) {
      final FolderView folderView = new FolderView(num);
      final FindFoldersResults children = folder.findFolders(folderView);
      for (final Folder child : children) {
        purge(child, filter);
        final ItemView view = new ItemView(1);
        if (child.findItems(view).getTotalCount() == 0) {
          child.delete(DeleteMode.HardDelete);
        }
      }
    }

    while (deleteItems(folder, filter)) {}
  }