public void ShadowingProperty()
            {
                var changes  = new List <PropertyChangedEventArgs>();
                var withFake = new WithShadowing <int>();

                using (withFake.ObservePropertyChangedSlim(x => x.Value, signalInitial: false)
                       .Subscribe(changes.Add))
                {
                    withFake.Value = 1;
                    CollectionAssert.AreEqual(new[] { "Value" }, changes.Select(x => x.PropertyName));
                }
            }
            public void ShadowingPropertyCreateObservableOnBase()
            {
                IObservable <PropertyChangedEventArgs> CreateObservable(With <int> source)
                {
                    return(source.ObservePropertyChangedSlim(x => x.Value, signalInitial: false));
                }

                var changes  = new List <PropertyChangedEventArgs>();
                var withFake = new WithShadowing <int>();

                using (CreateObservable(withFake)
                       .Subscribe(changes.Add))
                {
                    withFake.Value = 1;
                    CollectionAssert.AreEqual(new[] { "Value" }, changes.Select(x => x.PropertyName));
                }
            }