public Token Peek(int offset) { if (offset <= 0) throw new ArgumentException("offset must be positive."); if (!HasCurrent || index + offset >= tokens.Length) return null; return tokens[index + offset]; } }