anchor.diff:        await subscription.cancel();
       });
   
  -    test('onSnapshots all', () async {
  -      List<RecordSnapshot> results;
  +    test('onSnapshots all ascending', () async {
  +      var store = intMapStoreFactory.store();
  +      var record1 = store.record(1);
  +      var record2 = store.record(2);
  +      var record3 = store.record(3);
  +      var record4 = store.record(4);
  +      var finder = Finder(
  +          sortOrders: [SortOrder('dateTime', true)],
  +          end: Boundary(
  +              values: [Timestamp.fromDateTime(DateTime.utc(2020))],
  +              include: false),
  +          start: Boundary(
  +              values: [Timestamp.fromDateTime(DateTime.utc(2010))],
  +              include: true),
  +          limit: 2,
  +          offset: 1,
  +          filter: Filter.custom((record) =>
  +              (record['dateTime'] as Timestamp).toDateTime(isUtc: true).month ==
  +              DateTime.january));
  +      var results1 = <List<RecordSnapshot>>[];
  +      var subscription =
  +          store.query(finder: finder).onSnapshots(db).listen((event) {
  +        results1.add(event);
  +      });
  +      await db.transaction((txn) async {
  +        await record1.put(txn, <String, dynamic>{
  +          'dateTime': Timestamp.fromDateTime(DateTime.utc(2020))
  +        });
  +        await record2.put(txn, <String, dynamic>{
  +          'dateTime': Timestamp.fromDateTime(DateTime.utc(2018))
  +        });
  +        await record3.put(txn, <String, dynamic>{
  +          'dateTime': Timestamp.fromDateTime(DateTime.utc(2016))
  +        });
  +        await record4.put(txn, <String, dynamic>{
  +          'dateTime': Timestamp.fromDateTime(DateTime.utc(2009))
  +        });
  +      });
  +      await expectQueryAndFirstSnapshotKeys(finder, [2]);
  +
  +      await db.transaction((txn) async {
  +        await record1.put(txn, <String, dynamic>{
  +          'dateTime': Timestamp.fromDateTime(DateTime.utc(2010))
  +        });
  +        await record2.put(txn, <String, dynamic>{
  +          'dateTime': Timestamp.fromDateTime(DateTime.utc(2018, 2))
  +        });
  +        await record4.put(txn, <String, dynamic>{
  +          'dateTime': Timestamp.fromDateTime(DateTime.utc(2014))
  +        });
  +      });
  +      await expectQueryAndFirstSnapshotKeys(finder, [4, 3]);
  +      await record2
  +          .put(db, {'dateTime': Timestamp.fromDateTime(DateTime.utc(2017))});
  +      await expectQueryAndFirstSnapshotKeys(finder, [4, 3]);
  +
  +      await db.transaction((txn) async {
  +        await record1.delete(txn);
  +        await record3.delete(txn);
  +      });
  +      await expectQueryAndFirstSnapshotKeys(finder, [2]);
  +      expect(results1.map((e) => e.map((e) => e.key).toList()).toList(), [
  +        [],
  +        [2],
  +        [4, 3],
  +        [4, 3],
  +        [2]
  +      ]);
  +      await subscription.cancel();
  +    });
  +
  +    test('onSnapshots all reverse', () async {
         var store = intMapStoreFactory.store();
         var record1 = store.record(1);
         var record2 = store.record(2);
  
positive.code:     });
  
      test('onSnapshots 2 records sort order start', () async {
        List<RecordSnapshot> results;
        var store = StoreRef<int, String>.main();
        var record1 = store.record(1);
        var record2 = store.record(2);
  
negative.code:           'dateTime': Timestamp.fromDateTime(DateTime.utc(2009))
          });
        });
        await expectQueryAndFirstSnapshotKeys(finder, [3]);
  
        await db.transaction((txn) async {
          await record1.put(txn, <String, dynamic>{
            'dateTime': Timestamp.fromDateTime(DateTime.utc(2010))
  