code: @Override
    public long scanAndAggregate(
        HistoricalDimensionSelector dimensionSelector,
        HistoricalColumnSelector metricSelector,
        SimpleDoubleBufferAggregator aggregator,
        int aggregatorSize,
        HistoricalCursor cursor,
        int[] positions,
        ByteBuffer resultsBuffer
    )
    {
      // See TopNUtils.copyOffset() for explanation
      Offset offset = (Offset) TopNUtils.copyOffset(cursor);
      long processedRows = 0;
      int positionToAllocate = 0;
      while (offset.withinBounds() && !Thread.currentThread().isInterrupted()) {
        int rowNum = offset.getOffset();
        double metric = metricSelector.getDouble(rowNum);
        final IndexedInts dimValues = dimensionSelector.getRow(rowNum);
        final int dimSize = dimValues.size();
        for (int i = 0; i < dimSize; i++) {
          int dimIndex = dimValues.get(i);
          int position = positions[dimIndex];
          if (position >= 0) {
            aggregator.aggregate(resultsBuffer, position, metric);
          } else if (position == TopNAlgorithm.INIT_POSITION_VALUE) {
            positions[dimIndex] = positionToAllocate;
            aggregator.putFirst(resultsBuffer, positionToAllocate, metric);
            positionToAllocate += aggregatorSize;
          }
        }
        processedRows++;
        offset.increment();
      }
      return processedRows;
    }
docs: Any changes to this method should be coordinated with {@link TopNUtils}, {@link
  PooledTopNAlgorithm#computeSpecializedScanAndAggregateImplementations} and downstream methods.
  
  It should be checked with a tool like https://github.com/AdoptOpenJDK/jitwatch that C2 compiler output for this
  method doesn't have any method calls in the while loop, i. e. all method calls are inlined. To be able to see
  assembly of this method in JITWatch and other similar tools, {@link
  PooledTopNAlgorithm#specializeHistorical1SimpleDoubleAggPooledTopN} should be turned off. Note that in this case
  the benchmark should be "naturally monomorphic", i. e. execute this method always with the same runtime shape.
  
  If the while loop contains not inlined method calls, it should be considered as a performance bug.