public Task Publish(INotificationIndication notification, CancellationToken cancellationToken = default)
        {
            var notificationType   = notification.GetType();
            var handlerWrapperType = typeof(INotificationHandlerWrapper <>).MakeGenericType(notificationType);

            var handlerWrapper = _notificationHandlers.GetOrAdd(notificationType,
                                                                type => (INotificationHandlerWrapperIndication)_serviceFactory.GetRequiredService(handlerWrapperType));

            //var method = handlerWrapperType.GetMethod("HandleAsync");
            //return (Task)method.Invoke(handlerWrapper, new object[]
            //{
            //    notification, _serviceProvider, cancellationToken
            //});

            return(((dynamic)handlerWrapper).HandleAsync(notification, _serviceFactory, cancellationToken));
        }