public void SplitDictionary()
        {
            Dictionary<Int32, String> input1 = new Dictionary<int, string>(4) {
                { 1, "one" },
                { 5, "five" },
                { 9, "nine" },
                { 0, "zero" }
            };
            Dictionary<Int32, String> left_output1;
            Dictionary<Int32, String> right_output1;

            input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(1, CollectionTools.SplitterDisposition.ToLast, out left_output1, out right_output1);
            CollectionAssert.AreEqual(new Dictionary<Int32, String>(), left_output1);
            CollectionAssert.AreEqual(input1, right_output1);

            input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(1, CollectionTools.SplitterDisposition.ToFirst, out left_output1, out right_output1);
            CollectionAssert.AreEqual(new Dictionary<Int32, String>(1) { { 1, "one" } }, left_output1);
            CollectionAssert.AreEqual(new Dictionary<int, string>(3) { { 5, "five" }, { 9, "nine" }, { 0, "zero" } }, right_output1);

            input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(1, CollectionTools.SplitterDisposition.Reject, out left_output1, out right_output1);
            CollectionAssert.AreEqual(new Dictionary<Int32, String>(0), left_output1);
            CollectionAssert.AreEqual(new Dictionary<int, string>(3) { { 5, "five" }, { 9, "nine" }, { 0, "zero" } }, right_output1);

            TestDelegate td = new TestDelegate(delegate()
            {
                input1.SplitDictionary<Dictionary<Int32, String>, Int32, String>(100, CollectionTools.SplitterDisposition.ToFirst, out left_output1, out right_output1);
            });
            Assert.Throws<ArgumentException>(td);
        }