IEnumerable <TOut> InternalScan <TOut>(LightningTransaction lt, FdbKeyRange range, Func <Slice, byte[], TOut> convert) { ushort x = 0; using (var c = lt.CreateCursor(_ld)) { if (!c.MoveToFirstAfter(range.Begin.GetBytes())) { yield break; } var pair = c.Current; for (var i = 0; i < int.MaxValue; i++) { var current = Slice.Create(pair.Key); if (!range.Contains(current)) { break; } x += 1; yield return(convert(current, pair.Value)); if (!c.MoveNext()) { break; } pair = c.Current; } } }