Converted pre* to use First instead of Leftmost. You can use firstOf if you want to use the Leftmost logic