/// <summary>
 /// Create sequence of read operations to load data up to a specified offset.
 /// </summary>
 /// <typeparam name="TResultItem"></typeparam>
 /// <param name="pagedBackingStoreCollection"></param>
 /// <param name="offset"></param>
 /// <returns></returns>
 public static IDisposable CreateReadsUpTo <TResultItem>(this IPagedBackingStoreCollection <TResultItem> pagedBackingStoreCollection, int offset)
 {
     return(pagedBackingStoreCollection.CreateOffsetsUpTo(offset).
            Select(o => pagedBackingStoreCollection.ChangeSetProvider.CreateReadRequest(o)).ToObservable().
            SelectMany(pr => pagedBackingStoreCollection.ChangeSetProvider.ReadPageObservable(pr)).
            Subscribe());
 }