Changes
generate an error message when union and intersection functions are called with no arguments
--]]
function p.union(...)
	local lim = select('#', ...) 
	if lim == 0 then
		error("no arguments passed to 'union'", 2)
	end
	local ret, trackArrays = {}, {}
	for i = 1, select('#', ...) lim do
		local t = select(i, ...)
		checkType('union', i, t, 'table')
--]]
function p.valueUnion(...)
	local lim = select('#', ...) 
	if lim == 0 then
		error("no arguments passed to 'valueUnion'", 2)
	end
	local vals, ret = {}, {}
	for i = 1, select('#', ...) lim do
		local t = select(i, ...)
		checkType('valueUnion', i, t, 'table')
--]]
function p.intersection(...)
	local lim = select('#', ...) 
	if lim == 0 then
		error("no arguments passed to 'intersection'", 2)
	end
	local ret, track, pairCounts = {}, {}, {}
	for i = 1, lim do
		local t = select(i, ...)
--]]
function p.valueIntersection(...)
	local lim = select('#', ...) 
	if lim == 0 then
		error("no arguments passed to 'valueIntersection'", 2)
	end
	local vals, ret = {}, {}
	for i = 1, lim do
		local t = select(i, ...)