private void AddPatternWithCaseInsensitivePrefix(string prefix, IPatternMatcher matcher, bool needSeparators, object[] tags)
{
//make a lowercase string and add it as a token
prefix = prefix.ToLower();
char startChar = prefix[0];
int startIndex = startChar;
if (nodes[startIndex] == null)
nodes[startIndex] = new TokenTreeNode();
nodes[startIndex].AddPattern(prefix, false, needSeparators, matcher, tags);
//make a lowercase string with a uppercase start char and add it as a token
prefix = char.ToUpper(startChar) + prefix.Substring(1);
startChar = prefix[0];
startIndex = startChar;
if (nodes[startIndex] == null)
nodes[startIndex] = new TokenTreeNode();
nodes[startIndex].AddPattern(prefix, false, needSeparators, matcher, tags);
}