public static IEnumerable <IEnumerable <T> > InChunksOf <T>(this IEnumerable <T> enumerable, int chunkSize)
        {
            if (enumerable == null)
            {
                throw new ArgumentNullException(nameof(enumerable));
            }

            if (chunkSize < 1)
            {
                throw new ArgumentException(
                          "Chunk size must be a positive integer greater than zero",
                          nameof(chunkSize)
                          );
            }

            return(chunkSize == 1
                       ? enumerable.Select(item => new[] { item })
                       : IEnumerableExtensions.InChunksOfImpl(enumerable, chunkSize));
        }