docs: private static int searchForChunkContainingPos(final long[] arr, final long pos, final int l, final int r) {
      // the following three asserts can probably go away eventually, since it is fairly clear
      // that if these invariants hold at the beginning of the search, they will be maintained
      assert l < r;
      assert arr[l] <= pos;
      assert pos < arr[r];
      if (l + 1 == r) {
        return l;
      }
      final int m = l + (r - l) / 2;
      if (arr[m] <= pos) {
        return searchForChunkContainingPos(arr, pos, m, r);
      }
      return searchForChunkContainingPos(arr, pos, l, m);
    }