Lots of dirty hacking. Need to revisit and review.

@todo: TokenList and LineCollection do many of the same things .. should
extend common class