Reimplement TokenList safely and with the phantom type parameter. #31 #22