return function()local M=(game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")).Packages.Monolith local G=require(M.Set)describe("\067\111\110\115\116\114\117\099\116\111\114",function()it("\115\104\111\117\108\100 \098\101 \097\098\108\101 \116\111 \098\101 \105\110\115\116\097\110\116\105\097\116\101\100",function()local M=G.new();(expect(M)).to.be.ok()end)end)describe("\069\110\117\109\101\114\097\098\108\101 \073\110\116\101\114\102\097\099\101",function()it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \069\110\117\109\101\114\097\116\111\114 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Enumerator()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \069\110\117\109\101\114\097\116\111\114 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)end)describe("\067\111\108\108\101\099\116\105\111\110 \073\110\116\101\114\102\097\099\101",function()it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \067\111\110\116\097\105\110\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Contains()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \067\111\110\116\097\105\110\115 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \067\111\110\116\097\105\110\115\065\108\108 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.ContainsAll()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \067\111\110\116\097\105\110\115\065\108\108 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \067\111\110\116\097\105\110\115\065\110\121 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.ContainsAny()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \067\111\110\116\097\105\110\115\065\110\121 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \067\111\117\110\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Count()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \067\111\117\110\116 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \069\109\112\116\121 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Empty()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \069\109\112\116\121 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \084\111\065\114\114\097\121 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.ToArray()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \084\111\065\114\114\097\121 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \084\111\084\097\098\108\101 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.ToTable()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \084\111\084\097\098\108\101 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \065\100\100 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Add()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \065\100\100 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \065\100\100\065\108\108 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.AddAll()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \065\100\100\065\108\108 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \067\108\101\097\114 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Clear()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \067\108\101\097\114 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \082\101\109\111\118\101 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Remove()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \082\101\109\111\118\101 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \082\101\109\111\118\101\065\108\108 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.RemoveAll()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \082\101\109\111\118\101\065\108\108 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \082\101\116\097\105\110\065\108\108 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.RetainAll()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \082\101\116\097\105\110\065\108\108 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)end)describe("\083\101\116 \073\110\116\101\114\102\097\099\101",function()it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \102\114\111\109\084\097\098\108\101 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()G.fromTable()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \102\114\111\109\084\097\098\108\101 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \069\120\099\101\112\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Except()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \069\120\099\101\112\116 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \073\110\116\101\114\115\101\099\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Intersect()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \073\110\116\101\114\115\101\099\116 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \079\118\101\114\108\097\112\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Overlaps()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \079\118\101\114\108\097\112\115 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \080\114\111\112\101\114\083\117\098\115\101\116\079\102 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.ProperSubsetOf()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \080\114\111\112\101\114\083\117\098\115\101\116\079\102 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \080\114\111\112\101\114\083\117\112\101\114\115\101\116\079\102 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.ProperSupersetOf()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \080\114\111\112\101\114\083\117\112\101\114\115\101\116\079\102 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \083\117\098\115\101\116\079\102 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.SubsetOf()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \083\117\098\115\101\116\079\102 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \083\117\112\101\114\115\101\116\079\102 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.SupersetOf()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \083\117\112\101\114\115\101\116\079\102 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \083\101\116\069\113\117\097\108\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.SetEquals()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \083\101\116\069\113\117\097\108\115 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \083\121\109\109\101\116\114\105\099\069\120\099\101\112\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.SymmetricExcept()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \083\121\109\109\101\116\114\105\099\069\120\099\101\112\116 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \085\110\105\111\110 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local M=G.new();(expect(function()M.Union()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \085\110\105\111\110 \109\117\115\116 \098\101 \111\118\101\114\114\105\100\100\101\110 \105\110 \102\105\114\115\116 \099\111\110\099\114\101\116\101 \115\117\098\099\108\097\115\115\046 \067\097\108\108\101\100 \100\105\114\101\099\116\108\121 \102\114\111\109 \083\101\116\046")end)end)end
--- Tests for the @{Set} interface.

return function()
	local module = game:GetService("ReplicatedStorage").Packages.Monolith
	local Set = require(module.Set)

	describe("Constructor", function()
		it("should be able to be instantiated", function()
			local set = Set.new()
			expect(set).to.be.ok()
		end)
	end)

	describe("Enumerable Interface", function()
		it("should error when Enumerator is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Enumerator()
			end).to.throw(
				"Abstract method Enumerator must be overridden in first concrete subclass. Called directly from Set."
			)
		end)
	end)

	describe("Collection Interface", function()
		it("should error when Contains is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Contains()
			end).to.throw(
				"Abstract method Contains must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when ContainsAll is not overridden", function()
			local set = Set.new()
			expect(function()
				set.ContainsAll()
			end).to.throw(
				"Abstract method ContainsAll must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when ContainsAny is not overridden", function()
			local set = Set.new()
			expect(function()
				set.ContainsAny()
			end).to.throw(
				"Abstract method ContainsAny must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Count is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Count()
			end).to.throw(
				"Abstract method Count must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Empty is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Empty()
			end).to.throw(
				"Abstract method Empty must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when ToArray is not overridden", function()
			local set = Set.new()
			expect(function()
				set.ToArray()
			end).to.throw(
				"Abstract method ToArray must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when ToTable is not overridden", function()
			local set = Set.new()
			expect(function()
				set.ToTable()
			end).to.throw(
				"Abstract method ToTable must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Add is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Add()
			end).to.throw(
				"Abstract method Add must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when AddAll is not overridden", function()
			local set = Set.new()
			expect(function()
				set.AddAll()
			end).to.throw(
				"Abstract method AddAll must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Clear is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Clear()
			end).to.throw(
				"Abstract method Clear must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Remove is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Remove()
			end).to.throw(
				"Abstract method Remove must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when RemoveAll is not overridden", function()
			local set = Set.new()
			expect(function()
				set.RemoveAll()
			end).to.throw(
				"Abstract method RemoveAll must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when RetainAll is not overridden", function()
			local set = Set.new()
			expect(function()
				set.RetainAll()
			end).to.throw(
				"Abstract method RetainAll must be overridden in first concrete subclass. Called directly from Set."
			)
		end)
	end)

	describe("Set Interface", function()
		it("should error when fromTable is not overridden", function()
			expect(function()
				Set.fromTable()
			end).to.throw(
				"Abstract method fromTable must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Except is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Except()
			end).to.throw(
				"Abstract method Except must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Intersect is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Intersect()
			end).to.throw(
				"Abstract method Intersect must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Overlaps is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Overlaps()
			end).to.throw(
				"Abstract method Overlaps must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when ProperSubsetOf is not overridden", function()
			local set = Set.new()
			expect(function()
				set.ProperSubsetOf()
			end).to.throw(
				"Abstract method ProperSubsetOf must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when ProperSupersetOf is not overridden", function()
			local set = Set.new()
			expect(function()
				set.ProperSupersetOf()
			end).to.throw(
				"Abstract method ProperSupersetOf must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when SubsetOf is not overridden", function()
			local set = Set.new()
			expect(function()
				set.SubsetOf()
			end).to.throw(
				"Abstract method SubsetOf must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when SupersetOf is not overridden", function()
			local set = Set.new()
			expect(function()
				set.SupersetOf()
			end).to.throw(
				"Abstract method SupersetOf must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when SetEquals is not overridden", function()
			local set = Set.new()
			expect(function()
				set.SetEquals()
			end).to.throw(
				"Abstract method SetEquals must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when SymmetricExcept is not overridden", function()
			local set = Set.new()
			expect(function()
				set.SymmetricExcept()
			end).to.throw(
				"Abstract method SymmetricExcept must be overridden in first concrete subclass. Called directly from Set."
			)
		end)

		it("should error when Union is not overridden", function()
			local set = Set.new()
			expect(function()
				set.Union()
			end).to.throw(
				"Abstract method Union must be overridden in first concrete subclass. Called directly from Set."
			)
		end)
	end)
end
