code: public void rollWithRows(Consumer<Row[]> rowConsumer, int n) {
          if (isEmpty()) {
              return;
          }
          Row[] rows = new Row[n];
          for (int i = 0; i < n; i++) {
              rows[i] = new Row(this);
          }
  
          int max = rowCount() - (n - 2);
          for (int i = 1; i < max; i++) {
              for (int r = 0; r < n; r++) {
                  rows[r].at(i + r - 1);
              }
              rowConsumer.accept(rows);
          }
      }
docs: Applies the function in {@code rowConsumer} to each group of contiguous rows of size n in the table
  This can be used, for example, to calculate a running average of in rows