function t.literal(...)local r=select("\035",...)if r==1 then local r=...return function(B)if B~=r then return false end return true end else local B={}for r=1,r,1 do local p=select(r,...)B[r]=t.literal(p)end return t.union(table.unpack(B,1,r))end end
--[[**
	ensures value is a given literal value

	@param literal The literal to use

	@returns A function that will return true iff the condition is passed
**--]]
function t.literal(...)
	local size = select("#", ...)
	if size == 1 then
		local literal = ...
		return function(value)
			if value ~= literal then
				return false
			end

			return true
		end
	else
		local literals = {}
		for i = 1, size do
			local value = select(i, ...)
			literals[i] = t.literal(value)
		end

		return t.union(table.unpack(literals, 1, size))
	end
end
