private static Task[] GenerateTasks(IPostingLineCollection postingLineCollection, Predicate <IPostingLine> selector, Func <IReadOnlyCollection <IPostingLine>, Task> taskGenerator)
        {
            NullGuard.NotNull(postingLineCollection, nameof(postingLineCollection))
            .NotNull(selector, nameof(selector))
            .NotNull(taskGenerator, nameof(taskGenerator));

            return(postingLineCollection.AsParallel()
                   .GroupBy(postingLine => postingLine.PostingDate.Year)
                   .Select(group => taskGenerator(group.AsParallel().Where(postingLine => selector(postingLine)).ToArray()))
                   .ToArray());
        }