/// <summary>
        /// Standard constructor
        /// </summary>
        public TokenKeyWords(IsIdentifierLetter identifier, bool isCaseSensitive, IEnumerable <string> keyWords)
            : base()
        {
            if (null == keyWords)
            {
                throw new ArgumentNullException("keyWords");
            }

            m_IsIdentifierLetter = identifier ?? IsStandardIdentifier;
            m_IsCaseSensitive    = isCaseSensitive;

            HashSet <string> hs = new HashSet <string>(isCaseSensitive ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase);

            foreach (var line in keyWords)
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                hs.Add(line);
            }

            m_Items.AddRange(hs);

            m_Items.Sort((left, right) => - left.Length.CompareTo(right.Length));
        }
 /// <summary>
 /// Standard constructor
 /// </summary>
 public TokenKeyWords(IsIdentifierLetter identifier, IEnumerable <string> keyWords)
     : this(identifier, true, keyWords)
 {
 }