public void UpdateTest()
        {
            var q = new TestQ();

            q.Add("b", 0, 50);
            q.Add("a", 0, 10);
            q.Add("c", 0, 100);
            Assert.AreEqual(3, q.Items.Count());

            q.Update(0);
            Assert.AreEqual(3, q.Items.Count());
            Assert.IsTrue(q.Items.Any(x => x.Key == "a"));
            Assert.IsTrue(q.Items.Any(x => x.Key == "b"));
            Assert.IsTrue(q.Items.Any(x => x.Key == "c"));
            Assert.IsTrue(q.GetRecentExpired().IsEmpty());

            q.Update(10);
            Assert.AreEqual(2, q.Items.Count());
            Assert.IsTrue(q.Items.Any(x => x.Key == "b"));
            Assert.IsTrue(q.Items.Any(x => x.Key == "c"));
            Assert.IsTrue(q.GetRecentExpired().All(x => x == "a"));
            Assert.IsTrue(q.GetRecentExpired().IsEmpty());

            q.Update(49);
            Assert.AreEqual(2, q.Items.Count());
            Assert.IsTrue(q.Items.Any(x => x.Key == "b"));
            Assert.IsTrue(q.Items.Any(x => x.Key == "c"));
            Assert.IsTrue(q.GetRecentExpired().IsEmpty());

            q.Update(51);
            Assert.AreEqual(1, q.Items.Count());
            Assert.IsTrue(q.GetRecentExpired().All(x => x == "b"));
            Assert.IsTrue(q.Items.Any(x => x.Key == "c"));

            q.Update(99);
            Assert.AreEqual(1, q.Items.Count());
            Assert.IsTrue(q.Items.Any(x => x.Key == "c"));

            q.Update(1000);
            Assert.IsTrue(q.GetRecentExpired().All(x => x == "c"));
            Assert.IsTrue(q.Items.IsEmpty());
        }