/// <summary>
		/// Splits the rule flags.
		/// </summary>
		/// <param name="flags">The flags.</param>
		/// <returns></returns>
		protected IRuleFlagProcessor SplitRuleFlags(string flags)
		{
			RuleFlagProcessor dictionary = new RuleFlagProcessor();
			List<string> temporaryHolding = new List<string>();

			dictionary.BeginAdd();
			foreach (string flag in flags.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
			{
				string temp = flag;

				if (flag.Contains("\"") || temporaryHolding.Count > 0)
				{
					temporaryHolding.Add(flag.Replace("\"", String.Empty));

					if (flag.Contains("\"") && temporaryHolding.Count > 1)
					{
						temp = String.Join(",", temporaryHolding.ToArray());
						temporaryHolding.Clear();
					}
					else
						continue;
				}

				IRuleFlag ruleFlag = AddRuleFlag(temp);
				if (ruleFlag != null)
					dictionary.Add(ruleFlag);
			}
			dictionary.EndAdd();

			return dictionary;
		}