docs: protected boolean computeOffset(CacheDataSet cache) {
          // offset computation: update offset for all items in the cache
          float startDataOffset = getStartingOffset((cache.getTotalSizeWithPadding()));
          float layoutOffset = getLayoutOffset();
  
          boolean inBounds = startDataOffset < -layoutOffset;
  
          for (int pos = 0; pos < cache.count(); ++pos) {
              int id = cache.getId(pos);
              if (id != -1) {
                  float endDataOffset = cache.setDataAfter(id, startDataOffset);
                  inBounds = inBounds &&
                          endDataOffset > layoutOffset &&
                          startDataOffset < -layoutOffset;
                  startDataOffset = endDataOffset;
                  Log.d(LAYOUT, TAG, "computeOffset [%d] = %f" , id, cache.getDataOffset(id));
              }
          }
  
          return inBounds;
      }