public PaginatedMetaModel GetMetaData(int collectionSize, int selectedPageNumber, int itemsPerPage)
        {
            var lastPage = _pageInCollectionService.GetLastPageInCollection(collectionSize, itemsPerPage);

            // Cover > out of range exceptions
            if (lastPage < selectedPageNumber)
            {
                selectedPageNumber = lastPage;
            }

            // Cover < out of range exceptions
            if (selectedPageNumber < 1)
            {
                selectedPageNumber = 1;
            }

            if (collectionSize == 0)
            {
                return(GetCollectionSizeZeroModel());
            }

            _pages = _nodeService.BuildPageNodes(collectionSize, selectedPageNumber, itemsPerPage, NumberOfNodesInPaginatedList);
            return(new PaginatedMetaModel
            {
                PreviousPage = _previousPageService.BuildPreviousPage(_pages, collectionSize, selectedPageNumber, itemsPerPage),
                Pages = _pages,
                NextPage = _nextPageService.BuildNextPage(
                    _pages,
                    collectionSize,
                    selectedPageNumber,
                    itemsPerPage,
                    NumberOfNodesInPaginatedList
                    )
            });
        }