public static object SetObjectUpdatedBy(this IObjectUpdation updation,
                                                Func <object, object> newUpdatedByFactory)
        {
            updation.NotNull(nameof(updation));
            newUpdatedByFactory.NotNull(nameof(newUpdatedByFactory));

            var newUpdatedBy = updation.GetObjectUpdatedBy();

            return(updation.SetObjectUpdatedBy(newUpdatedByFactory.Invoke(newUpdatedBy)));
        }
        public static async ValueTask <object> SetObjectUpdatedByAsync(this IObjectUpdation updation,
                                                                       Func <object, object> newUpdatedByFactory, CancellationToken cancellationToken = default)
        {
            updation.NotNull(nameof(updation));
            newUpdatedByFactory.NotNull(nameof(newUpdatedByFactory));

            var newUpdatedBy = await updation.GetObjectUpdatedByAsync(cancellationToken).ConfigureAwait();

            return(await updation.SetObjectUpdatedByAsync(newUpdatedByFactory.Invoke(newUpdatedBy), cancellationToken)
                   .ConfigureAwait());
        }