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); }