public static TWidget TryGetWidget <TWidget>(WidgetsListControlViewModel widgetsViewModel, out bool shouldReload, TWidget defaultValue = default(TWidget)) where TWidget : IWidgetItemModel, new()
        {
            bool canAddWidget           = widgetsViewModel.CanAddWidget(typeof(TWidget).Name);
            bool isWidgetSettingEnabled = TryGetIsWidgetSettingEnabled <TWidget>();

            if (canAddWidget && isWidgetSettingEnabled)
            {
                shouldReload = true;
                return(new TWidget());
            }
            else if (!canAddWidget && !isWidgetSettingEnabled) // The widgets exists but the setting has been disabled for it
            {
                // Remove the widget
                widgetsViewModel.RemoveWidget <TWidget>();
                shouldReload = false;
                return(default(TWidget));
            }
            else if (!isWidgetSettingEnabled)
            {
                shouldReload = false;
                return(default(TWidget));
            }

            shouldReload = EqualityComparer <TWidget> .Default.Equals(defaultValue, default(TWidget));

            return(defaultValue);
        }