@Test
public void limiterWithLookahead() {

    fdb.run(context -> {
        RecordScanLimiter limiter = RecordScanLimiterFactory.enforce(1);
        KeyValueCursor kvCursor =  KeyValueCursor.Builder.withSubspace(subspace)
                .setContext(context)
                .setLow(Tuple.from(3, 3), EndpointType.RANGE_EXCLUSIVE)
                .setHigh(Tuple.from(4, 2), EndpointType.RANGE_EXCLUSIVE)
                .setScanProperties(forwardScanWithLimiter(limiter))
                .build();
        RecordCursor<KeyValue> cursor = kvCursor.skip(2); // should exhaust limit first
        RecordCursorResult<KeyValue> result = cursor.getNext();
        assertThat("skipped items should exhaust limit", result.hasNext(), is(false));
        assertThat("no next reason should be SCAN_LIMIT_REACHED", result.getNoNextReason(),
                equalTo(RecordCursor.NoNextReason.SCAN_LIMIT_REACHED));
        return null;
    });
}