    /*
     * Document-method: encode
     *
     * call-seq: encode(obj[, io[, &block]])
     *
     * +obj+ is the Ruby object to encode to JSON
     *
     * +io+ is an optional IO used to stream the encoded JSON string to.
     * If +io+ isn't specified, this method will return the resulting JSON string. If +io+ is specified, this method returns nil
     *
     * If an optional block is passed, it's called when encoding is complete and passed the resulting JSON string
     *
     * It should be noted that you can reuse an instance of this class to continue encoding multiple JSON
     * to the same stream. Just continue calling this method, passing it the same IO object with new/different
     * ruby objects to encode. This is how streaming is accomplished.
     */
    static VALUE rb_yajl_encoder_encode(int argc, VALUE * argv, VALUE self) {