function CopyObject(o)
	if type(o) == "table" then
		local t = {}
		for k, v in pairs(o) do
			t[k] = CopyObject(v)
		end
		return t
	elseif type(o) == "function" then
		local _o = ProtectedCall(string.dump, o)
		if _o then return loadstring(_o) end
	end
	return o
end