private void OnWeaknessMitigationAdded(IWeaknessMitigationsContainer container, IWeaknessMitigation mitigation)
        {
            if (container is IWeakness weakness)
            {
                var filterSpecial = EnumExtensions.GetEnumValue <WeaknessListFilter>((string)_specialFilter.SelectedItem);
                if (IsSelected(weakness, _filter.Text, filterSpecial))
                {
                    var row = GetRow(weakness);
                    if (row == null)
                    {
                        row = AddGridRow(weakness, _grid.PrimaryGrid);
                    }

                    var scenarioPanel = row.Rows.OfType <GridPanel>()
                                        .FirstOrDefault(x => string.CompareOrdinal(x.Name, "Mitigations") == 0);
                    if (scenarioPanel != null)
                    {
                        AddGridRow(mitigation, scenarioPanel);
                    }
                    else
                    {
                        scenarioPanel = CreateMitigationsPanel(weakness);
                        if (scenarioPanel != null)
                        {
                            row.Rows.Add(scenarioPanel);
                        }
                    }

                    UpdateMitigationLevel(weakness, row);
                }
            }
        }
        private void OnWeaknessMitigationRemoved(IWeaknessMitigationsContainer container, IWeaknessMitigation mitigation)
        {
            if (container is IWeakness weakness)
            {
                var row = GetRow(weakness);

                var panel       = row?.Rows.OfType <GridPanel>().FirstOrDefault(x => string.CompareOrdinal(x.Name, "Mitigations") == 0);
                var scenarioRow = panel?.Rows.OfType <GridRow>()
                                  .FirstOrDefault(x =>
                                                  (x.Tag is IWeaknessMitigation weaknessMitigation) && weaknessMitigation == mitigation);
                if (scenarioRow != null)
                {
                    panel.Rows.Remove(scenarioRow);

                    if (panel.Rows.Count == 0)
                    {
                        row.Rows.Remove(panel);
                    }

                    UpdateMitigationLevel(weakness, row);
                }
            }
        }