if you use `&& self.eat(token::SEMI)` instead of `self.token == token::SEMI` you can also get rid of the `self.bump()`