public static IObservable <CollectionAddRemoveEvent <T> > ObserveCurrentAddRemove <T>(this IReadOnlyReactiveCollection <T> This) =>
 This.Select((x, i) => new CollectionAddRemoveEvent <T>(i, x, true))
 .ToObservable()
 .Concat(This
         .ObserveAdd()
         .Select(x => new CollectionAddRemoveEvent <T>(x.Index, x.Value, true))
         .Merge(This
                .ObserveRemove()
                .Select(x => new CollectionAddRemoveEvent <T>(x.Index, x.Value, false))));