public void appendCheckIteratorEverywhere(boolean forward) {
            this.append(this.makeOperation("test iterator everywhere", false, s -> {
                List<Entry<Item>> entries = s.arrayBacked.toListOfEntries();
                for (int i = 0; i < entries.size(); i++) {
                    Entry<Item> entry = entries.get(i);
                    Entry<Item> prevEntry = i <= 0 || entries.get(i - 1).offset != entry.offset - 1 ? null : entries.get(i - 1);
                    Entry<Item> nextEntry = i >= entries.size() - 1 || entries.get(i + 1).offset != entry.offset + 1 ? null : entries.get(i + 1);
                    this.checkIteratorAtOffset(forward, s, prevEntry, entry.offset - 1, i);
                    this.checkIteratorAtOffset(forward, s, entry, entry.offset, i);
                    this.checkIteratorAtOffset(forward, s, nextEntry, entry.offset + 1, i);
                }
            }));
        }
Test scenarios to cover OffsetKeyedTreeMap data structure

orderings (M)
 - ascending
 - descending
 - random
<p>
modification scenarios (P)
 - all insertions (n)
 - all insertions, then all remove (different series proportions n,m)
 - intermixed insertions and remove (different series proportions n,m)
 - all insertions, then apply offset at existing key
 - all insertions, then apply offset at missing key
 - intermixed insertions, remove, apply offset (different series proportions n,m,p)
 - all insertions, then removeAtRange at existing key
 - all insertions, then removeAtRange offset at missing key
 - intermixed insertions, removeAtRange, apply offset (different series proportions n,m,p)
<p>
inspection scenarios (Q)
 - find existing key
 - find missing key
 - find existing key and iterate forward/backward till the end/head
 - find missing key and iterate forward/backward till the end/head
 - random backward-forward iterations
<p>
test/org.jkiss.dbeaver.model.lsm.test/src/org/jkiss/dbeaver/model/lsm/test/OffsetKeyedTreeMapTest.java