internal Task <PagingResult <TModel> > FetchPagingAsync <TModel>(FetchPagingParameters <TModel> fetchParameters) where TModel : class
        {
            var fq = FormFetchQuery(fetchParameters);

            // 4 Paging
            return(PagingAsync(fq, fetchParameters.PagingRule));
        }
        // this injection is fine since the design hides this behind internal
        internal PagingFetchBuilder(BasicRepository repository, FetchParameters <TModel> fetchParameters)
        {
            if (fetchParameters == null)
            {
                throw new System.ArgumentNullException(nameof(fetchParameters));
            }

            this.fetchParameters = new FetchPagingParameters <TModel>(fetchParameters);
            this.repository      = repository;
        }