docs: private DataPoints abs(final DataPoints points) {
      // TODO(cl) - Using an array as the size function may not return the exact
      // results and we should figure a way to avoid copying data anyway.
      final List<DataPoint> dps = new ArrayList<DataPoint>();
  
      final SeekableView view = points.iterator();
      while (view.hasNext()) {
        DataPoint pt = view.next();
        if (pt.isInteger()) {
          dps.add(MutableDataPoint.ofLongValue(
              pt.timestamp(), Math.abs(pt.longValue())));
        } else {
          dps.add(MutableDataPoint.ofDoubleValue(
              pt.timestamp(), Math.abs(pt.doubleValue())));
        }
      }
      final DataPoint[] results = new DataPoint[dps.size()];
      dps.toArray(results);
      return new PostAggregatedDataPoints(points, results);
    }