return function()local v=game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")local h=v.Packages local B=require(h.Llama)local k=B.None local c=B.List local E=c.concatDeep it("\115\104\111\117\108\100 \118\097\108\105\100\097\116\101 \116\121\112\101\115",function()local v={{0};{{};0}}for h=1,#v,1 do local B,k=pcall(function()E(unpack(v[h]))end);(expect(string.find(k,"\101\120\112\101\099\116\101\100\044 \103\111\116"))).to.be.ok()end end)it("\115\104\111\117\108\100 \114\101\116\117\114\110 \097 \110\101\119 \116\097\098\108\101",function()local v={};(expect(E(v))).never.to.equal(v)end)it("\115\104\111\117\108\100 \110\111\116 \109\117\116\097\116\101 \112\097\115\115\101\100 \105\110 \116\097\098\108\101\115",function()local v={"\102\111\111","\098\097\114"}local h=0 setmetatable(v,{__newindex=function()h=h+1 end})E(v);(expect(h)).to.equal(0)end)it("\115\104\111\117\108\100 \114\101\109\111\118\101 \101\108\101\109\101\110\116\115 \101\113\117\097\108 \116\111 \078\111\110\101",function()local v={"\102\111\111-\097"}local h={k,"\102\111\111-\098"}local B=E(v,h);(expect(#B)).to.equal(2);(expect(B[1])).to.equal("\102\111\111-\097");(expect(B[2])).to.equal("\102\111\111-\098")end)it("\115\104\111\117\108\100 \097\099\099\101\112\116 \097\114\098\105\116\114\097\114\121 \110\117\109\098\101\114\115 \111\102 \116\097\098\108\101\115",function()local v={1}local h={2}local B={3}local k=E(v,h,B);(expect(#k)).to.equal(3);(expect(k[1])).to.equal(1);(expect(k[2])).to.equal(2);(expect(k[3])).to.equal(3)end)it("\115\104\111\117\108\100 \097\099\099\101\112\116 \122\101\114\111 \116\097\098\108\101\115",function()(expect(E())).to.be.a("\116\097\098\108\101")end)it("\115\104\111\117\108\100 \097\099\099\101\112\116 \104\111\108\101\115 \105\110 \097\114\103\117\109\101\110\116\115",function()local v={1}local h={2}local B=E(v,nil,h);(expect(#B)).to.equal(2);(expect(B[1])).to.equal(1);(expect(B[2])).to.equal(2)local k=E(nil,v,h);(expect(#k)).to.equal(2);(expect(k[1])).to.equal(1);(expect(k[2])).to.equal(2)end)it("\115\104\111\117\108\100 \106\111\105\110 \116\097\098\108\101\115 \097\110\100 \099\111\112\121 \115\117\098\116\097\098\108\101\115",function()local v={"\102\111\111-\097",{"\098\097\114-\097",{"\098\097\122-\097"}}}local h={"\102\111\111-\098";{"\098\097\114-\098",{"\098\097\122-\098"}}}local B=E(v,h);(expect(B[1])).to.equal(v[1]);(expect(B[2])).never.to.equal(v[2]);(expect(B[3])).to.equal(h[1]);(expect(B[4])).never.to.equal(h[2]);(expect(B[2][1])).to.equal(v[2][1]);(expect(B[2][2])).never.to.equal(v[2][2]);(expect(B[4][1])).to.equal(h[2][1]);(expect(B[4][2])).never.to.equal(h[2][2]);(expect(B[2][2][1])).to.equal(v[2][2][1]);(expect(B[4][2][1])).to.equal(h[2][2][1])end)end
return function()
	local ReplicatedStorage = game:GetService("ReplicatedStorage")

	local Packages = ReplicatedStorage.Packages
	local Llama = require(Packages.Llama)

	local None = Llama.None

	local List = Llama.List
	local concatDeep = List.concatDeep

	it("should validate types", function()
		local args = {
			{ 0 },
			{ {}, 0 },
		}

		for i = 1, #args do
			local _, err = pcall(function()
				concatDeep(unpack(args[i]))
			end)

			expect(string.find(err, "expected, got")).to.be.ok()
		end
	end)

	it("should return a new table", function()
		local a = {}

		expect(concatDeep(a)).never.to.equal(a)
	end)

	it("should not mutate passed in tables", function()
		local a = { "foo", "bar" }
		local mutations = 0

		setmetatable(a, {
			__newindex = function()
				mutations = mutations + 1
			end,
		})

		concatDeep(a)

		expect(mutations).to.equal(0)
	end)

	it("should remove elements equal to None", function()
		local a = {
			"foo-a"
		}

		local b = {
			None,
			"foo-b"
		}

		local c = concatDeep(a, b)

		expect(#c).to.equal(2)
		expect(c[1]).to.equal("foo-a")
		expect(c[2]).to.equal("foo-b")
	end)

	it("should accept arbitrary numbers of tables", function()
		local a = { 1 }
		local b = { 2 }
		local c = { 3 }

		local d = concatDeep(a, b, c)

		expect(#d).to.equal(3)
		expect(d[1]).to.equal(1)
		expect(d[2]).to.equal(2)
		expect(d[3]).to.equal(3)
	end)

	it("should accept zero tables", function()
		expect(concatDeep()).to.be.a("table")
	end)

	it("should accept holes in arguments", function()
		local a = { 1 }
		local b = { 2 }

		local c = concatDeep(a, nil, b)

		expect(#c).to.equal(2)
		expect(c[1]).to.equal(1)
		expect(c[2]).to.equal(2)

		local d = concatDeep(nil, a, b)

		expect(#d).to.equal(2)
		expect(d[1]).to.equal(1)
		expect(d[2]).to.equal(2)
	end)

	it("should join tables and copy subtables", function()
		local a = {
			"foo-a",
			{
				"bar-a",
				{
					"baz-a"
				}
			}
		}

		local b = {
			"foo-b",
			{
				"bar-b",
				{
					"baz-b"
				}
			}
		}

		local c = concatDeep(a, b)

		expect(c[1]).to.equal(a[1])
		expect(c[2]).never.to.equal(a[2])
		expect(c[3]).to.equal(b[1])
		expect(c[4]).never.to.equal(b[2])

		expect(c[2][1]).to.equal(a[2][1])
		expect(c[2][2]).never.to.equal(a[2][2])
		expect(c[4][1]).to.equal(b[2][1])
		expect(c[4][2]).never.to.equal(b[2][2])
		
		expect(c[2][2][1]).to.equal(a[2][2][1])
		expect(c[4][2][1]).to.equal(b[2][2][1])
	end)
end