code: func UpValue(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.apiPush(c.upValue(index - 1))
  		}
  	}
  	return
  }
docs: // UpValue returns the name of the upvalue at index away from function,
  // where index cannot be greater than the number of upvalues.
  //
  // Returns an empty string and false if the index is greater than the number
  // of upvalues.