///<summary>
            ///Determines whether the specified <see cref="T:System.Object"></see> is equal to the current <see cref="T:System.Object"></see>.
            ///</summary>
            ///
            ///<returns>
            ///true if the specified <see cref="T:System.Object"></see> is equal to the current <see cref="T:System.Object"></see>; otherwise, false.
            ///</returns>
            ///
            ///<param name="obj">The <see cref="T:System.Object"></see> to compare with the current <see cref="T:System.Object"></see>. </param><filterpriority>2</filterpriority>
            public override bool Equals(object obj)
            {
                // Needed for proper list updates
                ClassMemberPath prop = obj as ClassMemberPath;
                bool            bRet = prop != null;

                if (bRet)
                {
                    if (prop.isRecursive != isRecursive)
                    {
                        bRet = false;
                    }
                    else
                    {
                        if (prop.members == members)
                        {
                            bRet = true;
                        }
                        else if (prop.members != null && members != null && prop.members.Count == members.Count)
                        {
                            // Check every element of collections
                            for (int i = members.Count - 1; i >= 0; i--)
                            {
                                if (!members[i].Equals(prop.members[i]))
                                {
                                    bRet = false;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            bRet = false;
                        }
                    }
                }
                return(bRet);
            }
		/// <summary>
		/// Selects the packet and its property in comboboxes.
		/// </summary>
		/// <param name="packetClass">The packet class.</param>
		/// <param name="packetClassMember">The packet class member.</param>
		private void SelectPacketAndProperty(PacketClass packetClass, ClassMemberPath packetClassMember)
		{
			if (null != packetClass)
			{
				packetClassComboBox.SelectedItem = packetClass;
			}
			if (null != packetClassMember)
			{
				packetClassPropertyComboBox.SelectedItem = packetClassMember;
			}
		}