    /*
     *  call-seq:
     *     term_doc_enum.doc -> doc_id
     *
     *  Move forward to the next document in the enumeration. Returns +true+ if
     *  there is another document or +false+ otherwise.
     */
    static VALUE
    frb_tde_next_position(VALUE self)
    {
        TermDocEnum *tde = (TermDocEnum *)DATA_PTR(self);
        int pos;
        if (tde->next_position == NULL) {
            rb_raise(rb_eNotImpError, "to scan through positions you must create "
                     "the TermDocEnum with Index#term_positions method rather "
                     "than the Index#term_docs method");
        }
        pos = tde->next_position(tde);
        return pos >= 0 ? INT2FIX(pos) : Qnil;
    }