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.List)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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\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 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 \076\105\115\116\046")end)end)describe("\076\105\115\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 \070\105\114\115\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.First()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \070\105\114\115\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 \076\105\115\116\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()local E=p.new();(expect(function()E.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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \073\110\100\101\120\079\102 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.IndexOf()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \073\110\100\101\120\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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \076\097\115\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Last()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \076\097\115\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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \076\097\115\116\073\110\100\101\120\079\102 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.LastIndexOf()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \076\097\115\116\073\110\100\101\120\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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \083\117\098 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Sub()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \083\117\098 \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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \068\101\108\101\116\101 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Delete()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \068\101\108\101\116\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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \073\110\115\101\114\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Insert()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \073\110\115\101\114\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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \073\110\115\101\114\116\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.InsertAll()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \073\110\115\101\114\116\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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \080\111\112 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Pop()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \080\111\112 \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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \080\117\115\104 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Push()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \080\117\115\104 \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 \076\105\115\116\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()local E=p.new();(expect(function()E.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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \083\104\105\102\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Shift()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \083\104\105\102\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 \076\105\115\116\046")end)it("\115\104\111\117\108\100 \101\114\114\111\114 \119\104\101\110 \085\110\115\104\105\102\116 \105\115 \110\111\116 \111\118\101\114\114\105\100\100\101\110",function()local E=p.new();(expect(function()E.Unshift()end)).to.throw("\065\098\115\116\114\097\099\116 \109\101\116\104\111\100 \085\110\115\104\105\102\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 \076\105\115\116\046")end)end)end
--- Tests for the @{List} interface.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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