docs: private DataPoint getDataPoint(int i) {
      if (i < 0) {
        throw new IndexOutOfBoundsException("negative index: " + i);
      }
      final int saved_i = i;
      final SeekableView it = iterator();
      DataPoint dp = null;
      while (it.hasNext() && i >= 0) {
        dp = it.next();
        i--;
      }
      if (i != -1 || dp == null) {
        throw new IndexOutOfBoundsException("index " + saved_i
            + " too large (it's >= " + size() + ") for " + this);
      }
      return dp;
    }