/// <summary>
 /// Parses the parameters portion of the message.
 /// </summary>
 protected override void ParseParameters( StringCollection parameters )
 {
     base.ParseParameters( parameters );
     this.Channel = parameters[ 1 ];
     this.User = new User( parameters[ 2 ] );
     this.TimeSet = MessageUtil.ConvertFromUnixTime( Convert.ToInt32( parameters[ 3 ], CultureInfo.InvariantCulture ) );
 }
        /// <summary>
        /// Parses the parameters portion of the message.
        /// </summary>
        protected override void ParseParameters( StringCollection parameters )
        {
            base.ParseParameters( parameters );
            this.User = new User();
            if ( parameters.Count == 7 )
            {

                this.Channel = parameters[ 1 ];
                this.User.UserName = parameters[ 2 ];
                this.User.HostName = parameters[ 3 ];
                this.Server = parameters[ 4 ];
                this.User.Nick = parameters[ 5 ];

                String levels = parameters[ 6 ];
                // TODO I'm going to ignore the H/G issue until i know what it means.
                this.IsOper = ( levels.IndexOf( "*", StringComparison.Ordinal ) != -1 );
                String lastLetter = levels.Substring( levels.Length - 1 );
                if ( ChannelStatus.Exists( lastLetter ) )
                {
                    this.Status = ChannelStatus.GetInstance( lastLetter );
                }
                else
                {
                    this.Status = ChannelStatus.None;
                }

                String trailing = parameters[ 7 ];
                this.HopCount = Convert.ToInt32( trailing.Substring( 0, trailing.IndexOf( " ", StringComparison.Ordinal ) ), CultureInfo.InvariantCulture );
                this.User.RealName = trailing.Substring( trailing.IndexOf( " ", StringComparison.Ordinal ) );

            }
        }