function t.literal(...)local P=select("\035",...)if P==1 then local P=...return function(z)if z~=P then return false,string.format("\101\120\112\101\099\116\101\100 \037\115\044 \103\111\116 \037\115",tostring(P),tostring(z))end return true end else local z={}for P=1,P,1 do local k=select(P,...)z[P]=t.literal(k)end return t.union(table.unpack(z,1,P))end end

function t.literal(...)
	local size = select("#", ...)
	if size == 1 then
		local literal = ...
		return function(value)
			if value ~= literal then
				return false, string.format("expected %s, got %s", tostring(literal), tostring(value))
			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
