return function()local E=(game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")).Packages.Monolith local p=require(E.Map)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 E=p.new();(expect(E)).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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\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 E=p.new();(expect(function()E.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 \077\097\112\046")end)end)describe("\077\097\112 \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()p.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 \077\097\112\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \102\114\111\109\065\114\114\097\121 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.fromArray()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \102\114\111\109\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 \077\097\112\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \102\114\111\109\080\097\105\114\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.fromPairs()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \102\114\111\109\080\097\105\114\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 \077\097\112\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\075\101\121 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.ContainsKey()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\075\101\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 \077\097\112\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\075\101\121\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.ContainsAllKeys()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\075\101\121\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 \077\097\112\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\075\101\121\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.ContainsAnyKeys()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\075\101\121\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 \077\097\112\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\086\097\108\117\101 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.ContainsValue()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\086\097\108\117\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 \077\097\112\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\086\097\108\117\101\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.ContainsAllValues()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\086\097\108\117\101\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 \077\097\112\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\086\097\108\117\101\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.ContainsAnyValues()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\086\097\108\117\101\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 \077\097\112\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \075\101\121\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.Keys()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \075\101\121\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 \077\097\112\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \086\097\108\117\101\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.Values()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \086\097\108\117\101\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 \077\097\112\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \080\097\105\114\115 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.Pairs()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \080\097\105\114\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 \077\097\112\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \071\101\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.Get()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \071\101\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 \077\097\112\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \083\101\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()(expect(function()p.Set()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \083\101\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 \077\097\112\046")end)end)end
--- Tests for the @{Map} interface.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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