NULL_ENTITY = entity(0) function deepcopy(orig) local orig_type = type(orig) local copy if orig_type == 'table' then copy = {} for orig_key, orig_value in next, orig, nil do copy[deepcopy(orig_key)] = deepcopy(orig_value) end setmetatable(copy, deepcopy(getmetatable(orig))) else -- number, string, boolean, etc copy = orig end return copy end function table:merge(table1, table2) local newTable = deepcopy(table1) for k, v in pairs(table2) do newTable[k] = v end return newTable end