You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2020/12/26 12:40:52 UTC

[commons-geometry] branch master updated: Minor Improvement

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

mattjuntunen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-geometry.git


The following commit(s) were added to refs/heads/master by this push:
     new 1410a0e  Minor Improvement
1410a0e is described below

commit 1410a0ee436e6dfef835e6b6d95d2746577f6e3c
Author: Arturo Bernal <ar...@gmail.com>
AuthorDate: Fri Dec 18 18:16:39 2020 +0100

    Minor Improvement
    
    * 'for' loop replaceable with enhanced 'for' loop
    * Unnecessary unboxing
    * Explicit type can be replaced with <>
    * Statement lambda can be replaced with expression lambda
    * Call to 'Arrays.asList()' with too few arguments
---
 .../AbstractConvexHyperplaneBoundedRegion.java     |  2 +-
 .../commons/geometry/core/GeometryTestUtils.java   | 26 -------
 .../core/internal/IteratorTransformTest.java       |  2 +-
 .../core/partitioning/BoundaryListTest.java        | 16 ++---
 .../geometry/core/partitioning/SplitTest.java      |  8 +--
 .../core/partitioning/test/TestLineSegment.java    | 16 ++---
 .../test/TestLineSegmentCollection.java            |  2 +-
 .../euclidean/threed/AbstractConvexPolygon3D.java  |  4 +-
 .../geometry/euclidean/threed/Bounds3D.java        |  2 +-
 .../threed/AffineTransformMatrix3DTest.java        | 82 +++++++++-------------
 .../euclidean/threed/BoundaryList3DTest.java       |  7 +-
 .../euclidean/threed/RegionBSPTree3DTest.java      |  8 +--
 .../threed/mesh/SimpleTriangleMeshTest.java        |  3 +-
 .../threed/rotation/QuaternionRotationTest.java    | 22 ++----
 .../twod/AffineTransformMatrix2DTest.java          | 68 +++++++-----------
 .../euclidean/twod/BoundaryList2DTest.java         |  7 +-
 .../io/threed/DefaultModelIOHandlerRegistry.java   |  6 +-
 .../threed/DefaultModelIOHandlerRegistryTest.java  |  2 +-
 .../io/threed/ModelIOHandlerRegistryTest.java      |  2 +-
 .../io/threed/obj/OBJModelIOHandlerTest.java       |  2 +-
 .../examples/io/threed/obj/OBJReaderTest.java      |  2 +-
 .../twod/ConvexHullGenerator2DAbstractTest.java    |  4 +-
 .../geometry/spherical/oned/RegionBSPTree1S.java   |  4 +-
 .../spherical/twod/BoundaryList2STest.java         |  7 +-
 .../geometry/spherical/twod/GreatArcPathTest.java  | 82 +++++++++-------------
 .../spherical/twod/RegionBSPTree2STest.java        |  4 +-
 26 files changed, 150 insertions(+), 240 deletions(-)

diff --git a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
index e449955..9cd9d89 100644
--- a/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
+++ b/commons-geometry-core/src/main/java/org/apache/commons/geometry/core/partitioning/AbstractConvexHyperplaneBoundedRegion.java
@@ -161,7 +161,7 @@ public abstract class AbstractConvexHyperplaneBoundedRegion<P extends Point<P>,
      */
     protected <R extends AbstractConvexHyperplaneBoundedRegion<P, S>> R transformInternal(
             final Transform<P> transform, final R thisInstance, final Class<S> boundaryType,
-            final Function<List<S>, R> factory) {
+            final Function<? super List<S>, R> factory) {
 
         if (isFull()) {
             return thisInstance;
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java
index 23774b9..5d8a802 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/GeometryTestUtils.java
@@ -16,10 +16,6 @@
  */
 package org.apache.commons.geometry.core;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
 import java.util.regex.Pattern;
 
 import org.junit.jupiter.api.Assertions;
@@ -102,26 +98,4 @@ public final class GeometryTestUtils {
 
         Assertions.assertTrue(obj.equals(obj), "Object should equal itself");
     }
-
-    /**
-     * Serializes and then recovers an object from a byte array. Returns the deserialized object.
-     *
-     * @param obj  object to serialize and recover
-     * @return  the recovered, deserialized object
-     */
-    public static Object serializeAndRecover(final Object obj) {
-        try {
-            // serialize the Object
-            final ByteArrayOutputStream bos = new ByteArrayOutputStream();
-            final ObjectOutputStream so = new ObjectOutputStream(bos);
-            so.writeObject(obj);
-
-            // deserialize the Object
-            final ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-            final ObjectInputStream si = new ObjectInputStream(bis);
-            return si.readObject();
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
 }
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/internal/IteratorTransformTest.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/internal/IteratorTransformTest.java
index cb8a019..64f1189 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/internal/IteratorTransformTest.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/internal/IteratorTransformTest.java
@@ -70,7 +70,7 @@ public class IteratorTransformTest {
         @Override
         protected void acceptInput(final Integer input) {
             // filter out odd integers
-            final int value = input.intValue();
+            final int value = input;
             if (value % 2 == 0) {
                 final char[] chars = (value + "").toCharArray();
 
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/BoundaryListTest.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/BoundaryListTest.java
index 62827a5..71cb040 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/BoundaryListTest.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/BoundaryListTest.java
@@ -54,18 +54,16 @@ public class BoundaryListTest {
         final BoundaryList<TestPoint2D, TestLineSegment> list = new BoundaryList<>(boundaries);
 
         // act/assert
-        Assertions.assertThrows(UnsupportedOperationException.class, () -> {
-            list.getBoundaries().add(new TestLineSegment(1, 1, 0, 2));
-        });
+        Assertions.assertThrows(UnsupportedOperationException.class, () -> list.getBoundaries().add(new TestLineSegment(1, 1, 0, 2)));
     }
 
     @Test
     public void testCount() {
         // act/assert
         Assertions.assertEquals(0, new BoundaryList<>(Collections.emptyList()).count());
-        Assertions.assertEquals(1, new BoundaryList<>(Arrays.asList(
-                    new TestLineSegment(0, 0, 1, 1)
-                )).count());
+        Assertions.assertEquals(1, new BoundaryList<>(Collections.singletonList(
+                new TestLineSegment(0, 0, 1, 1)
+        )).count());
         Assertions.assertEquals(2, new BoundaryList<>(Arrays.asList(
                 new TestLineSegment(0, 0, 1, 1),
                 new TestLineSegment(1, 1, 0, 2)
@@ -76,9 +74,9 @@ public class BoundaryListTest {
     public void testToString() {
         // arrange
         final BoundaryList<TestPoint2D, TestLineSegment> empty = new BoundaryList<>(Collections.emptyList());
-        final BoundaryList<TestPoint2D, TestLineSegment> single = new BoundaryList<>(Arrays.asList(
-                    new TestLineSegment(0, 0, 1, 1)
-                ));
+        final BoundaryList<TestPoint2D, TestLineSegment> single = new BoundaryList<>(Collections.singletonList(
+                new TestLineSegment(0, 0, 1, 1)
+        ));
 
         // act
         Assertions.assertEquals("BoundaryList[count= 0]", empty.toString());
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/SplitTest.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/SplitTest.java
index 1bbdcf6..809b4b7 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/SplitTest.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/SplitTest.java
@@ -42,10 +42,10 @@ public class SplitTest {
         final Object b = new Object();
 
         // act/assert
-        Assertions.assertEquals(SplitLocation.NEITHER, new Split<Object>(null, null).getLocation());
-        Assertions.assertEquals(SplitLocation.MINUS, new Split<Object>(a, null).getLocation());
-        Assertions.assertEquals(SplitLocation.PLUS, new Split<Object>(null, b).getLocation());
-        Assertions.assertEquals(SplitLocation.BOTH, new Split<Object>(a, b).getLocation());
+        Assertions.assertEquals(SplitLocation.NEITHER, new Split<>(null, null).getLocation());
+        Assertions.assertEquals(SplitLocation.MINUS, new Split<>(a, null).getLocation());
+        Assertions.assertEquals(SplitLocation.PLUS, new Split<>(null, b).getLocation());
+        Assertions.assertEquals(SplitLocation.BOTH, new Split<>(a, b).getLocation());
     }
 
     @Test
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegment.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegment.java
index 965bf39..2d992bf 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegment.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegment.java
@@ -249,11 +249,11 @@ public class TestLineSegment implements HyperplaneConvexSubset<TestPoint2D> {
 
             final int sign = PartitionTestUtils.PRECISION.sign(originOffset);
             if (sign < 0) {
-                return new Split<TestLineSegment>(this, null);
+                return new Split<>(this, null);
             } else if (sign > 0) {
-                return new Split<TestLineSegment>(null, this);
+                return new Split<>(null, this);
             }
-            return new Split<TestLineSegment>(null, null);
+            return new Split<>(null, null);
         } else {
             // the lines intersect
             final double intersectionAbscissa = line.toSubspaceValue(intersection);
@@ -274,7 +274,7 @@ public class TestLineSegment implements HyperplaneConvexSubset<TestPoint2D> {
             final TestLineSegment minus = (startCmp > 0) ? endSegment : startSegment;
             final TestLineSegment plus = (startCmp > 0) ? startSegment : endSegment;
 
-            return new Split<TestLineSegment>(minus, plus);
+            return new Split<>(minus, plus);
         }
     }
 
@@ -305,13 +305,13 @@ public class TestLineSegment implements HyperplaneConvexSubset<TestPoint2D> {
 
         if (startCmp == 0 && endCmp == 0) {
             // the entire line segment is directly on the splitter line
-            return new Split<TestLineSegment>(null, null);
+            return new Split<>(null, null);
         } else if (startCmp < 1 && endCmp < 1) {
             // the entire line segment is on the minus side
-            return new Split<TestLineSegment>(this, null);
+            return new Split<>(this, null);
         } else if (startCmp > -1 && endCmp > -1) {
             // the entire line segment is on the plus side
-            return new Split<TestLineSegment>(null, this);
+            return new Split<>(null, this);
         }
 
         // we need to split the line
@@ -324,6 +324,6 @@ public class TestLineSegment implements HyperplaneConvexSubset<TestPoint2D> {
         final TestLineSegment minus = (startCmp > 0) ? endSegment : startSegment;
         final TestLineSegment plus = (startCmp > 0) ? startSegment : endSegment;
 
-        return new Split<TestLineSegment>(minus, plus);
+        return new Split<>(minus, plus);
     }
 }
diff --git a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegmentCollection.java b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegmentCollection.java
index b1d7ba6..eb09c63 100644
--- a/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegmentCollection.java
+++ b/commons-geometry-core/src/test/java/org/apache/commons/geometry/core/partitioning/test/TestLineSegmentCollection.java
@@ -140,7 +140,7 @@ public class TestLineSegmentCollection implements HyperplaneSubset<TestPoint2D>
                 null :
                 new TestLineSegmentCollection(plusList);
 
-        return new Split<TestLineSegmentCollection>(minus, plus);
+        return new Split<>(minus, plus);
     }
 
     /** {@inheritDoc} */
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractConvexPolygon3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractConvexPolygon3D.java
index 28f2c95..c6d78ea 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractConvexPolygon3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/AbstractConvexPolygon3D.java
@@ -111,7 +111,7 @@ abstract class AbstractConvexPolygon3D extends AbstractPlaneSubset implements Co
         Vector3D curPt;
 
         Vector3D prevVec = startPt.vectorTo(prevPt);
-        Vector3D curVec = null;
+        Vector3D curVec;
 
         double triArea;
         Vector3D triCentroid;
@@ -231,7 +231,7 @@ abstract class AbstractConvexPolygon3D extends AbstractPlaneSubset implements Co
 
         Vector3D boundaryVec;
         double boundaryPointT;
-        Vector3D boundaryPoint = null;
+        Vector3D boundaryPoint;
         double boundaryPointDistSq;
 
         double closestBoundaryPointDistSq = Double.POSITIVE_INFINITY;
diff --git a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Bounds3D.java b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Bounds3D.java
index 1edc2b3..c0a8ddb 100644
--- a/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Bounds3D.java
+++ b/commons-geometry-euclidean/src/main/java/org/apache/commons/geometry/euclidean/threed/Bounds3D.java
@@ -233,7 +233,7 @@ public final class Bounds3D extends AbstractBounds<Vector3D, Bounds3D> {
          * @param pts points to add
          * @return this instance
          */
-        public Builder addAll(final Iterable<Vector3D> pts) {
+        public Builder addAll(final Iterable<? extends Vector3D> pts) {
             for (final Vector3D pt : pts) {
                 add(pt);
             }
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java
index 744c626..bd0fe41 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/AffineTransformMatrix3DTest.java
@@ -970,54 +970,40 @@ public class AffineTransformMatrix3DTest {
     @Test
     public void testInverse_nonInvertible() {
         // act/assert
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix3D.of(
-                    0, 0, 0, 0,
-                    0, 0, 0, 0,
-                    0, 0, 0, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is 0.0");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix3D.of(
-                    1, 0, 0, 0,
-                    0, 1, 0, 0,
-                    0, 0, Double.NaN, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix3D.of(
-                    1, 0, 0, 0,
-                    0, Double.NEGATIVE_INFINITY, 0, 0,
-                    0, 0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix3D.of(
-                    Double.POSITIVE_INFINITY, 0, 0, 0,
-                    0, 1, 0, 0,
-                    0, 0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix3D.of(
-                    1, 0, 0, Double.NaN,
-                    0, 1, 0, 0,
-                    0, 0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; invalid matrix element: NaN");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix3D.of(
-                    1, 0, 0, 0,
-                    0, 1, 0, Double.POSITIVE_INFINITY,
-                    0, 0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; invalid matrix element: Infinity");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix3D.of(
-                    1, 0, 0, 0,
-                    0, 1, 0, 0,
-                    0, 0, 1, Double.NEGATIVE_INFINITY).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; invalid matrix element: -Infinity");
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix3D.of(
+                0, 0, 0, 0,
+                0, 0, 0, 0,
+                0, 0, 0, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is 0.0");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix3D.of(
+                1, 0, 0, 0,
+                0, 1, 0, 0,
+                0, 0, Double.NaN, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix3D.of(
+                1, 0, 0, 0,
+                0, Double.NEGATIVE_INFINITY, 0, 0,
+                0, 0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix3D.of(
+                Double.POSITIVE_INFINITY, 0, 0, 0,
+                0, 1, 0, 0,
+                0, 0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix3D.of(
+                1, 0, 0, Double.NaN,
+                0, 1, 0, 0,
+                0, 0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; invalid matrix element: NaN");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix3D.of(
+                1, 0, 0, 0,
+                0, 1, 0, Double.POSITIVE_INFINITY,
+                0, 0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; invalid matrix element: Infinity");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix3D.of(
+                1, 0, 0, 0,
+                0, 1, 0, 0,
+                0, 0, 1, Double.NEGATIVE_INFINITY).inverse(), IllegalStateException.class, "Matrix is not invertible; invalid matrix element: -Infinity");
     }
 
     @Test
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/BoundaryList3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/BoundaryList3DTest.java
index 723dae6..7ff8fe8 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/BoundaryList3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/BoundaryList3DTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.threed;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -35,9 +34,9 @@ public class BoundaryList3DTest {
     @Test
     public void testCtor() {
         // arrange
-        final List<PlaneConvexSubset> boundaries = Arrays.asList(
-                    Planes.fromNormal(Vector3D.Unit.PLUS_X, TEST_PRECISION).span()
-                );
+        final List<PlaneConvexSubset> boundaries = Collections.singletonList(
+                Planes.fromNormal(Vector3D.Unit.PLUS_X, TEST_PRECISION).span()
+        );
 
         // act
         final BoundaryList3D list = new BoundaryList3D(boundaries);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3DTest.java
index 1c9ccb6..3e3e20c 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/RegionBSPTree3DTest.java
@@ -1854,11 +1854,9 @@ public class RegionBSPTree3DTest {
 
         final List<Vector3D> vertexList = new ArrayList<>();
 
-        for (int i = 0; i < facets.length; ++i) {
-            final int[] indices = facets[i];
-
-            for (int j = 0; j < indices.length; ++j) {
-                vertexList.add(vertices[indices[j]]);
+        for (final int[] indices : facets) {
+            for (final int index : indices) {
+                vertexList.add(vertices[index]);
             }
 
             // insert into an embedded tree and convert to convex polygons so that we can support
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/mesh/SimpleTriangleMeshTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/mesh/SimpleTriangleMeshTest.java
index 4c3c18e..0fffebb 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/mesh/SimpleTriangleMeshTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/mesh/SimpleTriangleMeshTest.java
@@ -261,8 +261,7 @@ public class SimpleTriangleMeshTest {
             Vector3D.of(0, 1, 0)
         );
 
-        final List<int[]> faceIndices = Arrays.asList(
-            new int[] {0, 1, 2}
+        final List<int[]> faceIndices = Collections.singletonList(new int[]{0, 1, 2}
         );
 
         final SimpleTriangleMesh mesh = SimpleTriangleMesh.from(vertices, faceIndices, TEST_PRECISION);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java
index 40c9f17..6fe635f 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/threed/rotation/QuaternionRotationTest.java
@@ -585,9 +585,9 @@ public class QuaternionRotationTest {
 
         // act/assert
         // test each rotation against all of the others (including itself)
-        for (int i = 0; i < rotations.length; ++i) {
-            for (int j = 0; j < rotations.length; ++j) {
-                checkSlerpCombination(rotations[i], rotations[j]);
+        for (final QuaternionRotation quaternionRotation : rotations) {
+            for (final QuaternionRotation rotation : rotations) {
+                checkSlerpCombination(quaternionRotation, rotation);
             }
         }
     }
@@ -822,9 +822,7 @@ public class QuaternionRotationTest {
         final AxisReferenceFrame frame = AxisReferenceFrame.RELATIVE;
 
         for (final AxisSequence axes : getAxes(AxisSequenceType.EULER)) {
-            for (int i = 0; i < eulerSingularities.length; ++i) {
-
-                final double singularityAngle = eulerSingularities[i];
+            for (final double singularityAngle : eulerSingularities) {
 
                 final AxisAngleSequence inputSeq = new AxisAngleSequence(frame, axes, angle1, singularityAngle, angle2);
                 final QuaternionRotation inputQuat = QuaternionRotation.fromAxisAngleSequence(inputSeq);
@@ -859,9 +857,7 @@ public class QuaternionRotationTest {
         final AxisReferenceFrame frame = AxisReferenceFrame.ABSOLUTE;
 
         for (final AxisSequence axes : getAxes(AxisSequenceType.EULER)) {
-            for (int i = 0; i < eulerSingularities.length; ++i) {
-
-                final double singularityAngle = eulerSingularities[i];
+            for (final double singularityAngle : eulerSingularities) {
 
                 final AxisAngleSequence inputSeq = new AxisAngleSequence(frame, axes, angle1, singularityAngle, angle2);
                 final QuaternionRotation inputQuat = QuaternionRotation.fromAxisAngleSequence(inputSeq);
@@ -896,9 +892,7 @@ public class QuaternionRotationTest {
         final AxisReferenceFrame frame = AxisReferenceFrame.RELATIVE;
 
         for (final AxisSequence axes : getAxes(AxisSequenceType.TAIT_BRYAN)) {
-            for (int i = 0; i < taitBryanSingularities.length; ++i) {
-
-                final double singularityAngle = taitBryanSingularities[i];
+            for (final double singularityAngle : taitBryanSingularities) {
 
                 final AxisAngleSequence inputSeq = new AxisAngleSequence(frame, axes, angle1, singularityAngle, angle2);
                 final QuaternionRotation inputQuat = QuaternionRotation.fromAxisAngleSequence(inputSeq);
@@ -933,9 +927,7 @@ public class QuaternionRotationTest {
         final AxisReferenceFrame frame = AxisReferenceFrame.ABSOLUTE;
 
         for (final AxisSequence axes : getAxes(AxisSequenceType.TAIT_BRYAN)) {
-            for (int i = 0; i < taitBryanSingularities.length; ++i) {
-
-                final double singularityAngle = taitBryanSingularities[i];
+            for (final double singularityAngle : taitBryanSingularities) {
 
                 final AxisAngleSequence inputSeq = new AxisAngleSequence(frame, axes, angle1, singularityAngle, angle2);
                 final QuaternionRotation inputQuat = QuaternionRotation.fromAxisAngleSequence(inputSeq);
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java
index 85f3eef..1a14d3d 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/AffineTransformMatrix2DTest.java
@@ -998,47 +998,33 @@ public class AffineTransformMatrix2DTest {
     @Test
     public void testInverse_nonInvertible() {
         // act/assert
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix2D.of(
-                    0, 0, 0,
-                    0, 0, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is 0.0");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix2D.of(
-                    1, 0, 0,
-                    0, Double.NaN, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix2D.of(
-                    1, 0, 0,
-                    0, Double.NEGATIVE_INFINITY, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is -Infinity");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix2D.of(
-                    Double.POSITIVE_INFINITY, 0, 0,
-                    0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; matrix determinant is Infinity");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix2D.of(
-                    1, 0, Double.NaN,
-                    0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; invalid matrix element: NaN");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix2D.of(
-                    1, 0, Double.POSITIVE_INFINITY,
-                    0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; invalid matrix element: Infinity");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            AffineTransformMatrix2D.of(
-                    1, 0, Double.NEGATIVE_INFINITY,
-                    0, 1, 0).inverse();
-        }, IllegalStateException.class, "Matrix is not invertible; invalid matrix element: -Infinity");
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix2D.of(
+                0, 0, 0,
+                0, 0, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is 0.0");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix2D.of(
+                1, 0, 0,
+                0, Double.NaN, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is NaN");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix2D.of(
+                1, 0, 0,
+                0, Double.NEGATIVE_INFINITY, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is -Infinity");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix2D.of(
+                Double.POSITIVE_INFINITY, 0, 0,
+                0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; matrix determinant is Infinity");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix2D.of(
+                1, 0, Double.NaN,
+                0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; invalid matrix element: NaN");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix2D.of(
+                1, 0, Double.POSITIVE_INFINITY,
+                0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; invalid matrix element: Infinity");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> AffineTransformMatrix2D.of(
+                1, 0, Double.NEGATIVE_INFINITY,
+                0, 1, 0).inverse(), IllegalStateException.class, "Matrix is not invertible; invalid matrix element: -Infinity");
     }
 
     @Test
diff --git a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/BoundaryList2DTest.java b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/BoundaryList2DTest.java
index 816af97..2f5ef44 100644
--- a/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/BoundaryList2DTest.java
+++ b/commons-geometry-euclidean/src/test/java/org/apache/commons/geometry/euclidean/twod/BoundaryList2DTest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.euclidean.twod;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -35,9 +34,9 @@ public class BoundaryList2DTest {
     @Test
     public void testCtor() {
         // arrange
-        final List<LineConvexSubset> boundaries = Arrays.asList(
-                    Lines.segmentFromPoints(Vector2D.ZERO, Vector2D.of(1, 1), TEST_PRECISION)
-                );
+        final List<LineConvexSubset> boundaries = Collections.singletonList(
+                Lines.segmentFromPoints(Vector2D.ZERO, Vector2D.of(1, 1), TEST_PRECISION)
+        );
 
         // act
         final BoundaryList2D list = new BoundaryList2D(boundaries);
diff --git a/commons-geometry-examples/examples-io/src/main/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistry.java b/commons-geometry-examples/examples-io/src/main/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistry.java
index 0410b3d..e019c07 100644
--- a/commons-geometry-examples/examples-io/src/main/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistry.java
+++ b/commons-geometry-examples/examples-io/src/main/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistry.java
@@ -16,7 +16,7 @@
  */
 package org.apache.commons.geometry.examples.io.threed;
 
-import java.util.Arrays;
+import java.util.Collections;
 
 import org.apache.commons.geometry.examples.io.threed.obj.OBJModelIOHandler;
 
@@ -28,8 +28,6 @@ public class DefaultModelIOHandlerRegistry extends ModelIOHandlerRegistry {
     /** Construct a new instance and register known handlers.
      */
     public DefaultModelIOHandlerRegistry() {
-        setHandlers(Arrays.asList(
-                new OBJModelIOHandler()
-            ));
+        setHandlers(Collections.singletonList(new OBJModelIOHandler()));
     }
 }
diff --git a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistryTest.java b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistryTest.java
index 3073132..deeba97 100644
--- a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistryTest.java
+++ b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/DefaultModelIOHandlerRegistryTest.java
@@ -38,7 +38,7 @@ public class DefaultModelIOHandlerRegistryTest {
     private static final DoublePrecisionContext TEST_PRECISION =
             new EpsilonDoublePrecisionContext(TEST_EPS);
 
-    private DefaultModelIOHandlerRegistry registry = new DefaultModelIOHandlerRegistry();
+    private final DefaultModelIOHandlerRegistry registry = new DefaultModelIOHandlerRegistry();
 
     @Test
     public void testDefaultHandlers() {
diff --git a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/ModelIOHandlerRegistryTest.java b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/ModelIOHandlerRegistryTest.java
index dcb8fd1..55320fe 100644
--- a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/ModelIOHandlerRegistryTest.java
+++ b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/ModelIOHandlerRegistryTest.java
@@ -42,7 +42,7 @@ public class ModelIOHandlerRegistryTest {
 
     private static final BoundarySource3D SRC_B = BoundarySource3D.from();
 
-    private ModelIOHandlerRegistry registry = new ModelIOHandlerRegistry();
+    private final ModelIOHandlerRegistry registry = new ModelIOHandlerRegistry();
 
     @Test
     public void testGetSetHandlers() {
diff --git a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJModelIOHandlerTest.java b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJModelIOHandlerTest.java
index 845307b..dc7bcd8 100644
--- a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJModelIOHandlerTest.java
+++ b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJModelIOHandlerTest.java
@@ -53,7 +53,7 @@ public class OBJModelIOHandlerTest {
     @TempDir
     protected File anotherTempDir;
 
-    private OBJModelIOHandler handler = new OBJModelIOHandler();
+    private final OBJModelIOHandler handler = new OBJModelIOHandler();
 
     @Test
     public void testHandlesType() {
diff --git a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJReaderTest.java b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJReaderTest.java
index a568ffc..d39723d 100644
--- a/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJReaderTest.java
+++ b/commons-geometry-examples/examples-io/src/test/java/org/apache/commons/geometry/examples/io/threed/obj/OBJReaderTest.java
@@ -45,7 +45,7 @@ public class OBJReaderTest {
 
     private static final int CUBE_MINUS_SPHERE_FACES = 728;
 
-    private OBJReader reader = new OBJReader();
+    private final OBJReader reader = new OBJReader();
 
     @Test
     public void testReadMesh_emptyInput() throws Exception {
diff --git a/commons-geometry-hull/src/test/java/org/apache/commons/geometry/hull/euclidean/twod/ConvexHullGenerator2DAbstractTest.java b/commons-geometry-hull/src/test/java/org/apache/commons/geometry/hull/euclidean/twod/ConvexHullGenerator2DAbstractTest.java
index 20dda2f..107045e 100644
--- a/commons-geometry-hull/src/test/java/org/apache/commons/geometry/hull/euclidean/twod/ConvexHullGenerator2DAbstractTest.java
+++ b/commons-geometry-hull/src/test/java/org/apache/commons/geometry/hull/euclidean/twod/ConvexHullGenerator2DAbstractTest.java
@@ -423,8 +423,8 @@ public abstract class ConvexHullGenerator2DAbstractTest {
         }
         Assertions.assertEquals(perimeter, hullRegion.getBoundarySize(), 1.0e-12);
 
-        for (int i = 0; i < referenceHull.length; ++i) {
-            Assertions.assertEquals(RegionLocation.BOUNDARY, hullRegion.classify(referenceHull[i]));
+        for (final Vector2D vector2D : referenceHull) {
+            Assertions.assertEquals(RegionLocation.BOUNDARY, hullRegion.classify(vector2D));
         }
 
     }
diff --git a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java
index f1313b5..27d417a 100644
--- a/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java
+++ b/commons-geometry-spherical/src/main/java/org/apache/commons/geometry/spherical/oned/RegionBSPTree1S.java
@@ -223,7 +223,7 @@ public class RegionBSPTree1S extends AbstractRegionBSPTree<Point1S, RegionBSPTre
 
         BoundaryPair start = null;
         BoundaryPair end = null;
-        BoundaryPair current = null;
+        BoundaryPair current;
 
         for (int i = 0; i < boundaryPairCount; ++i) {
             current = insideBoundaryPairs.get((i + startOffset) % boundaryPairCount);
@@ -262,7 +262,7 @@ public class RegionBSPTree1S extends AbstractRegionBSPTree<Point1S, RegionBSPTre
         final int size = boundaryPairs.size();
 
         if (size > 0) {
-            BoundaryPair current = null;
+            BoundaryPair current;
             BoundaryPair previous = boundaryPairs.get(size - 1);
 
             for (int i = 0; i < size; ++i, previous = current) {
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/BoundaryList2STest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/BoundaryList2STest.java
index c36c850..0c8ae6b 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/BoundaryList2STest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/BoundaryList2STest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.commons.geometry.spherical.twod;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -35,9 +34,9 @@ public class BoundaryList2STest {
     @Test
     public void testCtor() {
         // arrange
-        final List<GreatArc> boundaries = Arrays.asList(
-                    GreatCircles.arcFromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION)
-                );
+        final List<GreatArc> boundaries = Collections.singletonList(
+                GreatCircles.arcFromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION)
+        );
 
         // act
         final BoundaryList2S list = new BoundaryList2S(boundaries);
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatArcPathTest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatArcPathTest.java
index ffc64d9..db82ae2 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatArcPathTest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/GreatArcPathTest.java
@@ -518,77 +518,59 @@ public class GreatArcPathTest {
     @Test
     public void testBuilder_points_noPrecisionGiven() {
         // act/assert
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(null)
-                .append(Point2S.PLUS_I)
-                .append(Point2S.PLUS_J);
-        }, IllegalStateException.class, "Unable to create arc: no point precision specified");
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(null)
-                .prepend(Point2S.PLUS_I)
-                .prepend(Point2S.PLUS_J);
-        }, IllegalStateException.class, "Unable to create arc: no point precision specified");
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(null)
+            .append(Point2S.PLUS_I)
+            .append(Point2S.PLUS_J), IllegalStateException.class, "Unable to create arc: no point precision specified");
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(null)
+            .prepend(Point2S.PLUS_I)
+            .prepend(Point2S.PLUS_J), IllegalStateException.class, "Unable to create arc: no point precision specified");
     }
 
     @Test
     public void testBuilder_arcsNotConnected() {
         // act/assert
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(TEST_PRECISION)
-                .append(Point2S.PLUS_I)
-                .append(Point2S.PLUS_J)
-                .append(GreatCircles.arcFromPoints(Point2S.PLUS_K, Point2S.MINUS_J, TEST_PRECISION));
-        }, IllegalStateException.class, Pattern.compile("^Path arcs are not connected.*"));
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(TEST_PRECISION)
-                .prepend(Point2S.PLUS_I)
-                .prepend(Point2S.PLUS_J)
-                .prepend(GreatCircles.arcFromPoints(Point2S.PLUS_K, Point2S.MINUS_J, TEST_PRECISION));
-        }, IllegalStateException.class, Pattern.compile("^Path arcs are not connected.*"));
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(TEST_PRECISION)
+            .append(Point2S.PLUS_I)
+            .append(Point2S.PLUS_J)
+            .append(GreatCircles.arcFromPoints(Point2S.PLUS_K, Point2S.MINUS_J, TEST_PRECISION)), IllegalStateException.class, Pattern.compile("^Path arcs are not connected.*"));
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(TEST_PRECISION)
+            .prepend(Point2S.PLUS_I)
+            .prepend(Point2S.PLUS_J)
+            .prepend(GreatCircles.arcFromPoints(Point2S.PLUS_K, Point2S.MINUS_J, TEST_PRECISION)), IllegalStateException.class, Pattern.compile("^Path arcs are not connected.*"));
     }
 
     @Test
     public void testBuilder_addToFullArc() {
         // act/assert
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(TEST_PRECISION)
-                .append(GreatCircles.fromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION).span())
-                .append(Point2S.PLUS_J);
-        }, IllegalStateException.class, Pattern.compile("^Cannot add point .* after full arc.*"));
-
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(TEST_PRECISION)
-                .prepend(GreatCircles.fromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION).span())
-                .prepend(Point2S.PLUS_J);
-        }, IllegalStateException.class, Pattern.compile("^Cannot add point .* before full arc.*"));
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(TEST_PRECISION)
+            .append(GreatCircles.fromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION).span())
+            .append(Point2S.PLUS_J), IllegalStateException.class, Pattern.compile("^Cannot add point .* after full arc.*"));
+
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(TEST_PRECISION)
+            .prepend(GreatCircles.fromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION).span())
+            .prepend(Point2S.PLUS_J), IllegalStateException.class, Pattern.compile("^Cannot add point .* before full arc.*"));
     }
 
     @Test
     public void testBuilder_onlySinglePointGiven() {
         // act/assert
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(TEST_PRECISION)
-                .append(Point2S.PLUS_J)
-                .build();
-        }, IllegalStateException.class, Pattern.compile("^Unable to create path; only a single point provided.*"));
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(TEST_PRECISION)
+            .append(Point2S.PLUS_J)
+            .build(), IllegalStateException.class, Pattern.compile("^Unable to create path; only a single point provided.*"));
 
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(TEST_PRECISION)
-                .prepend(Point2S.PLUS_J)
-                .build();
-        }, IllegalStateException.class,  Pattern.compile("^Unable to create path; only a single point provided.*"));
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(TEST_PRECISION)
+            .prepend(Point2S.PLUS_J)
+            .build(), IllegalStateException.class,  Pattern.compile("^Unable to create path; only a single point provided.*"));
     }
 
     @Test
     public void testBuilder_cannotClose() {
         // act/assert
-        GeometryTestUtils.assertThrowsWithMessage(() -> {
-            GreatArcPath.builder(TEST_PRECISION)
-                .append(GreatCircles.fromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION).span())
-                .close();
-        }, IllegalStateException.class, "Unable to close path: path is full");
+        GeometryTestUtils.assertThrowsWithMessage(() -> GreatArcPath.builder(TEST_PRECISION)
+            .append(GreatCircles.fromPoints(Point2S.PLUS_I, Point2S.PLUS_J, TEST_PRECISION).span())
+            .close(), IllegalStateException.class, "Unable to close path: path is full");
     }
 
     @Test
diff --git a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2STest.java b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2STest.java
index 16259ad..2bf4db8 100644
--- a/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2STest.java
+++ b/commons-geometry-spherical/src/test/java/org/apache/commons/geometry/spherical/twod/RegionBSPTree2STest.java
@@ -1037,8 +1037,8 @@ public class RegionBSPTree2STest {
     private static RegionBSPTree2S latLongToTree(final DoublePrecisionContext precision, final double[][] points) {
         final GreatArcPath.Builder pathBuilder = GreatArcPath.builder(precision);
 
-        for (int i = 0; i < points.length; ++i) {
-            pathBuilder.append(latLongToPoint(points[i][0], points[i][1]));
+        for (final double[] point : points) {
+            pathBuilder.append(latLongToPoint(point[0], point[1]));
         }
 
         return pathBuilder.close().toTree();