func (v *MrbValue) CallBlock(method string, args ...Value) (*MrbValue, error) {
	if len(args) == 0 {
		return nil, fmt.Errorf("args must be non-empty and have a proc at the end")
	}
	n := len(args)
	return v.call(method, args[:n-1], args[n-1])
}
CallBlock is the same as call except that it expects the last
argument to be a Proc that will be passed into the function call.
It is an error if args is empty or if there is no block on the end.
package mruby
import (
	"fmt"
	"strconv"
	"strings"
	"unsafe"
)
import "C"
type Value interface {
	MrbValue(*Mrb) *MrbValue
}
type Int int
type NilType [0]byte
type String string
var Nil NilType
type MrbValue struct {
	value C.mrb_value
	state *C.mrb_state
}
func init() {
	Nil = [0]byte{}
}
func (v *MrbValue) SetInstanceVariable(variable string, value *MrbValue) {
	cs := C.CString(variable)
	defer C.free(unsafe.Pointer(cs))
	C._go_mrb_iv_set(v.state, v.value, C.mrb_intern_cstr(v.state, cs), value.value)
}
func (v *MrbValue) GetInstanceVariable(variable string) *MrbValue {
	cs := C.CString(variable)
	defer C.free(unsafe.Pointer(cs))
	return newValue(v.state, C._go_mrb_iv_get(v.state, v.value, C.mrb_intern_cstr(v.state, cs)))
}
func (v *MrbValue) Call(method string, args ...Value) (*MrbValue, error) {
	return v.call(method, args, nil)
}