require "oop.class" require "oop.mixin" require "oop.property" require "oop.enum" Fmt = require "oop.fstrings" Handler = require "oop.handler" Option = require "oop.option" Try = require "oop.try" -- local function upvalue_find(func, key) -- assert("string" == type(key)) -- local index = 1 -- local iKey -- local iValue -- repeat -- iKey, iValue = debug.getupvalue(func, index) -- if iKey == key then -- return iValue, index -- end -- index = index + 1 -- until nil == iKey -- end -- local function upvalue_replace(func, key, value) -- local _, index = upvalue_find(func, key) -- if index then -- debug.setupvalue(func, index, value) -- return true -- else -- return false -- end -- end