#pragma warning disable S2436 // Classes and methods should not have too many generic parameters
        public static Task FindAndModifyByPropertyAsync <TModel, TKey, TProperty>(
#pragma warning restore S2436 // Classes and methods should not have too many generic parameters
            this ICollectionWrapper <TModel, TKey> collectionWrapper,
            DomainEvent e,
            Expression <Func <TModel, TProperty> > propertySelector,
            TProperty propertyValue,
            Action <TModel> action,
            bool notify = false)
            where TModel : IReadModelEx <TKey>
        {
            Func <TModel, Task> wrapper = m =>
            {
                action(m);
                return(Task.CompletedTask);
            };

            return(collectionWrapper.FindAndModifyByPropertyAsync <TProperty>(e, propertySelector, propertyValue, wrapper, notify));
        }