from_state (JSON::Ext::Generator::State)

    /*
     * call-seq: from_state(opts)
     *
     * Creates a State object from _opts_, which ought to be Hash to create a
     * new State instance configured by _opts_, something else to create an
     * unconfigured instance. If _opts_ is a State object, it is just returned.
     */
    static VALUE cState_from_state_s(VALUE self, VALUE opts)
    {
        if (rb_obj_is_kind_of(opts, self)) {
            return opts;
        } else if (rb_obj_is_kind_of(opts, rb_cHash)) {
            return rb_funcall(self, i_new, 1, opts);
        } else {
            return rb_funcall(self, i_new, 0);
        }
    }