private TokenStream LazyAdvance(IEnumerator<Token> enumerator)
{
if (enumerator.MoveNext())
return new TokenStream(enumerator.Current, enumerator);
if (Current.Kind == TokenKind.EndOfInput)
return this;
var endPosition = new Position(Position.Line, Position.Column + Current.Literal.Length);
return new TokenStream(new Token(TokenKind.EndOfInput, endPosition, ""));
}