code: func FuncReturning(funcType reflect.Type, results ...interface{}) reflect.Value {
  	var resultValues []reflect.Value
  	for i, r := range results {
  		var retValue reflect.Value
  		if r == nil {
  			// We can't use reflect.ValueOf(nil), so we need to create the zero value.
  			retValue = reflect.Zero(funcType.Out(i))
  		} else {
  			// We cannot simply use reflect.ValueOf(r) as that does not work for
  			// interface types, as reflect.ValueOf receives the dynamic type, which
  			// is the underlying type. e.g. for an error, it may *errors.errorString.
  			// Instead, we make the return type's expected interface value using
  			// reflect.New, and set the data to the passed in value.
  			tempV := reflect.New(funcType.Out(i))
  			tempV.Elem().Set(reflect.ValueOf(r))
  			retValue = tempV.Elem()
  		}
  		resultValues = append(resultValues, retValue)
  	}
  	return reflect.MakeFunc(funcType, func(_ []reflect.Value) []reflect.Value {
  		return resultValues
  	})
  }
docs: // FuncReturning creates a new function with type funcType that returns results.