public void UnderlyingListBasedPropertiesTest()
        {
            var list = VisualBasicNamespaceImportsListFactory.CreateInstance("A", "B");

            //Count
            Assert.Equal(2, list.Count);

            //GetEnumerator
            var enumerator = list.GetEnumerator();

            Assert.True(enumerator.MoveNext());
            Assert.Equal("A", enumerator.Current);
            Assert.True(enumerator.MoveNext());
            Assert.Equal("B", enumerator.Current);
            Assert.False(enumerator.MoveNext());

            //IsPresent(string)
            Assert.Throws <ArgumentException>("bstrImport", () =>
            {
                list.IsPresent(null !);
            });
            Assert.Throws <ArgumentException>("bstrImport", () =>
            {
                list.IsPresent("");
            });
            Assert.True(list.IsPresent("A"));
            Assert.False(list.IsPresent("C"));

            //IsPresent(int)
            Assert.Throws <ArgumentException>("indexInt", () =>
            {
                list.IsPresent(0);
            });
            Assert.Throws <ArgumentException>("indexInt", () =>
            {
                list.IsPresent(3);
            });
            Assert.True(list.IsPresent(1));
            Assert.True(list.IsPresent(2));

            //Item(int)
            Assert.Throws <ArgumentException>("lIndex", () =>
            {
                list.Item(0);
            });
            Assert.Throws <ArgumentException>("lIndex", () =>
            {
                list.Item(3);
            });
            Assert.Equal("A", list.Item(1));
            Assert.Equal("B", list.Item(2));
        }
        [InlineData(new [] { "A", "B", "D", "E" }, new [] { "B", "C", "E", "F" }, new [] { "C", "F" }, new [] { "A", "D" })]                        // Addition and deletion in jumbled order with the same no of elements as before

        public void UpdateNamespaceImportListTest(string[] initialState, string[] updateToApply, string[] expectedAdded, string[] expectedRemoved)
        {
            var list = VisualBasicNamespaceImportsListFactory.CreateInstance(initialState);

            var json = ConstructNamespaceImportChangeJson(updateToApply);
            var projectSubscriptionUpdate = IProjectSubscriptionUpdateFactory.FromJson(json);

            list.TestApply(projectSubscriptionUpdate);

            // Updates represent the final state, so they are the expected list too
            Assert.Equal(updateToApply.OrderBy(s => s), list.OrderBy(s => s));
            Assert.Equal(expectedAdded.OrderBy(s => s), list.ImportsAdded.OrderBy(s => s));
            Assert.Equal(expectedRemoved.OrderBy(s => s), list.ImportsRemoved.OrderBy(s => s));

            return;