This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 938b35b5e45c748c141ec48f0d8589c13d4f23f9
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Tue Feb 6 19:08:04 2024 +0100

    Deprecate `ArgumentChecks` methods that are replaced by Java 9 methods:
    - `ensureValidIndex`, replaced by `Objects.checkIndex`.
    - `ensureValidIndexRange`, replaced by `Objects.checkFromToIndex`.
    
    Some `ensureNonNull` are also either removed (now that Java produces a good 
error message by itself) or replaced by `Objects.requireNonNull`.
---
 .../main/org/apache/sis/coverage/Category.java     |  1 +
 .../main/org/apache/sis/coverage/CategoryList.java |  4 +++-
 .../org/apache/sis/coverage/CoverageCombiner.java  |  2 --
 .../org/apache/sis/coverage/SampleDimension.java   |  6 ++----
 .../apache/sis/coverage/grid/DefaultEvaluator.java |  6 ++----
 .../sis/coverage/grid/DimensionalityReduction.java | 10 +++-------
 .../apache/sis/coverage/grid/DomainLinearizer.java |  2 --
 .../sis/coverage/grid/GridCoordinatesView.java     |  5 ++---
 .../org/apache/sis/coverage/grid/GridExtent.java   | 21 +++++++++------------
 .../org/apache/sis/coverage/grid/GridGeometry.java |  4 ++--
 .../apache/sis/xml/bind/lan/LocaleAndCharset.java  |  4 ++--
 .../org/apache/sis/geometry/ArrayEnvelope.java     | 18 ++++++------------
 .../org/apache/sis/geometry/GeneralEnvelope.java   | 22 +++-------------------
 .../main/org/apache/sis/geometry/SubEnvelope.java  | 14 +++++---------
 .../main/org/apache/sis/io/wkt/Warnings.java       |  6 +++---
 .../apache/sis/parameter/ParameterValueList.java   | 17 ++++++-----------
 .../main/org/apache/sis/referencing/CRS.java       |  3 ++-
 .../factory/sql/InstallationScriptProvider.java    |  1 -
 .../operation/builder/LinearTransformBuilder.java  |  4 ++--
 .../sis/referencing/operation/matrix/Matrices.java |  3 +--
 .../referencing/operation/matrix/MatrixSIS.java    | 12 ++++++------
 .../referencing/util/GeodeticObjectBuilder.java    |  4 ++--
 .../main/org/apache/sis/io/LineAppender.java       |  3 ++-
 .../main/org/apache/sis/io/TableAppender.java      |  3 ++-
 .../main/org/apache/sis/math/MathFunctions.java    |  5 ++++-
 .../main/org/apache/sis/math/RepeatedVector.java   |  5 ++---
 .../main/org/apache/sis/math/SequenceVector.java   |  8 +++-----
 .../main/org/apache/sis/math/Vector.java           |  9 ++++-----
 .../main/org/apache/sis/util/ArgumentChecks.java   | 19 ++++++++-----------
 .../main/org/apache/sis/util/CharSequences.java    |  7 ++++---
 .../org/apache/sis/util/collection/Containers.java |  4 ++--
 .../sis/util/collection/DefaultTreeTable.java      |  3 +--
 .../apache/sis/util/collection/IntegerList.java    |  8 ++++----
 .../apache/sis/util/collection/TreeNodeList.java   | 21 ++++++++-------------
 .../sis/util/internal/UnmodifiableArrayList.java   |  6 ++----
 .../apache/sis/map/service/GraphicsPortrayer.java  |  4 ++--
 36 files changed, 110 insertions(+), 164 deletions(-)

diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java
index be97d5cf52..9a6cb13be5 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/Category.java
@@ -220,6 +220,7 @@ public class Category implements Serializable {
      * @throws IllegalSampleDimensionException if the {@code samples} range of 
values is empty
      *         or the transfer function cannot be used.
      */
+    @SuppressWarnings("this-escape")
     protected Category(final CharSequence name, NumberRange<?> samples, final 
MathTransform1D toUnits, final Unit<?> units,
              final DoubleToIntFunction toNaN)
     {
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java
index 88a11bbe46..1a2b553584 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CategoryList.java
@@ -211,8 +211,10 @@ final class CategoryList extends AbstractList<Category> 
implements MathTransform
         final double[] extremums;
         extremums = new double[count * 2];
         minimums  = new double[count];
-        int countOfFiniteRanges = 0;
+
+        @SuppressWarnings("LocalVariableHidesMemberVariable")
         NumberRange<?> range = null;
+        int countOfFiniteRanges = 0;
         for (int i=count; --i >= 0;) {                  // Reverse order for 
making computation of `range` more convenient.
             final Category category = categories[i];
             if (!isNaN(minimums[i] = category.range.getMinDouble(true))) {
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
index 0ca2a6f1c3..79fdf3f924 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/CoverageCombiner.java
@@ -121,7 +121,6 @@ public class CoverageCombiner {
      * @throws CannotEvaluateException if the coverage does not have at least 
2 dimensions.
      */
     public CoverageCombiner(final GridCoverage destination) {
-        ArgumentChecks.ensureNonNull("destination", destination);
         this.destination = destination.forConvertedValues(true);
         isConverted = (this.destination == destination);
         final int[] dim = 
destination.getGridGeometry().getExtent().getLargestDimensions(BIDIMENSIONAL);
@@ -225,7 +224,6 @@ public class CoverageCombiner {
      *         is not convertible to the unit of measurement of the 
corresponding target sample dimension.
      */
     public boolean acceptAll(GridCoverage... sources) throws 
TransformException, IncommensurableException {
-        ArgumentChecks.ensureNonNull("sources", sources);
         sources = sources.clone();
         final GridGeometry        targetGG            = 
destination.getGridGeometry();
         final GridExtent          targetEx            = targetGG.getExtent();
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java
index 3bcb4d329a..8eda32d0e7 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/SampleDimension.java
@@ -1196,14 +1196,12 @@ public class SampleDimension implements Serializable {
 
                 /** Returns the category at the given index. */
                 @Override public Category get(int i) {
-                    ArgumentChecks.ensureValidIndex(count, i);
-                    return categories[i];
+                    return categories[Objects.checkIndex(i, count)];
                 }
 
                 /** Removes the category at the given index. */
                 @Override public Category remove(int i) {
-                    ArgumentChecks.ensureValidIndex(count, i);
-                    final Category c = categories[i];
+                    final Category c = categories[Objects.checkIndex(i, 
count)];
                     System.arraycopy(categories, i+1, categories, i, --count - 
i);
                     categories[count] = null;
                     toNaN.remove(c);
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
index 5f8a64f33f..77ee8cf5e3 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DefaultEvaluator.java
@@ -159,8 +159,7 @@ class DefaultEvaluator implements GridCoverage.Evaluator {
      * @see GridCoverage#evaluator()
      */
     protected DefaultEvaluator(final GridCoverage coverage) {
-        ArgumentChecks.ensureNonNull("coverage", coverage);
-        this.coverage = coverage;
+        this.coverage = Objects.requireNonNull(coverage);
     }
 
     /**
@@ -422,9 +421,8 @@ class DefaultEvaluator implements GridCoverage.Evaluator {
      */
     @Override
     public FractionalGridCoordinates toGridCoordinates(final DirectPosition 
point) throws TransformException {
-        ArgumentChecks.ensureNonNull("point", point);
         try {
-            return new FractionalGridCoordinates(toGridPosition(point));
+            return new 
FractionalGridCoordinates(toGridPosition(Objects.requireNonNull(point)));
         } catch (FactoryException e) {
             throw new TransformException(e.getMessage(), e);
         }
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
index e56317f329..9b0c7ca751 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DimensionalityReduction.java
@@ -20,6 +20,7 @@ import java.util.Map;
 import java.util.HashMap;
 import java.util.Arrays;
 import java.util.BitSet;
+import java.util.Objects;
 import java.util.function.UnaryOperator;
 import java.io.Serializable;
 import org.opengis.util.FactoryException;
@@ -303,8 +304,7 @@ public class DimensionalityReduction implements 
UnaryOperator<GridCoverage>, Ser
     private static BitSet bitmask(final int[] axes, final int sourceDim) {
         final BitSet bitmask = new BitSet(sourceDim);
         for (final int dim : axes) {
-            ArgumentChecks.ensureValidIndex(sourceDim, dim);
-            bitmask.set(dim);
+            bitmask.set(Objects.checkIndex(dim, sourceDim));
         }
         return bitmask;
     }
@@ -321,7 +321,6 @@ public class DimensionalityReduction implements 
UnaryOperator<GridCoverage>, Ser
      * @throws IllegalGridGeometryException if the dimensions to keep cannot 
be separated from the dimensions to omit.
      */
     public static DimensionalityReduction select(final GridGeometry source, 
final int... gridAxesToPass) {
-        ArgumentChecks.ensureNonNull("source", source);
         final BitSet bitmask = bitmask(gridAxesToPass, source.getDimension());
         try {
             return new DimensionalityReduction(source, bitmask, null);
@@ -362,7 +361,6 @@ public class DimensionalityReduction implements 
UnaryOperator<GridCoverage>, Ser
      * @throws IllegalGridGeometryException if the dimensions to keep cannot 
be separated from the dimensions to omit.
      */
     public static DimensionalityReduction remove(final GridGeometry source, 
final int... gridAxesToRemove) {
-        ArgumentChecks.ensureNonNull("source", source);
         final int sourceDim = source.getDimension();
         final BitSet bitmask = bitmask(gridAxesToRemove, sourceDim);
         bitmask.flip(0, sourceDim);
@@ -385,7 +383,6 @@ public class DimensionalityReduction implements 
UnaryOperator<GridCoverage>, Ser
      * @see #select2D(GridGeometry)
      */
     public static DimensionalityReduction reduce(final GridGeometry source) {
-        ArgumentChecks.ensureNonNull("source", source);
         final GridExtent extent = source.getExtent();
         final int sourceDim = extent.getDimension();
         final BitSet bitmask = new BitSet(sourceDim);
@@ -732,7 +729,6 @@ public class DimensionalityReduction implements 
UnaryOperator<GridCoverage>, Ser
      */
     @Override
     public GridCoverage apply(final GridCoverage source) {
-        ArgumentChecks.ensureNonNull("source", source);
         ensureSameAxes(sourceGeometry.extent, source.getGridGeometry().extent);
         if (isIdentity()) return source;
         if (source instanceof DimensionAppender) try {
@@ -942,7 +938,7 @@ public class DimensionalityReduction implements 
UnaryOperator<GridCoverage>, Ser
      * @throws PointOutsideCoverageException if the given point is outside the 
source grid extent.
      */
     public DimensionalityReduction withSlicePoint(final long[] point) {
-        ArgumentChecks.ensureNonNull("point", point);
+        Objects.requireNonNull(point);
         final GridExtent extent = sourceGeometry.getExtent();
         final int sourceDim = extent.getDimension();
         ArgumentChecks.ensureDimensionMatches("slicePoint", sourceDim, extent);
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
index a9fb085af1..2a2533323a 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/DomainLinearizer.java
@@ -142,7 +142,6 @@ public class DomainLinearizer {
      * @throws TransformException if some cell coordinates cannot be computed.
      */
     public GridCoverage apply(final GridCoverage coverage) throws 
TransformException {
-        ArgumentChecks.ensureNonNull("coverage", coverage);
         final GridGeometry gg = coverage.getGridGeometry();
         final GridGeometry linearized = apply(gg);
         if (gg.equals(linearized)) {
@@ -164,7 +163,6 @@ public class DomainLinearizer {
      * @throws TransformException if some cell coordinates cannot be computed.
      */
     public GridGeometry apply(final GridGeometry gg) throws TransformException 
{
-        ArgumentChecks.ensureNonNull("gg", gg);
         if (gg.nonLinears != 0) try {
             MathTransform   gridToCRS   = gg.requireGridToCRS(true);
             GeneralEnvelope domain      = gg.extent.toEnvelope();
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java
index 2127cef69d..52885418fd 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoordinatesView.java
@@ -17,7 +17,7 @@
 package org.apache.sis.coverage.grid;
 
 import java.util.Arrays;
-import org.apache.sis.util.ArgumentChecks;
+import java.util.Objects;
 
 // Specific to the geoapi-3.1 and geoapi-4.0 branches:
 import org.opengis.coverage.grid.GridCoordinates;
@@ -71,8 +71,7 @@ final class GridCoordinatesView implements GridCoordinates {
      */
     @Override
     public final long getCoordinateValue(final int index) {
-        ArgumentChecks.ensureValidIndex(getDimension(), index);
-        return coordinates[offset + index];
+        return coordinates[offset + Objects.checkIndex(index, getDimension())];
     }
 
     /**
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
index 223d8467ed..b27691017b 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridExtent.java
@@ -26,6 +26,7 @@ import java.io.Serializable;
 import java.io.IOException;
 import java.io.UncheckedIOException;
 import java.awt.Rectangle;
+import java.util.Objects;
 import org.opengis.util.FactoryException;
 import org.opengis.util.InternationalString;
 import org.opengis.geometry.Envelope;
@@ -798,8 +799,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
      */
     @Override
     public long getLow(final int index) {
-        ArgumentChecks.ensureValidIndex(getDimension(), index);
-        return coordinates[index];
+        return coordinates[Objects.checkIndex(index, getDimension())];
     }
 
     /**
@@ -817,8 +817,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
     @Override
     public long getHigh(final int index) {
         final int dimension = getDimension();
-        ArgumentChecks.ensureValidIndex(dimension, index);
-        return coordinates[index + dimension];
+        return coordinates[Objects.checkIndex(index, dimension) + dimension];
     }
 
     /**
@@ -843,8 +842,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
      */
     public long getMedian(final int index) {
         final int dimension = getDimension();
-        ArgumentChecks.ensureValidIndex(dimension, index);
-        final long low  = coordinates[index];
+        final long low  = coordinates[Objects.checkIndex(index, dimension)];
         final long high = coordinates[index + dimension];
         /*
          * Use `>> 1` instead of `/2` because the two operations differ in 
their rounding mode for negative values.
@@ -898,7 +896,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
     @Override
     public long getSize(final int index) {
         final int dimension = getDimension();
-        ArgumentChecks.ensureValidIndex(dimension, index);
+        Objects.checkIndex(index, dimension);
         return Math.incrementExact(Math.subtractExact(coordinates[dimension + 
index], coordinates[index]));
     }
 
@@ -914,7 +912,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
      */
     public double getSize(final int index, final boolean minusOne) {
         final int dimension = getDimension();
-        ArgumentChecks.ensureValidIndex(dimension, index);
+        Objects.checkIndex(index, dimension);
         long size = coordinates[dimension + index] - coordinates[index];       
 // Unsigned long.
         if (!minusOne && ++size == 0) {
             return 0x1P64;                          // Unsigned integer 
overflow. Result is 2^64.
@@ -1165,7 +1163,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
      *         than the {@linkplain #getDimension() grid dimension}.
      */
     public Optional<DimensionNameType> getAxisType(final int index) {
-        ArgumentChecks.ensureValidIndex(getDimension(), index);
+        Objects.checkIndex(index, getDimension());
         return Optional.ofNullable((types != null) ? types[index] : null);
     }
 
@@ -1211,8 +1209,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
      */
     public GridExtent withRange(final int index, final long low, final long 
high) {
         int ih = getDimension();
-        ArgumentChecks.ensureValidIndex(ih, index);
-        ih += index;
+        ih += Objects.checkIndex(index, ih);
         if (coordinates[index] == low && coordinates[ih] == high) {
             return this;
         }
@@ -1422,7 +1419,7 @@ public class GridExtent implements GridEnvelope, 
LenientComparable, Serializable
      */
     public GridExtent insertDimension(final int index, final DimensionNameType 
axisType, final long low, long high, final boolean isHighIncluded) {
         final int dimension = getDimension();
-        ArgumentChecks.ensureValidIndex(dimension+1, index);
+        Objects.checkIndex(index, dimension+1);
         if (!isHighIncluded) {
             high = Math.decrementExact(high);
         }
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
index c532eab0c2..3e3f3823f5 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridGeometry.java
@@ -17,6 +17,7 @@
 package org.apache.sis.coverage.grid;
 
 import java.util.Locale;
+import java.util.Objects;
 import java.util.Optional;
 import java.time.Instant;
 import java.text.NumberFormat;
@@ -1244,8 +1245,7 @@ public class GridGeometry implements LenientComparable, 
Serializable {
         final int dimension = getTargetDimension();
         long mask = 0;
         for (final int d : targets) {
-            ArgumentChecks.ensureValidIndex(dimension, d);
-            mask |= Numerics.bitmask(d);
+            mask |= Numerics.bitmask(Objects.checkIndex(d, dimension));
         }
         return (nonLinears & mask) == 0;
     }
diff --git 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java
 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java
index 5cbea92b82..40cddf718d 100644
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/lan/LocaleAndCharset.java
@@ -24,8 +24,8 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Locale;
 import java.util.Iterator;
+import java.util.Objects;
 import java.nio.charset.Charset;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.internal.Bag;
 import org.apache.sis.util.internal.Unsafe;
 import org.apache.sis.util.internal.CollectionsExt;
@@ -179,7 +179,7 @@ public final class LocaleAndCharset implements Node {
 
             /** Returns a child node wrapping the {@link Charset} ad the given 
index. */
             @Override public Node get(final int index) {
-                ArgumentChecks.ensureValidIndex(1, index);
+                Objects.checkIndex(index, 1);
                 return new Child();
             }
         };
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java
index 7d1543b99d..0eac36ed68 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/ArrayEnvelope.java
@@ -439,8 +439,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) {
      */
     @Override                                       // Must also be overridden 
in SubEnvelope
     public double getLower(final int dimension) throws 
IndexOutOfBoundsException {
-        ensureValidIndex(coordinates.length >>> 1, dimension);
-        return coordinates[dimension];
+        return coordinates[Objects.checkIndex(dimension, coordinates.length 
>>> 1)];
     }
 
     /**
@@ -449,8 +448,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) {
     @Override                                       // Must also be overridden 
in SubEnvelope
     public double getUpper(final int dimension) throws 
IndexOutOfBoundsException {
         final int d = coordinates.length >>> 1;
-        ensureValidIndex(d, dimension);
-        return coordinates[dimension + d];
+        return coordinates[Objects.checkIndex(dimension, d) + d];
     }
 
     /**
@@ -458,8 +456,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) {
      */
     @Override
     public double getMinimum(final int dimension) throws 
IndexOutOfBoundsException {
-        ensureValidIndex(endIndex(), dimension);
-        final int i = dimension + beginIndex();
+        final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex();
         double lower = coordinates[i];
         if (isNegative(coordinates[i + (coordinates.length >>> 1)] - lower)) { 
   // Special handling for -0.0
             final CoordinateSystemAxis axis = getAxis(crs, dimension);
@@ -473,8 +470,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) {
      */
     @Override
     public double getMaximum(final int dimension) throws 
IndexOutOfBoundsException {
-        ensureValidIndex(endIndex(), dimension);
-        final int i = dimension + beginIndex();
+        final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex();
         double upper = coordinates[i + (coordinates.length >>> 1)];
         if (isNegative(upper - coordinates[i])) {                              
 // Special handling for -0.0
             final CoordinateSystemAxis axis = getAxis(crs, dimension);
@@ -488,8 +484,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) {
      */
     @Override
     public double getMedian(final int dimension) throws 
IndexOutOfBoundsException {
-        ensureValidIndex(endIndex(), dimension);
-        final int i = dimension + beginIndex();
+        final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex();
         final double minimum = coordinates[i];
         final double maximum = coordinates[i + (coordinates.length >>> 1)];
         double median = 0.5 * (minimum + maximum);
@@ -504,8 +499,7 @@ scanNumber: while ((i += Character.charCount(c)) < length) {
      */
     @Override
     public double getSpan(final int dimension) throws 
IndexOutOfBoundsException {
-        ensureValidIndex(endIndex(), dimension);
-        final int i = dimension + beginIndex();
+        final int i = Objects.checkIndex(dimension, endIndex()) + beginIndex();
         double span = coordinates[i + (coordinates.length >>> 1)] - 
coordinates[i];
         if (isNegative(span)) {                                                
 // Special handling for -0.0
             span = fixSpan(getAxis(crs, dimension), span);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java
index 3e20d998f9..3d00c8f948 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/GeneralEnvelope.java
@@ -24,6 +24,7 @@ package org.apache.sis.geometry;
  */
 import java.util.Arrays;
 import java.util.Iterator;
+import java.util.Objects;
 import java.time.Instant;
 import java.io.Serializable;
 import java.lang.reflect.Field;
@@ -340,7 +341,7 @@ public class GeneralEnvelope extends ArrayEnvelope 
implements Cloneable, Seriali
             throws IndexOutOfBoundsException
     {
         final int d = coordinates.length >>> 1;
-        ensureValidIndex(d, dimension);
+        Objects.checkIndex(dimension, d);
         /*
          * The check performed here shall be identical to 
ArrayEnvelope.verifyRanges(crs, coordinates),
          * except that there is no loop.
@@ -524,23 +525,6 @@ public class GeneralEnvelope extends ArrayEnvelope 
implements Cloneable, Seriali
         }
     }
 
-    /**
-     * Adds to this envelope a point of the given array.
-     * This method does not check for anti-meridian crossing. It is invoked 
only
-     * by the {@link Envelopes} transform methods, which build "normal" 
envelopes.
-     *
-     * @param  array   the array which contains the coordinate values.
-     * @param  offset  index of the first valid coordinate value in the given 
array.
-     */
-    final void addSimple(final double[] array, final int offset) {
-        final int d = coordinates.length >>> 1;
-        for (int i=0; i<d; i++) {
-            final double value = array[offset + i];
-            if (value < coordinates[i  ]) coordinates[i  ] = value;
-            if (value > coordinates[i+d]) coordinates[i+d] = value;
-        }
-    }
-
     /**
      * Adds a point to this envelope. The resulting envelope is the smallest 
envelope that
      * contains both the original envelope and the specified point.
@@ -1267,7 +1251,7 @@ public class GeneralEnvelope extends ArrayEnvelope 
implements Cloneable, Seriali
      */
     // Must be overridden in SubEnvelope
     public GeneralEnvelope subEnvelope(final int beginIndex, final int 
endIndex) throws IndexOutOfBoundsException {
-        ensureValidIndexRange(coordinates.length >>> 1, beginIndex, endIndex);
+        Objects.checkFromToIndex(beginIndex, endIndex, coordinates.length >>> 
1);
         return new SubEnvelope(coordinates, beginIndex, endIndex);
         /*
          * Do not check if we could return "this" as an optimization, in order 
to keep
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java
index 54eea5d3d6..7d34fe120e 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/SubEnvelope.java
@@ -23,9 +23,7 @@ package org.apache.sis.geometry;
  * force installation of the Java2D module (e.g. JavaFX/SWT).
  */
 import java.util.Arrays;
-
-import static org.apache.sis.util.ArgumentChecks.ensureValidIndex;
-import static org.apache.sis.util.ArgumentChecks.ensureValidIndexRange;
+import java.util.Objects;
 
 
 /**
@@ -102,8 +100,7 @@ final class SubEnvelope extends GeneralEnvelope {
      */
     @Override
     public double getLower(final int dimension) throws 
IndexOutOfBoundsException {
-        ensureValidIndex(endIndex, dimension);
-        return coordinates[dimension + beginIndex];
+        return coordinates[Objects.checkIndex(dimension, endIndex) + 
beginIndex];
     }
 
     /**
@@ -112,8 +109,7 @@ final class SubEnvelope extends GeneralEnvelope {
      */
     @Override
     public double getUpper(final int dimension) throws 
IndexOutOfBoundsException {
-        ensureValidIndex(endIndex, dimension);
-        return coordinates[dimension + beginIndex + (coordinates.length >>> 
1)];
+        return coordinates[Objects.checkIndex(dimension, endIndex) + 
beginIndex + (coordinates.length >>> 1)];
     }
 
     /**
@@ -123,7 +119,7 @@ final class SubEnvelope extends GeneralEnvelope {
     public void setRange(int dimension, final double lower, final double upper)
             throws IndexOutOfBoundsException
     {
-        ensureValidIndex(endIndex, dimension);
+        Objects.checkIndex(dimension, endIndex);
         /*
          * The check performed here shall be identical to the super-class 
method, which is itself
          * identical to ArrayEnvelope.verifyRanges(crs, coordinates) except 
that there is no loop.
@@ -197,7 +193,7 @@ final class SubEnvelope extends GeneralEnvelope {
      */
     @Override
     public GeneralEnvelope subEnvelope(final int b, final int e) throws 
IndexOutOfBoundsException {
-        ensureValidIndexRange(endIndex - beginIndex, b, e);
+        Objects.checkFromToIndex(b, e, endIndex - beginIndex);
         return new SubEnvelope(coordinates, b + beginIndex, e + beginIndex);
     }
 
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java
index 36e58c4e85..6cd496d503 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/io/wkt/Warnings.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Iterator;
+import java.util.Objects;
 import java.io.Serializable;
 import org.opengis.metadata.Identifier;
 import org.opengis.referencing.IdentifiedObject;
@@ -32,7 +33,6 @@ import org.opengis.util.InternationalString;
 import org.apache.sis.util.Classes;
 import org.apache.sis.util.Exceptions;
 import org.apache.sis.util.Localized;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.resources.Messages;
 import org.apache.sis.util.resources.Vocabulary;
@@ -243,7 +243,7 @@ public final class Warnings implements Localized, 
Serializable {
      * @return the <var>i</var>-th warning message.
      */
     public String getMessage(int index) {
-        ArgumentChecks.ensureValidIndex(getNumMessages(), index);
+        Objects.checkIndex(index, getNumMessages());
         index *= 2;
         final InternationalString i18n = (InternationalString) 
messages.get(index);
         if (i18n != null) {
@@ -266,7 +266,7 @@ public final class Warnings implements Localized, 
Serializable {
      * @return the exception which was the cause of the warning message, or 
{@code null} if none.
      */
     public Exception getException(final int index) {
-        ArgumentChecks.ensureValidIndex(getNumMessages(), index);
+        Objects.checkIndex(index, getNumMessages());
         return (Exception) messages.get(index*2 + 1);
     }
 
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java
index 1263bac902..7c558bd6c0 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterValueList.java
@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.AbstractList;
 import java.util.RandomAccess;
 import java.util.Arrays;
+import java.util.Objects;
 import java.io.Serializable;
 import java.io.IOException;
 import java.io.ObjectOutputStream;
@@ -32,7 +33,6 @@ import org.opengis.parameter.InvalidParameterNameException;
 import org.opengis.parameter.InvalidParameterCardinalityException;
 import org.opengis.metadata.Identifier;
 import org.apache.sis.util.ArraysExt;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.referencing.IdentifiedObjects;
 import org.apache.sis.referencing.internal.Resources;
@@ -145,8 +145,7 @@ final class ParameterValueList extends 
AbstractList<GeneralParameterValue> imple
      */
     @Override
     public GeneralParameterValue get(int index) {
-        ArgumentChecks.ensureValidIndex(size, index);
-        GeneralParameterValue value = values[index];
+        GeneralParameterValue value = values[Objects.checkIndex(index, size)];
         if (value instanceof UninitializedParameter) {
             values[index] = value = value.getDescriptor().createValue();
         }
@@ -160,9 +159,7 @@ final class ParameterValueList extends 
AbstractList<GeneralParameterValue> imple
      */
     @Override
     public GeneralParameterValue set(final int index, final 
GeneralParameterValue parameter) {
-        ArgumentChecks.ensureValidIndex(size, index);
-        final GeneralParameterValue value = values[index];
-        ArgumentChecks.ensureNonNull("parameter", parameter);
+        final GeneralParameterValue value = values[Objects.checkIndex(index, 
size)];
         final GeneralParameterDescriptor desc = parameter.getDescriptor();
         if (!value.getDescriptor().equals(desc)) {
             ensureDescriptorExists(desc);
@@ -187,7 +184,6 @@ final class ParameterValueList extends 
AbstractList<GeneralParameterValue> imple
      */
     @Override
     public boolean add(final GeneralParameterValue parameter) {
-        ArgumentChecks.ensureNonNull("parameter", parameter);
         final GeneralParameterDescriptor desc = parameter.getDescriptor();
         ensureDescriptorExists(desc);
         /*
@@ -241,8 +237,8 @@ final class ParameterValueList extends 
AbstractList<GeneralParameterValue> imple
              */
             final Identifier name = desc.getName();
             final String code = name.getCode();
-            for (final GeneralParameterDescriptor descriptor : descriptors) {
-                if (IdentifiedObjects.isHeuristicMatchForName(descriptor, 
code)) {
+            for (final GeneralParameterDescriptor d : descriptors) {
+                if (IdentifiedObjects.isHeuristicMatchForName(d, code)) {
                     throw new IllegalArgumentException(Resources.format(
                             Resources.Keys.MismatchedParameterDescriptor_1, 
name));
                 }
@@ -303,8 +299,7 @@ final class ParameterValueList extends 
AbstractList<GeneralParameterValue> imple
      */
     @Override
     public GeneralParameterValue remove(final int index) {
-        ArgumentChecks.ensureValidIndex(size, index);
-        final GeneralParameterValue value = values[index];
+        final GeneralParameterValue value = values[Objects.checkIndex(index, 
size)];
         ensureCanRemove(value.getDescriptor());
         System.arraycopy(values, index + 1, values, index, --size - index);
         values[size] = null;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java
index 7bd5854b2d..e367036ff2 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/CRS.java
@@ -19,6 +19,7 @@ package org.apache.sis.referencing;
 import java.util.Map;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.logging.Filter;
 import java.util.logging.Logger;
@@ -1460,7 +1461,7 @@ public final class CRS extends Static {
     public static CoordinateReferenceSystem 
getComponentAt(CoordinateReferenceSystem crs, int lower, int upper) {
         if (crs == null) return null;     // Skip bounds check.
         int dimension = ReferencingUtilities.getDimension(crs);
-        ArgumentChecks.ensureValidIndexRange(dimension, lower, upper);
+        Objects.checkFromToIndex(lower, upper, dimension);
 check:  while (lower != 0 || upper != dimension) {
             if (crs instanceof CompoundCRS) {
                 // We need nested CompoundCRS (if any) below, not a flattened 
list of SingleCRS.
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java
index 9cc3708827..51e5802a77 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/factory/sql/InstallationScriptProvider.java
@@ -205,7 +205,6 @@ public abstract class InstallationScriptProvider extends 
InstallationResources {
     @Override
     public BufferedReader openScript(final String authority, final int 
resource) throws IOException {
         verifyAuthority(authority);
-        ArgumentChecks.ensureValidIndex(resources.length, resource);
         if (!Constants.EPSG.equals(authority)) {
             throw new 
IllegalStateException(Resources.format(Resources.Keys.UnknownAuthority_1, 
authority));
         }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
index 1cae1b466e..9f2c085be4 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
@@ -26,6 +26,7 @@ import java.util.NoSuchElementException;
 import java.util.Optional;
 import java.util.Locale;
 import java.text.NumberFormat;
+import java.util.Objects;
 import java.io.IOException;
 import java.io.UncheckedIOException;
 import org.opengis.util.FactoryException;
@@ -1330,8 +1331,7 @@ search:         for (int j=domain(); --j >= 0;) {
             long defined = 0;
             projToGrid = projToGrid.clone();
             for (final int d : projToGrid) {
-                ArgumentChecks.ensureValidIndex(tgtDim, d);
-                if (defined == (defined |= Numerics.bitmask(d))) {
+                if (defined == (defined |= 
Numerics.bitmask(Objects.checkIndex(d, tgtDim)))) {
                     // Note: if d ≥ 64, there will be no check (mask = 0).
                     throw new 
IllegalArgumentException(Errors.format(Errors.Keys.DuplicatedNumber_1, d));
                 }
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java
index 0e1a908f31..ea5432b721 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/Matrices.java
@@ -577,8 +577,7 @@ public final class Matrices extends Static {
         final int numTargetDim = selectedDimensions.length;
         final MatrixSIS matrix = createZero(numTargetDim+1, 
sourceDimensions+1);
         for (int j=0; j<numTargetDim; j++) {
-            final int i = selectedDimensions[j];
-            ArgumentChecks.ensureValidIndex(sourceDimensions, i);
+            int i = Objects.checkIndex(selectedDimensions[j], 
sourceDimensions);
             matrix.setElement(j, i, 1);
         }
         matrix.setElement(numTargetDim, sourceDimensions, 1);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java
index abd0e85050..55c4c0a128 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/matrix/MatrixSIS.java
@@ -17,12 +17,12 @@
 package org.apache.sis.referencing.operation.matrix;
 
 import java.util.Arrays;
+import java.util.Objects;
 import java.io.Serializable;
 import java.awt.geom.AffineTransform;                       // For javadoc
 import org.opengis.referencing.operation.Matrix;
 import org.apache.sis.referencing.util.ExtendedPrecisionMatrix;
 import org.apache.sis.referencing.internal.Arithmetic;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.LenientComparable;
 import org.apache.sis.util.Numbers;
@@ -295,7 +295,7 @@ public abstract class MatrixSIS implements Matrix, 
LenientComparable, Cloneable,
      * @since 0.7
      */
     public void setMatrix(final Matrix source) throws 
MismatchedMatrixSizeException {
-        ArgumentChecks.ensureNonNull("source", source);
+        Objects.requireNonNull(source);
         final int numRow = getNumRow();
         final int numCol = getNumCol();
         ensureSizeMatch(numRow, numCol, source);
@@ -447,7 +447,7 @@ public abstract class MatrixSIS implements Matrix, 
LenientComparable, Cloneable,
      */
     public void convertBefore(final int srcDim, final Number scale, final 
Number offset) {
         final int lastCol = getNumCol() - 1;
-        ArgumentChecks.ensureValidIndex(lastCol, srcDim);
+        Objects.checkIndex(srcDim, lastCol);
         for (int j = getNumRow(); --j >= 0;) {
             if (offset != null) {
                 final Number s = getElementOrNull(j, srcDim);           // 
Scale factor
@@ -478,7 +478,7 @@ public abstract class MatrixSIS implements Matrix, 
LenientComparable, Cloneable,
     public void convertAfter(final int tgtDim, final Number scale, final 
Number offset) {
         final int lastRow = getNumRow() - 1;
         final int lastCol = getNumCol() - 1;
-        ArgumentChecks.ensureValidIndex(lastRow, tgtDim);
+        Objects.checkIndex(tgtDim, lastRow);
         if (scale != null) {
             for (int i=lastCol; i>=0; i--) {
                 final Number s = getElementOrNull(tgtDim, i);
@@ -635,7 +635,7 @@ public abstract class MatrixSIS implements Matrix, 
LenientComparable, Cloneable,
     public MatrixSIS removeRows(final int lower, final int upper) {
         final int numRow = getNumRow();
         final int numCol = getNumCol();
-        ArgumentChecks.ensureValidIndexRange(numRow, lower, upper);
+        Objects.checkFromToIndex(lower, upper, numRow);
         final MatrixSIS reduced = Matrices.createZero(numRow - (upper - 
lower), numCol, this);
         int dest = 0;
         for (int j=0; j<numRow; j++) {
@@ -665,7 +665,7 @@ public abstract class MatrixSIS implements Matrix, 
LenientComparable, Cloneable,
     public MatrixSIS removeColumns(final int lower, final int upper) {
         final int numRow = getNumRow();
         final int numCol = getNumCol();
-        ArgumentChecks.ensureValidIndexRange(numCol, lower, upper);
+        Objects.checkFromToIndex(lower, upper, numCol);
         final MatrixSIS reduced = Matrices.createZero(numRow, numCol - (upper 
- lower), this);
         int dest = 0;
         for (int i=0; i<numCol; i++) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java
index 01ce1f8dfa..55f4214b70 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/util/GeodeticObjectBuilder.java
@@ -19,6 +19,7 @@ package org.apache.sis.referencing.util;
 import java.util.Map;
 import java.util.Date;
 import java.util.Locale;
+import java.util.Objects;
 import java.util.function.BiConsumer;
 import javax.measure.Unit;
 import javax.measure.quantity.Time;
@@ -256,7 +257,6 @@ public class GeodeticObjectBuilder extends 
Builder<GeodeticObjectBuilder> {
      * @throws FactoryException if the operation method cannot be obtained.
      */
     public GeodeticObjectBuilder setConversion(final ParameterValueGroup 
parameters) throws FactoryException {
-        ArgumentChecks.ensureNonNull("parameters", parameters);
         method = 
factories.getCoordinateOperationFactory().getOperationMethod(parameters.getDescriptor().getName().getCode());
         this.parameters = parameters;           // Set only if above line 
succeed.
         return this;
@@ -634,7 +634,7 @@ public class GeodeticObjectBuilder extends 
Builder<GeodeticObjectBuilder> {
              */
             return source.equals(replacement) ? source : replacement;
         }
-        ArgumentChecks.ensureValidIndex(srcDim - repDim, firstDimension);
+        Objects.checkIndex(firstDimension, srcDim - repDim);
         if (source instanceof CompoundCRS) {
             final var components = ((CompoundCRS) 
source).getComponents().toArray(CoordinateReferenceSystem[]::new);
             int lower = 0;
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java
index 31b97de4b6..a749b952b4 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/LineAppender.java
@@ -16,6 +16,7 @@
  */
 package org.apache.sis.io;
 
+import java.util.Objects;
 import java.io.Flushable;
 import java.io.IOException;
 import org.apache.sis.util.Characters;
@@ -577,7 +578,7 @@ split:  for (;;) {
      */
     @Override
     public Appendable append(final CharSequence sequence, int start, final int 
end) throws IOException {
-        ArgumentChecks.ensureValidIndexRange(sequence.length(), start, end);
+        Objects.checkFromToIndex(start, end, sequence.length());
         if (lineSeparator == null) {
             /*
              * Use the line separator found in the submitted document, if 
possible.
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java
index 2fad93f5b7..0de68ba745 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/io/TableAppender.java
@@ -19,6 +19,7 @@ package org.apache.sis.io;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
 import java.io.Flushable;
 import java.io.IOException;
 import java.io.UncheckedIOException;
@@ -506,7 +507,7 @@ public class TableAppender extends Appender implements 
Flushable {
     @Override
     @SuppressWarnings("fallthrough")
     public TableAppender append(final CharSequence sequence, int start, int 
end) {
-        ArgumentChecks.ensureValidIndexRange(sequence.length(), start, end);
+        Objects.checkFromToIndex(start, end, sequence.length());
         if (lineSeparator == null) {
             lineSeparator = lineSeparator(sequence, start, end);
         }
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java
index 2d497f6cea..add6f897df 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/MathFunctions.java
@@ -17,6 +17,7 @@
 package org.apache.sis.math;
 
 import java.util.Arrays;
+import java.util.Objects;
 import static java.lang.Math.PI;
 import static java.lang.Math.min;
 import static java.lang.Math.abs;
@@ -797,7 +798,8 @@ public final class MathFunctions extends Static {
      * @see java.math.BigInteger#isProbablePrime(int)
      */
     static int primeNumberAt(final int index) throws IndexOutOfBoundsException 
{
-        ArgumentChecks.ensureValidIndex(PRIMES_LENGTH_16_BITS, index);
+        Objects.checkIndex(index, PRIMES_LENGTH_16_BITS);
+        @SuppressWarnings("LocalVariableHidesMemberVariable")
         short[] primes = MathFunctions.primes;
         if (index >= primes.length) {
             synchronized (MathFunctions.class) {
@@ -842,6 +844,7 @@ testNextNumber:         while (true) {      // Simulate a 
"goto" statement (usua
      */
     public static int nextPrimeNumber(final int number) throws 
IllegalArgumentException {
         ArgumentChecks.ensureBetween("number", 2, 
HIGHEST_SUPPORTED_PRIME_NUMBER, number);
+        @SuppressWarnings("LocalVariableHidesMemberVariable")
         final short[] primes = MathFunctions.primes;
         int lower = 0;
         int upper = min(PRIMES_LENGTH_15_BITS, primes.length);
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java
index db30512814..21a3ce8dda 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/RepeatedVector.java
@@ -17,9 +17,9 @@
 package org.apache.sis.math;
 
 import java.io.Serializable;
+import java.util.Objects;
 import java.util.function.IntSupplier;
 import org.apache.sis.measure.NumberRange;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
 
 
@@ -119,8 +119,7 @@ final class RepeatedVector extends Vector implements 
Serializable {
      * Converts the given index from this vector domain to an index in the 
{@linkplain #base} vector.
      */
     private int toBase(final int index) {
-        ArgumentChecks.ensureValidIndex(size, index);
-        return (index / occurrences) % cycleLength;
+        return (Objects.checkIndex(index, size) / occurrences) % cycleLength;
     }
 
     /**
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java
index f3d62960a5..cb809f0935 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/SequenceVector.java
@@ -17,10 +17,10 @@
 package org.apache.sis.math;
 
 import java.util.Arrays;
+import java.util.Objects;
 import java.io.Serializable;
 import org.apache.sis.measure.NumberRange;
 import org.apache.sis.util.Numbers;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
 
 
@@ -190,8 +190,7 @@ abstract class SequenceVector extends Vector implements 
Serializable {
 
         /** Computes the value at the given index. */
         @Override public final double doubleValue(final int index) {
-            ArgumentChecks.ensureValidIndex(length, index);
-            return Math.fma(index, increment, first);
+            return Math.fma(Objects.checkIndex(index, length), increment, 
first);
         }
 
         /** Returns the string representation of the value at the given index. 
*/
@@ -318,8 +317,7 @@ abstract class SequenceVector extends Vector implements 
Serializable {
 
         /** Computes the value at the given index. */
         @Override public long longValue(final int index) {
-            ArgumentChecks.ensureValidIndex(length, index);
-            return first + increment*index;
+            return Math.addExact(first, Math.multiplyExact(increment, 
Objects.checkIndex(index, length)));
         }
 
         /** Returns the string representation of the value at the given index. 
*/
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java
index 81561db4f5..430a8367fc 100644
--- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java
+++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/math/Vector.java
@@ -23,6 +23,7 @@ import java.util.AbstractList;
 import java.util.RandomAccess;
 import java.util.StringJoiner;
 import java.util.Optional;
+import java.util.Objects;
 import java.util.function.IntSupplier;
 import static java.util.logging.Logger.getLogger;
 import org.apache.sis.measure.NumberRange;
@@ -33,7 +34,6 @@ import org.apache.sis.util.logging.Logging;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.util.internal.Numerics;
 import org.apache.sis.system.Loggers;
-import static org.apache.sis.util.ArgumentChecks.ensureValidIndex;
 
 
 /**
@@ -560,7 +560,7 @@ public abstract class Vector extends AbstractList<Number> 
implements RandomAcces
      */
     public void fill(int fromIndex, final int toIndex, final Number value) {
         // Subclasses override with more efficient implementations.
-        ArgumentChecks.ensureValidIndexRange(size(), fromIndex, toIndex);
+        Objects.checkFromToIndex(fromIndex, toIndex, size());
         while (fromIndex < toIndex) set(fromIndex++, value);
     }
 
@@ -967,8 +967,7 @@ search:     for (;;) {
 
         /** Returns the index where to look for the value in the enclosing 
vector. */
         final int toBacking(final int index) {
-            ensureValidIndex(length, index);
-            return index*step + first;
+            return Objects.checkIndex(index, length) * step + first;
         }
 
         /** Returns the index where to look for the value in the enclosing 
vector. */
@@ -1105,7 +1104,7 @@ search:     for (;;) {
         indices = indices.clone();
         final int length = size();
         for (int i : indices) {
-            ensureValidIndex(length, i);
+            Objects.checkIndex(i, length);
         }
         return indices;
     }
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java
index 5a0ed48df1..c5e93c7a6d 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/ArgumentChecks.java
@@ -59,11 +59,6 @@ import org.opengis.coverage.grid.GridEnvelope;
  *     {@link #ensureCanCast(String, Class, Object) ensureCanCast}.
  *   </td>
  * </tr><tr>
- *   <td>{@link IndexOutOfBoundsException}</td>
- *   <td class="sep">
- *     {@link #ensureValidIndex(int, int) ensureValidIndex}.
- *   </td>
- * </tr><tr>
  *   <td>{@link MismatchedDimensionException}</td>
  *   <td class="sep">
  *     {@link #ensureDimensionMatches(String, int, DirectPosition) 
ensureDimensionMatches}.
@@ -335,7 +330,10 @@ public final class ArgumentChecks extends Static {
      * @throws IndexOutOfBoundsException if the given index is negative or not 
lower than the given upper value.
      *
      * @see #ensurePositive(String, int)
+     *
+     * @deprecated As of Java 9, replaced by {@link Objects#checkIndex(int, 
int)}.
      */
+    @Deprecated(since="1.5", forRemoval=true)
     public static void ensureValidIndex(final int upper, final int index) 
throws IndexOutOfBoundsException {
         if (index < 0 || index >= upper) {
             throw new 
IndexOutOfBoundsException(Errors.format(Errors.Keys.IndexOutOfBounds_1, index));
@@ -359,7 +357,10 @@ public final class ArgumentChecks extends Static {
      *         range is out of the sequence index range.
      *
      * @see #ensureCountBetween(String, boolean, int, int, int)
+     *
+     * @deprecated As of Java 9, replaced by {@link 
Objects#checkFromToIndex(int, int, int)}.
      */
+    @Deprecated(since="1.5", forRemoval=true)
     public static void ensureValidIndexRange(final int length, final int 
lower, final int upper) throws IndexOutOfBoundsException {
         if (lower < 0 || upper < lower || upper > length) {
             throw new 
IndexOutOfBoundsException(Errors.format(Errors.Keys.IllegalRange_2, lower, 
upper));
@@ -369,13 +370,12 @@ public final class ArgumentChecks extends Static {
     /**
      * Ensures that the given integer value is greater than or equals to zero.
      * This method is used for checking values that are <strong>not</strong> 
index.
-     * For checking index values, use {@link #ensureValidIndex(int, int)} 
instead.
+     * For checking index values, use {@link Objects#checkIndex(int, int)} 
instead.
      *
      * @param  name   the name of the argument to be checked, used only if an 
exception is thrown.
      * @param  value  the user argument to check.
      * @throws IllegalArgumentException if the given value is negative.
      *
-     * @see #ensureValidIndex(int, int)
      * @see #ensureStrictlyPositive(String, int)
      */
     public static void ensurePositive(final String name, final int value)
@@ -568,7 +568,7 @@ public final class ArgumentChecks extends Static {
      * <ul>
      *   <li>{@link #ensureCountBetween(String, boolean, int, int, int) 
ensureCountBetween(…)}
      *       if the {@code value} argument is a collection size or an array 
length.</li>
-     *   <li>{@link #ensureValidIndex(int, int) ensureValidIndex(…)} if the 
{@code value}
+     *   <li>{@link Objects#checkIndex(int, int)} if the {@code value}
      *       argument is an index in a list or an array.</li>
      * </ul>
      *
@@ -579,8 +579,6 @@ public final class ArgumentChecks extends Static {
      * @throws IllegalArgumentException if the given value is not in the given 
range.
      *
      * @see #ensureCountBetween(String, boolean, int, int, int)
-     * @see #ensureValidIndex(int, int)
-     * @see #ensureValidIndexRange(int, int, int)
      */
     public static void ensureBetween(final String name, final int min, final 
int max, final int value)
             throws IllegalArgumentException
@@ -660,7 +658,6 @@ public final class ArgumentChecks extends Static {
      * @throws IllegalArgumentException if the given value is not in the given 
range.
      *
      * @see #ensureBetween(String, int, int, int)
-     * @see #ensureValidIndexRange(int, int, int)
      *
      * @since 1.4
      */
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java
index d39dfce408..33a8a56d48 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/CharSequences.java
@@ -17,6 +17,7 @@
 package org.apache.sis.util;
 
 import java.util.Arrays;
+import java.util.Objects;
 import java.nio.CharBuffer;
 import static java.lang.Character.*;
 import org.opengis.metadata.citation.Citation;      // For javadoc
@@ -140,12 +141,12 @@ public final class CharSequences extends Static {
             }
 
             @Override public char charAt(int index) {
-                ArgumentChecks.ensureValidIndex(length, index);
+                Objects.checkIndex(index, length);
                 return ' ';
             }
 
             @Override public CharSequence subSequence(final int start, final 
int end) {
-                ArgumentChecks.ensureValidIndexRange(length, start, end);
+                Objects.checkFromToIndex(start, end, length);
                 final int n = end - start;
                 return (n == length) ? this : spaces(n);
             }
@@ -981,7 +982,7 @@ search:     for (; fromIndex <= toIndex; fromIndex++) {
      */
     public static CharSequence trimWhitespaces(CharSequence text, int lower, 
int upper) {
         final int length = length(text);
-        ArgumentChecks.ensureValidIndexRange(length, lower, upper);
+        Objects.checkFromToIndex(lower, upper, length);
         if (text != null) {
             lower = skipLeadingWhitespaces (text, lower, upper);
             upper = skipTrailingWhitespaces(text, lower, upper);
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java
 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java
index d2e90b086c..35194b0da3 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/Containers.java
@@ -21,6 +21,7 @@ import java.util.Set;
 import java.util.List;
 import java.util.Iterator;
 import java.util.Collection;
+import java.util.Objects;
 import org.apache.sis.util.Static;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.ObjectConverter;
@@ -118,8 +119,7 @@ public final class Containers extends Static {
      * @throws IndexOutOfBoundsException if the lower or upper value are out 
of bounds.
      */
     public static <E> List<? extends E> unmodifiableList(final E[] array, 
final int lower, final int upper) {
-        ArgumentChecks.ensureNonNull("array", array);
-        ArgumentChecks.ensureValidIndexRange(array.length, lower, upper);
+        Objects.checkFromToIndex(lower, upper, array.length);
         return UnmodifiableArrayList.wrap(array, lower, upper);
     }
 
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java
 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java
index a8387c81ce..a19c3337d7 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/DefaultTreeTable.java
@@ -468,8 +468,7 @@ public class DefaultTreeTable implements TreeTable, 
Cloneable, Serializable {
             this.parent = parent;
             columnIndices = parent.columnIndices;
             final TreeNodeList addTo = (TreeNodeList) parent.getChildren();
-            ArgumentChecks.ensureValidIndex(addTo.size() + 1, index);
-            addTo.addChild(index, this);
+            addTo.addChild(Objects.checkIndex(index, addTo.size() + 1), this);
         }
 
         /**
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java
 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java
index 8e49d11435..9d7d998699 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/IntegerList.java
@@ -18,6 +18,7 @@ package org.apache.sis.util.collection;
 
 import java.util.Arrays;
 import java.util.AbstractList;
+import java.util.Objects;
 import java.util.RandomAccess;
 import java.util.Spliterator;
 import java.util.PrimitiveIterator;
@@ -281,8 +282,7 @@ public class IntegerList extends AbstractList<Integer> 
implements RandomAccess,
      * @throws IndexOutOfBoundsException if the given index is out of bounds.
      */
     public int getInt(final int index) throws IndexOutOfBoundsException {
-        ArgumentChecks.ensureValidIndex(size, index);
-        return getUnchecked(index);
+        return getUnchecked(Objects.checkIndex(index, size));
     }
 
     /**
@@ -333,7 +333,7 @@ public class IntegerList extends AbstractList<Integer> 
implements RandomAccess,
      * @throws IllegalArgumentException if the given value is out of bounds.
      */
     public void setInt(int index, int value) throws IndexOutOfBoundsException {
-        ArgumentChecks.ensureValidIndex(size, index);
+        Objects.checkIndex(index, size);
         ArgumentChecks.ensureBetween("value", 0, mask, value);
         modCount++;
         setUnchecked(index, value);
@@ -399,7 +399,7 @@ public class IntegerList extends AbstractList<Integer> 
implements RandomAccess,
      */
     @Override
     protected void removeRange(int lower, int upper) {
-        ArgumentChecks.ensureValidIndexRange(size, lower, upper);
+        Objects.checkFromToIndex(lower, upper, size);
         int lo = lower * bitCount;
         int hi = upper * bitCount;
         final int offset = (lo & OFFSET_MASK);
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java
 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java
index bb91f27c0e..d911c4d8f2 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/collection/TreeNodeList.java
@@ -18,8 +18,8 @@ package org.apache.sis.util.collection;
 
 import java.util.Arrays;
 import java.util.AbstractList;
+import java.util.Objects;
 import java.io.Serializable;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.resources.Errors;
 
 
@@ -163,8 +163,7 @@ abstract class TreeNodeList extends 
AbstractList<TreeTable.Node>
      */
     @Override
     public TreeTable.Node get(final int index) {
-        ArgumentChecks.ensureValidIndex(size, index);
-        return children[index];
+        return children[Objects.checkIndex(index, size)];
     }
 
     /**
@@ -178,10 +177,8 @@ abstract class TreeNodeList extends 
AbstractList<TreeTable.Node>
      */
     @Override
     public TreeTable.Node set(final int index, final TreeTable.Node node) 
throws IllegalArgumentException {
-        ArgumentChecks.ensureValidIndex(size, index);
-        ArgumentChecks.ensureNonNull("node", node);
-        final TreeTable.Node old = children[index];
-        if (old != node) {
+        final TreeTable.Node old = children[Objects.checkIndex(index, size)];
+        if (old != Objects.requireNonNull(node)) {
             if (isParentOf(node)) {
                 ensureNotPresent(node);
                 setParentOf(old, NULL);
@@ -207,9 +204,8 @@ abstract class TreeNodeList extends 
AbstractList<TreeTable.Node>
      */
     @Override
     public void add(final int index, final TreeTable.Node node) throws 
IllegalArgumentException {
-        ArgumentChecks.ensureValidIndex(size + 1, index);
-        ArgumentChecks.ensureNonNull("node", node);
-        if (isParentOf(node)) {
+        Objects.checkIndex(index, size + 1);
+        if (isParentOf(Objects.requireNonNull(node))) {
             ensureNotPresent(node);
         } else {
             setParentOf(node, THIS);
@@ -260,7 +256,7 @@ abstract class TreeNodeList extends 
AbstractList<TreeTable.Node>
      */
     @Override
     protected void removeRange(final int lower, final int upper) throws 
IllegalArgumentException {
-        ArgumentChecks.ensureValidIndexRange(size, lower, upper);
+        Objects.checkFromToIndex(lower, upper, size);
         int i = upper;
         try {
             while (i != lower) {
@@ -286,8 +282,7 @@ abstract class TreeNodeList extends 
AbstractList<TreeTable.Node>
      */
     @Override
     public final TreeTable.Node remove(final int index) throws 
IllegalArgumentException {
-        ArgumentChecks.ensureValidIndex(size, index);
-        final TreeTable.Node old = children[index];
+        final TreeTable.Node old = children[Objects.checkIndex(index, size)];
         setParentOf(old, NULL);
         System.arraycopy(children, index+1, children, index, --size - index);
         children[size] = null;
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java
 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java
index 095d97c107..72cc810b8c 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/UnmodifiableArrayList.java
@@ -22,7 +22,6 @@ import java.util.Arrays;
 import java.util.Objects;
 import java.util.RandomAccess;
 import java.lang.reflect.Array;
-import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.ConditionallySafe;
 import org.apache.sis.util.collection.CheckedContainer;
 
@@ -303,7 +302,7 @@ public class UnmodifiableArrayList<E> extends 
AbstractList<E> implements RandomA
     public UnmodifiableArrayList<E> subList(final int lower, final int upper)
             throws IndexOutOfBoundsException
     {
-        ArgumentChecks.ensureValidIndexRange(size(), lower, upper);
+        Objects.checkFromToIndex(lower, upper, size());
         return new SubList<>(array, lower + lower(), upper - lower);
     }
 
@@ -357,8 +356,7 @@ public class UnmodifiableArrayList<E> extends 
AbstractList<E> implements RandomA
          */
         @Override
         public E get(final int index) {
-            ArgumentChecks.ensureValidIndex(size, index);
-            return super.get(index + lower);
+            return super.get(Objects.checkIndex(index, size) + lower);
         }
 
         /**
diff --git 
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java
 
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java
index f3c383200a..c146d3a81b 100644
--- 
a/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java
+++ 
b/incubator/src/org.apache.sis.portrayal.map/main/org/apache/sis/map/service/GraphicsPortrayer.java
@@ -21,6 +21,7 @@ import java.awt.Shape;
 import java.awt.image.BufferedImage;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 import java.util.ServiceLoader;
 import java.util.stream.Stream;
 import org.apache.sis.coverage.grid.GridCoverage2D;
@@ -29,7 +30,6 @@ import org.apache.sis.map.MapItem;
 import org.apache.sis.map.MapLayer;
 import org.apache.sis.map.MapLayers;
 import org.apache.sis.map.Presentation;
-import org.apache.sis.map.SEPortrayer;
 import org.apache.sis.style.Style;
 import org.apache.sis.util.ArgumentChecks;
 
@@ -92,7 +92,7 @@ public final class GraphicsPortrayer {
         ArgumentChecks.ensureNonNull("domain", domain);
         long[] low = domain.getExtent().getLow().getCoordinateValues();
         for (long l : low) {
-            ArgumentChecks.ensureValidIndex(1, (int) l);
+            Objects.checkIndex((int) l, 1);
         }
 
         this.domain = domain;

Reply via email to