code: public List<Message> requestPlaylistItemsFrom(final int player, final CdjStatus.TrackSourceSlot slot,
                                                    final int sortOrder, final int playlistOrFolderId,
                                                    final boolean folder)
              throws Exception {
          ConnectionManager.ClientTask<List<Message>> task = new ConnectionManager.ClientTask<List<Message>>() {
              @Override
              public List<Message> useClient(Client client) throws Exception {
                 return getPlaylistItems(slot, sortOrder, playlistOrFolderId, folder, client);
              }
          };
  
          return ConnectionManager.getInstance().invokeWithClientSession(player, task, "requesting playlist information");
      }
docs: Ask the specified player's dbserver for the playlist entries of the specified playlist (if {@code folder} is {@code false},
  or the list of playlists and folders inside the specified playlist folder (if {@code folder} is {@code true}.
  
  @param player the player number whose playlist entries are of interest
  @param slot the slot in which the playlist can be found
  @param sortOrder the order in which responses should be sorted, 0 for default, see Section 6.11.1 of the
  <a href="https://github.com/Deep-Symmetry/dysentery/blob/master/doc/Analysis.pdf">Packet Analysis
  document</a> for details
  @param playlistOrFolderId the database ID of the desired playlist or folder
  @param folder indicates whether we are asking for the contents of a folder or playlist
  
  @return the items that are found in the specified playlist or folder; they will be tracks if we are asking
  for a playlist, or playlists and folders if we are asking for a folder
  
  @throws Exception if there is a problem obtaining the playlist information