code: func (m *Mrb) Run(v Value, self Value) (*MrbValue, error) {
  	if self == nil {
  		self = m.TopSelf()
  	}
  
  	mrbV := v.MrbValue(m)
  	mrbSelf := self.MrbValue(m)
  
  	proc := C._go_mrb_proc_ptr(mrbV.value)
  	value := C.mrb_run(m.state, proc, mrbSelf.value)
  
  	if exc := checkException(m.state); exc != nil {
  		return nil, exc
  	}
  
  	return newValue(m.state, value), nil
  }
docs: // Run executes the given value, which should be a proc type.
  //
  // If you're looking to execute code directly a string, look at LoadString.
  //
  // If self is nil, it is set to the top-level self.