Calling ProjectFileLanguageService.CreateLexer:


Only thing that calls it...


TodoManager.ProcessProjectFile

Calls lexer.Start + loops over file
foreach token, checks each todo item pattern against it
	if token is comment and pattern can look in comments
	if token is string literal and pattern can look in string literals, etc
	asks lexer for current token text
	also asks language service (not ProjectFileLanguageService) for text (GetTokenContentsText)




Calling LanguageService.CreateLexer

PsiFilesCache.GetOrCreatePsiFile
  CreatePrimaryFile   <-- in here
  get secondary languages from ProjectFileLanguageServiceManager
  some crazy linq - using the secondary languages to parse associated files?

PsiFilesCache.CreatePrimaryFile
  creates new CachedPsiFile, passing in language service as ILexerFactory

CachedPsiFile
  creates TokenBuffer with language service, which gets ILexer and scans to end
  then calls language service to get IParser
  then calls IParser.ParseFile (passing in something about OpenChameleons?!)
  then creates reference providers (from attributes) based on the parsed file