public void ParseModeMessage(string message, IRCUser sender, Channel channel, string[] line) { ModeChangedEventArgs.ModeChangeType type = ModeChangedEventArgs.ModeChangeType.Assignment; int argscount = 0, linecount = 0, argnumber; for (int i = 0; i < line[3].Length; ++i) if ((!line[3][i].Equals('+')) && (!line[3][i].Equals('-'))) ++argscount; for (int i = 0; i < line[3].Length; ++i) if (line[3][i].Equals('+')) type = ModeChangedEventArgs.ModeChangeType.Assignment; else if (line[3][i].Equals('-')) type = ModeChangedEventArgs.ModeChangeType.Revocation; else { argnumber = (line.Length - 4) + ++linecount; container.OnModeChanged(message, sender, channel, line[3][i], type, (argnumber > argscount) ? line[(line.Length - 4) + (argnumber - argscount)] : string.Empty); } }