public void OnReaderWriterSynchronizedObject_WhenUndoPerformed_LocksAreRespected()
        {
            var testObject = new ReaderWriterSynchronizedTrackedObject();

            testObject.S1 = "123";

            var restorePoint = ObjectTracker.SetRestorePoint( testObject );

            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();

            Task writerLockAcquiredTask = Task.Factory.StartNew( () => testObject.S1 = "sad" );

            ObjectTracker.UndoTo( testObject, restorePoint );

            stopwatch.Stop();

            writerLockAcquiredTask.Wait();

            Assert.IsTrue( stopwatch.ElapsedMilliseconds >= 200 );
        }
        [Ignore] // TODO resolve interaction between ReaderWriterSynchronized and TrackedObject
        public void OnReaderWriterSynchronizedObject_WhenUndoPerformed_LocksAreRespected()
        {
            var testObject = new ReaderWriterSynchronizedTrackedObject();

            testObject.S1 = "123";

            var restorePoint = ObjectTracker.SetRestorePoint(testObject);

            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            Task writerLockAcquiredTask = Task.Factory.StartNew(() => testObject.S1 = "sad");

            ObjectTracker.UndoTo(testObject, restorePoint);

            stopwatch.Stop();

            writerLockAcquiredTask.Wait();

            Assert.IsTrue(stopwatch.ElapsedMilliseconds >= 200);
        }