public void BindingContext_Count_GetWithNullWeakReferenceTarget_ScrubsWeakRefs()
        {
            var context     = new BindingContext();
            var dataSource1 = new DataSource {
                Property = 1
            };
            var dataSource2 = new DataSource {
                Property = 2
            };
            PropertyManager manager1 = Assert.IsAssignableFrom <PropertyManager>(context[dataSource1, "Property"]);
            PropertyManager manager2 = Assert.IsAssignableFrom <PropertyManager>(context[dataSource2, "Property"]);
            var             array    = new DictionaryEntry[4];

            ((ICollection)context).CopyTo(array, 0);

            WeakReference reference1 = Assert.IsType <WeakReference>(array.Single(p => ((WeakReference)p.Value).Target == manager1).Value);
            WeakReference reference2 = Assert.IsType <WeakReference>(array.Single(p => ((WeakReference)p.Value).Target == manager2).Value);

            Assert.Same(manager1, reference1.Target);
            Assert.Same(manager2, reference2.Target);

            // Simulate a GC by assigning the weak reference to null.
            reference1.Target = null;
            reference2.Target = null;

            // Verify these weak references have been scrubbed.
            Assert.Equal(2, ((ICollection)context).Count);
        }