--[[
Simple signal/slot implementation
]]
local signal_mt = {
    __index = {
        register = table.insert
    }
}
function signal_mt.__index:emit(... --[[ Comment in params ]])
    for _: number, slot: any in ipairs(self) do
        slot(self, ...)
    end
end
local function create_signal(): typeof(signal_mt)
    return setmetatable({}, signal_mt)
end

-- Signal test
local signal: typeof(signal_mt) = create_signal()
signal:register(function(signal, ...)
    print(...)
end)
signal:emit(Answer to Life, the Universe, and Everything:', 42)

-- Output test
local testNumber: number = 10

print(`this is line, and "testNumber" equals to: {testNumber}.`)

--[==[ [=[ [[
Nested ]]
multi-line ]=]
comment ]==]
[==[ Nested
[=[ multi-line
[[ string
]] ]=] ]==]