/// <summary>
    /// Get all elements from a paging list
    /// </summary>
    /// <typeparam name="T">The type the paging list contains</typeparam>
    /// <param name="pagingList">The original paging list</param>
    /// <param name="getNext">Code to retrieve more from the paging list. Argument is offset. Should return the next block of items in the paging list</param>
    /// <returns></returns>
    private async Task <List <T> > GetAllFromPagingList <T>(SAPIModels.Paging <T> pagingList, Func <int, Task <SAPIModels.Paging <T> > > getNext) where T : class
    {
        if (pagingList == null || pagingList?.Items == null)
        {
            return(null);
        }

        List <T> list = new List <T>();

        list.AddRange(pagingList.Items.Select(x => x).ToList());

        while (pagingList.Next != null && pagingList.Items != null)
        {
            pagingList = await getNext(pagingList.Offset + pagingList.Limit);

            if (pagingList.Items != null)
            {
                list.AddRange(pagingList.Items.Select(x => x));
            }
        }

        return(list);
    }
    /// <summary>
    /// Gets all elements of a paging list
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="api">A reference to the api</param>
    /// <param name="pagingList">The list to get the rest of</param>
    /// <returns></returns>
    public static async Task <List <T> > GetAllFromPagingAsync <T>(SpotifyAPI.Web.SpotifyWebAPI api, SAPIModels.Paging <T> pagingList) where T : class
    {
        List <T> returnList = new List <T>(pagingList.Items);

        while (pagingList.Next != null)
        {
            pagingList = await api.GetNextPageAsync(pagingList);

            returnList.AddRange(pagingList.Items);
        }
        return(returnList);
    }