code: func SetUpValue(l *State, function, index int) (name string, ok bool) {
  	if c, isClosure := l.indexToValue(function).(closure); isClosure {
  		if ok = 1 <= index && index <= c.upValueCount(); ok {
  			if c, isLua := c.(*luaClosure); isLua {
  				name = c.prototype.upValues[index-1].name
  			}
  			l.top--
  			c.setUpValue(index-1, l.stack[l.top])
  		}
  	}
  	return
  }
docs: // SetUpValue sets the value of a closure's upvalue. It assigns the value at
  // the top of the stack to the upvalue and returns its name.  It also pops a
  // value from the stack. function and index are as in UpValue.
  //
  // Returns an empty string and false if the index is greater than the number
  // of upvalues.
  //
  // http://www.lua.org/manual/5.2/manual.html#lua_setupvalue