When this at long last gets done, one should also evaluate:
- Ranges should be objects or classes and provide information about being "foldable", multiline, a string, a comment, etc.
- Probably should unify range and token (remove GetRange method).
- Cleanup/simplify and optimize highlighter interface (and maybe move it to a "real" interface).
- Support some "standard" compiler-compiler dialect like BNF (ref. http://bnf-for-java.sourceforge.net\).