private void updateSectionItemRangeSelectionState(int sectionIndex, int fromPosition, int delta) {
        SectionSelectionState sectionSelectionState = getSectionSelectionState(sectionIndex);
        SparseBooleanArray itemState = sectionSelectionState.items.clone();
        sectionSelectionState.items.clear();

        for (int i = 0, n = itemState.size(); i < n; i++) {
            int pos = itemState.keyAt(i);

            if (delta < 0 && pos >= fromPosition && pos < fromPosition - delta) { // erasure
                continue;
            }

            int newPos = pos;
            if (pos >= fromPosition) {
                newPos += delta;
            }

            if (itemState.get(pos)) {
                sectionSelectionState.items.put(newPos, true);
            }
        }
    }
Post an action to be run later.
RecyclerView doesn't like being mutated during a scroll. We can't detect when a
scroll is actually happening, unfortunately, so the best we can do is post actions
from notify* methods to be run at a later date.

@param action action to run
android/modules/module_common/src/main/java/github/tornaco/android/thanos/widget/section/SectioningAdapter.java