public virtual void TestPutGetRemove()
        {
            Assert.IsTrue(mm.Put("key1", "value1"));
            Assert.IsTrue(mm.Put("key1", "value2"));
            Assert.IsTrue(mm.Put("key1", "value3"));
            Assert.IsTrue(mm.Put("key2", "value4"));
            Assert.IsTrue(mm.Put("key2", "value5"));
            Assert.AreEqual(3, mm.ValueCount("key1"));
            Assert.AreEqual(2, mm.ValueCount("key2"));
            Assert.AreEqual(5, mm.Size());
            var coll = mm.Get("key1");

            Assert.AreEqual(3, coll.Count);
            coll = mm.Remove("key2");
            Assert.AreEqual(2, coll.Count);
            Assert.AreEqual(0, mm.ValueCount("key2"));
            Assert.AreEqual(0, mm.Get("key2").Count);
            Assert.IsFalse(mm.Remove("key1", "value4"));
            Assert.AreEqual(3, mm.Size());
            Assert.IsTrue(mm.Remove("key1", "value2"));
            Assert.AreEqual(2, mm.Size());
            Assert.IsTrue(mm.Remove("key1", "value1"));
            Assert.AreEqual(1, mm.Size());
            var enumerator = mm.Get("key1").GetEnumerator();

            enumerator.MoveNext();
            Assert.AreEqual("value3", enumerator.Current);
        }