I noticed that if you passed in just a number, JS would helpfully parse that and then `source.length` was undefined, which broke the lexer.