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];
}
}