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