code: func (c *Class) New(args ...Value) (*MrbValue, error) {
  	var argv []C.mrb_value
  	var argvPtr *C.mrb_value
  	if len(args) > 0 {
  		// Make the raw byte slice to hold our arguments we'll pass to C
  		argv = make([]C.mrb_value, len(args))
  		for i, arg := range args {
  			argv[i] = arg.MrbValue(c.mrb).value
  		}
  
  		argvPtr = &argv[0]
  	}
  
  	result := C.mrb_obj_new(c.mrb.state, c.class, C.mrb_int(len(argv)), argvPtr)
  	if exc := checkException(c.mrb.state); exc != nil {
  		return nil, exc
  	}
  
  	return newValue(c.mrb.state, result), nil
  }
docs: // New instantiates the class with the given args.