private static void EdgeCases(ReturnDuplicate fn)
 {
     Assert.AreEqual(1, fn(new List <int> {
         1, 1
     }));
     Assert.AreEqual(1, fn(new List <int> {
         1, 1, 2
     }));
     Assert.AreEqual(1, fn(new List <int> {
         2, 1, 2
     }));
 }
 private static void BasicTests(ReturnDuplicate fn)
 {
     Assert.AreEqual(1, fn(new List <int> {
         1, 1, 2, 2, 3
     }));
     Assert.AreEqual(1, fn(new List <int> {
         1, 4, 2, 1, 3
     }));
     Assert.AreEqual(4, fn(new List <int> {
         4, 4, 2, 1, 3
     }));
     Assert.AreEqual(3, fn(new List <int> {
         3, 4, 2, 1, 3
     }));
     Assert.AreEqual(2, fn(new List <int> {
         1, 4, 2, 2, 3
     }));
     Assert.AreEqual(1, fn(new List <int> {
         1, 2, 3, 1
     }));
     Assert.AreEqual(2, fn(new List <int> {
         1, 2, 3, 2
     }));
 }