The following (if added in TokenRangeTest) fails:
TokenRange.contains(Token, boolean) does not handle the case where both the end of the range and the input token are the min token.
See suggested fix here.
I think we should make the method package-private and unit test it. And maybe refactor the code as well because it's getting hard to read.