private static PatternScanResult ComplexFindKeyword(this Pattern self, string text, int startPosition)
        {
            PatternScanResult res;
            while (true)
            {
                res = self.ComplexFind(text, startPosition);
                if (res.Token == "")
                    return res;

                if (self.CharIsSeparator(text, res.Index - 1) && self.CharIsSeparator(text, res.Index + res.Token.Length))
                    return res;

                startPosition = res.Index + 1;
                if (startPosition >= text.Length)
                {
                    res.Token = "";
                    res.Index = 0;
                    return res;
                }
            }
        }
 /// <summary>
 /// For public use only
 /// </summary>
 /// <param name="self"></param>
 /// <param name="text"></param>
 /// <param name="position"></param>
 /// <returns></returns>
 public static bool HasSeparators(this Pattern self,string text, int position)
 {
     return (self.CharIsSeparator(text, position - 1) && self.CharIsSeparator(text, position + self.StringPattern.Length));
 }