    /*
     *  call-seq:
     *     token_stream.next -> token
     *
     *  Return the next token from the TokenStream or nil if there are no more
     *  tokens.
     */
    static VALUE
    frb_ts_next(VALUE self)
    {
        TokenStream *ts;
        Token *next;
        GET_TS(ts, self);
        next = ts->next(ts);
        if (next == NULL) {
            return Qnil;
        }

        return get_token(next);
    }