--- Capture `fn`'s upvalues and pass to `delegate` ---@param delegate fun(env: table, _: ...): ... ---@param fn function ---@return fun(...): ... return function(delegate, fn) local upvalues = {} for i = 1, debug.getinfo(fn, "u").nups do local name, value = debug.getupvalue(fn, i) upvalues[name] = value end return function(...) return delegate(upvalues, ...) end end