public static object SetObjectPublishedBy(this IObjectPublication publication,
                                                  Func <object, object> newPublishedByFactory)
        {
            publication.NotNull(nameof(publication));
            newPublishedByFactory.NotNull(nameof(newPublishedByFactory));

            var newPublishedBy = publication.GetObjectPublishedBy();

            return(publication.SetObjectPublishedBy(newPublishedByFactory.Invoke(newPublishedBy)));
        }
        public static async ValueTask <object> SetObjectPublishedByAsync(this IObjectPublication publication,
                                                                         Func <object, object> newPublishedByFactory, CancellationToken cancellationToken = default)
        {
            publication.NotNull(nameof(publication));
            newPublishedByFactory.NotNull(nameof(newPublishedByFactory));

            var newPublishedBy = await publication.GetObjectPublishedByAsync(cancellationToken).ConfigureAwait();

            return(await publication.SetObjectPublishedByAsync(newPublishedByFactory.Invoke(newPublishedBy), cancellationToken)
                   .ConfigureAwait());
        }