public static IObservableList <T> ToObservableList <T>(this IObservable <IImmutableList <T> > self) { return(self .Scan( new { PrevList = (IImmutableList <T>)ImmutableList <T> .Empty, Changes = Optional.None <ListChange <T> >() }, (acc, newList) => new { PrevList = newList, Changes = ListChange.IncrementalChanges(acc.PrevList, newList), }) .SelectMany(acc => acc.Changes) .UnsafeAsObservableList()); }