Lexer now records the start index and length of each parsed node