    /*
     *  call-seq:
     *     SpanOrQuery.new(options = {}) -> query
     *
     *  Create a new SpanOrQuery. This is just like a BooleanQuery with all
     *  clauses with the occur value of :should. The difference is that it can be
     *  passed to other SpanQuerys like SpanNearQuery.
     */
    static VALUE
    frt_spanoq_init(int argc, VALUE *argv, VALUE self)
    {
        Query *q;
        VALUE rclauses;

        q = spanoq_new();
        if (rb_scan_args(argc, argv, "01", &rclauses) > 0) {
            int i;
            Query *clause;
            Check_Type(rclauses, T_ARRAY);
            for (i = 0; i < RARRAY(rclauses)->len; i++) {
                Data_Get_Struct(RARRAY(rclauses)->ptr[i], Query, clause);
                spanoq_add_clause(q, clause);
            }
        }
        Frt_Wrap_Struct(self, &frt_spanoq_mark, &frt_q_free, q);
        object_add(q, self);
        return self;
    }