public void NoWritesWhileEnumerating()
        {
            var list = new NaiveLockingList <int> {
                0, 1, 2, 3
            };

            using (list.GetEnumerator())
            {
                list.Add(4);
            }
        }
        public void NoWritesWhileEnumerating()
        {
            var list = new NaiveLockingList <int> {
                0, 1, 2, 3
            };

            using (list.GetEnumerator())
            {
                Assert.Throws <LockRecursionException>(() => list.Add(4));
            }
        }
        public void CanWriteAfterEnumerating()
        {
            var list = new NaiveLockingList <int> {
                0, 1, 2, 3
            };

            using (IEnumerator <int> e = list.GetEnumerator())
            {
                e.MoveNext();
                Debug.WriteLine(e.Current);
                e.MoveNext();
            }

            list.Add(4);
        }
        public void CanWriteAfterEnumerating()
        {
            var list = new NaiveLockingList<int> {0, 1, 2, 3};

            using (IEnumerator<int> e = list.GetEnumerator())
            {
                e.MoveNext();
                Debug.WriteLine(e.Current);
                e.MoveNext();
            }

            list.Add(4);
        }
        public void NoWritesWhileEnumerating()
        {
            var list = new NaiveLockingList<int> {0, 1, 2, 3};

            using (list.GetEnumerator())
            {
                list.Add(4);
            }
        }