public void CheckedChangedTest()
        {
            INuGenMenuItemGroup group = _checkedTracker.CreateGroup(
                new ToolStripMenuItem[] {
                _menuItem,
                _menuItem2,
                _menuItem3
            }
                );

            Assert.AreEqual(3, group.Items.Count);

            for (int i = 0; i < 2; i++)
            {
                _checkedTracker.CheckedChanged(group, _menuItem);

                Assert.IsTrue(_menuItem.Checked);
                Assert.IsFalse(_menuItem2.Checked);
                Assert.IsFalse(_menuItem3.Checked);
            }

            _checkedTracker.CheckedChanged(group, _menuItem2);

            Assert.IsFalse(_menuItem.Checked);
            Assert.IsTrue(_menuItem2.Checked);
            Assert.IsFalse(_menuItem3.Checked);
        }
        /// <summary>
        /// </summary>
        /// <exception cref="ArgumentNullException">
        /// <para><paramref name="groupToContainCheckedMenuItem"/> is <see langword="null"/>.</para>
        /// -or-
        /// <para><paramref name="menuItemToCheck"/> is <see langword="null"/>.</para>
        /// </exception>
        public void CheckedChanged(INuGenMenuItemGroup groupToContainCheckedMenuItem, ToolStripMenuItem menuItemToCheck)
        {
            if (groupToContainCheckedMenuItem == null)
            {
                throw new ArgumentNullException("groupToContainCheckedMenuItem");
            }

            if (menuItemToCheck == null)
            {
                throw new ArgumentNullException("menuItemToCheck");
            }

            if (!groupToContainCheckedMenuItem.Items.Contains(menuItemToCheck))
            {
                return;
            }

            if (_groups.ContainsKey(groupToContainCheckedMenuItem))
            {
                ToolStripMenuItem menuItem = _groups[groupToContainCheckedMenuItem];

                if (menuItem != menuItemToCheck)
                {
                    if (menuItem != null)
                    {
                        menuItem.Checked = false;
                    }

                    _groups[groupToContainCheckedMenuItem] = menuItemToCheck;
                }
            }
            else
            {
                _groups.Add(groupToContainCheckedMenuItem, menuItemToCheck);
            }

            menuItemToCheck.Checked = true;
        }
		/// <summary>
		/// </summary>
		/// <exception cref="ArgumentNullException">
		/// <para><paramref name="groupToContainCheckedMenuItem"/> is <see langword="null"/>.</para>
		/// -or-
		/// <para><paramref name="menuItemToCheck"/> is <see langword="null"/>.</para>
		/// </exception>
		public void ChangeChecked(INuGenMenuItemGroup groupToContainCheckedMenuItem, ToolStripMenuItem menuItemToCheck)
		{
			if (groupToContainCheckedMenuItem == null)
			{
				throw new ArgumentNullException("groupToContainCheckedMenuItem");
			}

			if (menuItemToCheck == null)
			{
				throw new ArgumentNullException("menuItemToCheck");
			}

			if (!groupToContainCheckedMenuItem.Items.Contains(menuItemToCheck))
			{
				return;
			}

			if (_groups.ContainsKey(groupToContainCheckedMenuItem))
			{
				ToolStripMenuItem menuItem = _groups[groupToContainCheckedMenuItem];

                if (menuItem != menuItemToCheck)
                {
                    if (menuItem != null)
                    {
                        menuItem.Checked = false;
                    }

                    _groups[groupToContainCheckedMenuItem] = menuItemToCheck;
                    menuItemToCheck.Checked = true;
                }
			}
			else
			{
				_groups.Add(groupToContainCheckedMenuItem, menuItemToCheck);
				menuItemToCheck.Checked = true;
			}
		}
		/*
		 * CheckedChanged
		 */

		/// <summary>
		/// </summary>
		/// <param name="groupToContainCheckedMenuItem"></param>
		/// <param name="checkedMenuItem"></param>
		/// <exception cref="ArgumentNullException">
		/// <para>
		///		<paramref name="groupToContainCheckedMenuItem"/> is <see langword="null"/>.
		/// </para>
		/// -or-
		/// <para>
		///		<paramref name="checkedMenuItem"/> is <see langword="null"/>.
		/// </para>
		/// </exception>
		public void CheckedChanged(INuGenMenuItemGroup groupToContainCheckedMenuItem, ToolStripMenuItem checkedMenuItem)
		{
			if (groupToContainCheckedMenuItem == null)
			{
				throw new ArgumentNullException("groupToContainCheckedMenuItem");
			}

			if (checkedMenuItem == null)
			{
				throw new ArgumentNullException("checkedMenuItem");
			}

			if (!groupToContainCheckedMenuItem.Items.Contains(checkedMenuItem))
			{
				return;
			}

			if (this.Groups.ContainsKey(groupToContainCheckedMenuItem))
			{
				ToolStripMenuItem menuItem = this.Groups[groupToContainCheckedMenuItem];

				if (menuItem != checkedMenuItem)
				{
					if (menuItem != null)
					{
						menuItem.Checked = false;
					}

					this.Groups[groupToContainCheckedMenuItem] = checkedMenuItem;
				}
			}
			else
			{
				this.Groups.Add(groupToContainCheckedMenuItem, checkedMenuItem);
			}
		}
        /*
         * CheckedChanged
         */

        /// <summary>
        /// </summary>
        /// <param name="groupToContainCheckedMenuItem"></param>
        /// <param name="checkedMenuItem"></param>
        /// <exception cref="ArgumentNullException">
        /// <para>
        ///		<paramref name="groupToContainCheckedMenuItem"/> is <see langword="null"/>.
        /// </para>
        /// -or-
        /// <para>
        ///		<paramref name="checkedMenuItem"/> is <see langword="null"/>.
        /// </para>
        /// </exception>
        public void CheckedChanged(INuGenMenuItemGroup groupToContainCheckedMenuItem, ToolStripMenuItem checkedMenuItem)
        {
            if (groupToContainCheckedMenuItem == null)
            {
                throw new ArgumentNullException("groupToContainCheckedMenuItem");
            }

            if (checkedMenuItem == null)
            {
                throw new ArgumentNullException("checkedMenuItem");
            }

            if (!groupToContainCheckedMenuItem.Items.Contains(checkedMenuItem))
            {
                return;
            }

            if (this.Groups.ContainsKey(groupToContainCheckedMenuItem))
            {
                ToolStripMenuItem menuItem = this.Groups[groupToContainCheckedMenuItem];

                if (menuItem != checkedMenuItem)
                {
                    if (menuItem != null)
                    {
                        menuItem.Checked = false;
                    }

                    this.Groups[groupToContainCheckedMenuItem] = checkedMenuItem;
                }
            }
            else
            {
                this.Groups.Add(groupToContainCheckedMenuItem, checkedMenuItem);
            }
        }