public void Destroy(Guid widgetId)
        {
            if (widgetId == Guid.Empty)
            {
                throw new ArgumentException("Empty widget id.", nameof(widgetId));
            }

            object?mediator = store.Get(widgetId);

            if (mediator == null)
            {
                logger.Warning($"Widget {widgetId:B} can't be destroyed because doesn't exist.");
                return;
            }

            if (mediator is IDisposable disposable)
            {
                disposable.Dispose();
            }

            store.Remove(widgetId);
        }