void lstAddOnSystems_ItemCheck(object sender, ItemCheckEventArgs e)
        {   //for single selection mode
            if (e.CurrentValue != CheckState.Checked)
            {
                if (_lastCheckedAddOnSystem != -1)
                {
                    lstAddOnSystems.SetItemChecked(_lastCheckedAddOnSystem, false);
                }
            }
            _lastCheckedAddOnSystem = e.Index;

            //select the base systems which are supported by the checked add-on system
            lstBaseSystems.Items.Clear();
            if (e.CurrentValue == CheckState.Checked)
            {
                return; //currently checked add-on system is unchecked
            }
            foreach (AddOnSystemInfo addOnSystemInfo in AddOnInfoHelper.GetAddOnSystemInfo(cmbAddOns.Text))
            {
                if (addOnSystemInfo._addOnSystemName != lstAddOnSystems.SelectedItem.ToString())
                {
                    continue;
                }
                foreach (string supportedSystemName in addOnSystemInfo._supportedSystems)
                {
                    foreach (string baseSystemName in _baseSystemNames)
                    {
                        if (EM_Helpers.DoesValueMatchPattern(supportedSystemName, baseSystemName))
                        {
                            lstBaseSystems.Items.Add(baseSystemName);
                        }
                    }
                }
            }
        }
        void cmbAddOns_SelectedIndexChanged(object sender, EventArgs e)
        {//list only the systems of the add-on which support at least one base system
            lstAddOnSystems.Items.Clear();
            lstBaseSystems.Items.Clear();
            _lastCheckedBaseSystem  = -1;
            _lastCheckedAddOnSystem = -1;

            if (cmbAddOns.Text == string.Empty)
            {
                return;
            }
            foreach (AddOnSystemInfo addOnSystemInfo in AddOnInfoHelper.GetAddOnSystemInfo(cmbAddOns.Text))
            {
                bool supportsAnySystems = false;
                foreach (string supportedSystemName in addOnSystemInfo._supportedSystems)
                {
                    foreach (string baseSystemName in _baseSystemNames)
                    {
                        if (EM_Helpers.DoesValueMatchPattern(supportedSystemName, baseSystemName))
                        {
                            supportsAnySystems = true;
                            break;
                        }
                    }
                    if (supportsAnySystems == true)
                    {
                        break;
                    }
                }
                if (supportsAnySystems == false)
                {
                    continue;
                }
                lstAddOnSystems.Items.Add(addOnSystemInfo._addOnSystemName);
            }
        }