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

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

commit 8f2840270923b5f8dd0bfa2f4fa20a80c54be954
Author: Martin Desruisseaux <[email protected]>
AuthorDate: Thu Oct 15 18:02:31 2026 +0200

    Documentation: uniformize the reminder about the workaround while waiting 
for JEP 513.
---
 .../main/org/apache/sis/console/IdentifierCommand.java |  5 ++---
 .../main/org/apache/sis/coverage/Category.java         |  3 +--
 .../org/apache/sis/coverage/grid/GridCoverage2D.java   |  2 +-
 .../sis/coverage/grid/ValuesAtPointIterator.java       | 11 +++++++----
 .../main/org/apache/sis/image/OverviewImage.java       | 13 ++++++++++---
 .../main/org/apache/sis/image/SourceAlignedImage.java  |  8 ++++----
 .../iso/extent/NotSpatioTemporalException.java         |  5 ++---
 .../referencing/gazetteer/GeohashReferenceSystem.java  |  7 +++----
 .../gazetteer/MilitaryGridReferenceSystem.java         | 18 ++++++++----------
 .../main/org/apache/sis/geometry/Envelope2D.java       |  3 +--
 .../apache/sis/parameter/MapProjectionDescriptor.java  |  5 ++---
 .../sis/referencing/crs/DefaultProjectedCRS.java       |  5 ++---
 .../apache/sis/referencing/cs/DefaultCompoundCS.java   |  5 ++---
 .../referencing/operation/DefaultOperationMethod.java  |  5 ++---
 .../operation/DefaultPassThroughOperation.java         |  5 +++--
 .../operation/projection/AlbersEqualArea.java          | 13 +++++--------
 .../operation/projection/AzimuthalEquidistant.java     |  5 ++---
 .../operation/projection/CassiniSoldner.java           |  5 ++---
 .../operation/projection/CylindricalEqualArea.java     | 13 +++++--------
 .../operation/projection/EquidistantCylindrical.java   | 13 +++++--------
 .../projection/LambertAzimuthalEqualArea.java          | 13 +++++--------
 .../operation/projection/LambertConicConformal.java    | 13 +++++--------
 .../sis/referencing/operation/projection/Mercator.java | 13 +++++--------
 .../projection/ModifiedAzimuthalEquidistant.java       | 12 +++++-------
 .../referencing/operation/projection/Mollweide.java    |  7 +++----
 .../operation/projection/ObliqueMercator.java          | 12 +++++-------
 .../operation/projection/ObliqueStereographic.java     | 12 +++++-------
 .../referencing/operation/projection/Orthographic.java | 12 +++++-------
 .../operation/projection/PolarStereographic.java       | 12 +++++-------
 .../referencing/operation/projection/Polyconic.java    | 12 +++++-------
 .../sis/referencing/operation/projection/Robinson.java |  7 +++----
 .../operation/projection/SatelliteTracking.java        | 12 +++++-------
 .../referencing/operation/projection/Sinusoidal.java   | 12 +++++-------
 .../operation/projection/TransverseMercator.java       |  7 +++----
 .../sis/referencing/operation/provider/Affine.java     |  5 ++---
 .../sis/referencing/operation/projection/NoOp.java     | 15 ++++++---------
 .../operation/transform/ProjectiveTransformTest.java   |  5 ++++-
 .../sis/storage/isobmff/base/IdentifiedMediaData.java  |  5 ++---
 .../sis/storage/geoheif/SelfConsistencyTest.java       |  5 +++--
 .../sis/storage/geotiff/SelfConsistencyTest.java       |  5 +++--
 .../apache/sis/storage/netcdf/SelfConsistencyTest.java |  7 +++++--
 .../org/apache/sis/storage/DataStoreException.java     |  4 ++--
 .../sis/storage/UnsupportedStorageException.java       |  5 ++---
 .../apache/sis/storage/esri/BILConsistencyTest.java    | 10 ++++------
 .../apache/sis/storage/esri/BIPConsistencyTest.java    | 10 ++++------
 .../apache/sis/storage/esri/BSQConsistencyTest.java    | 10 ++++------
 .../apache/sis/storage/image/SelfConsistencyTest.java  | 10 ++++------
 .../sis/storage/test/CoverageReadConsistency.java      |  6 ++----
 .../util/internal/shared/LocalizedParseException.java  | 16 ++++++++--------
 .../test/org/apache/sis/test/Printer.java              |  5 ++---
 .../org/apache/sis/storage/geopackage/GpkgStore.java   |  5 ++---
 .../org/apache/sis/storage/geopackage/Initializer.java |  5 ++---
 52 files changed, 194 insertions(+), 244 deletions(-)

diff --git 
a/endorsed/src/org.apache.sis.console/main/org/apache/sis/console/IdentifierCommand.java
 
b/endorsed/src/org.apache.sis.console/main/org/apache/sis/console/IdentifierCommand.java
index b4c69abf1e..7c52f8eac1 100644
--- 
a/endorsed/src/org.apache.sis.console/main/org/apache/sis/console/IdentifierCommand.java
+++ 
b/endorsed/src/org.apache.sis.console/main/org/apache/sis/console/IdentifierCommand.java
@@ -90,10 +90,9 @@ final class IdentifierCommand extends FormattedOutputCommand 
{
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static EnumSet<Option> options() {
         final EnumSet<Option> options = MetadataCommand.options();
         options.remove(Option.TIMEZONE);
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 1757c17de8..e3e9bd74c9 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
@@ -311,8 +311,7 @@ public class Category implements LenientComparable, 
Serializable {
          * minimum and maximum. For linear and logarithmic functions, minimum 
and maximum are always at
          * the bounding input values, so we are using a very simple algorithm 
for now.
          *
-         * Note: we could move this code in ConvertedRange constructor if RFE 
#4093999
-         * ("Relax constraint on placement of this()/super() call in 
constructors") was fixed.
+         * Note: we can move this code in ConvertedRange constructor after 
upgrade to JDK25.
          */
         final NumberRange<?> r = original.range;
         boolean minIncluded = r.isMinIncluded();
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
index 2b16babc7a..1c4ac07f85 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/GridCoverage2D.java
@@ -237,7 +237,7 @@ public class GridCoverage2D extends GridCoverage {
     public GridCoverage2D(GridGeometry domain, final List<? extends 
SampleDimension> range, RenderedImage data) {
         /*
          * The complex nesting of method calls below is a workaround
-         * while waiting for JEP 447: Statements before super(…).
+         * while waiting for JEP 513: Flexible Constuctor Bodies.
          */
         super(domain = addExtentIfAbsent(domain, data = 
unwrapIfSameSize(data)),
                 defaultIfAbsent(range, data, 
ImageUtilities.getNumBands(data)));
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ValuesAtPointIterator.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ValuesAtPointIterator.java
index 17ebe40537..ad04d73a05 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ValuesAtPointIterator.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/coverage/grid/ValuesAtPointIterator.java
@@ -23,6 +23,7 @@ import java.util.function.Consumer;
 import java.util.function.IntFunction;
 import java.awt.image.Raster;
 import java.awt.image.RenderedImage;
+import org.apache.sis.util.Workaround;
 import org.apache.sis.util.internal.shared.Strings;
 import static org.apache.sis.coverage.grid.GridCoverage.BIDIMENSIONAL;
 
@@ -382,8 +383,9 @@ abstract class ValuesAtPointIterator implements 
Spliterator<double[]> {
         }
 
         /**
-         * Workaround for RFE #4093999 ("Relax constraint on placement of 
this()/super() call in constructors").
+         * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
          */
+        @Workaround(library="JDK", version="11", fixed="25")
         private Slices(final GridCoverage coverage,
                        final long[]       nearestXY,
                        final int          limitOfXY,
@@ -403,7 +405,7 @@ abstract class ValuesAtPointIterator implements 
Spliterator<double[]> {
          * of applying the inverse of the "grid to CRS" transform on user 
supplied "real world" coordinates,
          * then resolving wraparounds. This constructor rounds these grid 
coordinates to nearest integers.
          *
-         * @todo Retrofit in above constructor after RFE #4093999.
+         * @todo Retrofit in above constructor after upgrade to JDK25.
          *
          * @param coverage          the coverage which will be evaluated.
          * @param gridCoords        the grid coordinates as floating-point 
numbers.
@@ -582,8 +584,9 @@ changeOfSlice:  while (numPoints != 0) {
         }
 
         /**
-         * Workaround for RFE #4093999 ("Relax constraint on placement of 
this()/super() call in constructors").
+         * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
          */
+        @Workaround(library="JDK", version="11", fixed="25")
         private Image(final RenderedImage image,
                       final long[] nearestXY,
                       final int    limitOfXY,
@@ -603,7 +606,7 @@ changeOfSlice:  while (numPoints != 0) {
         /**
          * Creates a new iterator for the specified image.
          *
-         * @todo Retrofit in above constructor after RFE #4093999.
+         * @todo Retrofit in above constructor after upgrade to JDK25.
          *
          * @param parent     the parent iterator from which to inherit the 
grid coordinates.
          * @param limitOfXY  index after the last coordinate of the last point 
to evaluate.
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/OverviewImage.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/OverviewImage.java
index 1c381c7e96..83d2063690 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/OverviewImage.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/OverviewImage.java
@@ -24,6 +24,7 @@ import java.awt.image.RenderedImage;
 import java.awt.image.ImagingOpException;
 import org.apache.sis.feature.internal.Resources;
 import org.apache.sis.util.Disposable;
+import org.apache.sis.util.Workaround;
 import org.apache.sis.util.internal.shared.Numerics;
 import org.apache.sis.image.internal.shared.ImageUtilities;
 
@@ -69,7 +70,10 @@ final class OverviewImage extends ComputedImage {
         this(targetBounds(ImageUtilities.getBounds(source)), source);
     }
 
-    /** Workaround for RFE #4093999 ("Relax constraint on placement of 
this()/super() call in constructors"). */
+    /**
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
+     */
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Rectangle targetBounds(final Rectangle bounds) {
         bounds.x     >>= 1;     // Round toward negative infinity.
         bounds.y     >>= 1;
@@ -78,10 +82,13 @@ final class OverviewImage extends ComputedImage {
         return bounds;
     }
 
-    /** Workaround for RFE #4093999 ("Relax constraint on placement of 
this()/super() call in constructors"). */
+    /**
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
+     */
+    @Workaround(library="JDK", version="11", fixed="25")
     private OverviewImage(final Rectangle bounds, final RenderedImage source) {
         super(ImageLayout.DEFAULT.createCompatibleSampleModel(source, bounds), 
source);
-        offsetX = (byte) (source.getMinX() & 1);    // TODO: move before 
`targetBounds(…)` after RFE #4093999.
+        offsetX = (byte) (source.getMinX() & 1);    // TODO: move before 
`targetBounds(…)` on JDK25.
         offsetY = (byte) (source.getMinY() & 1);
         minX    = bounds.x;
         minY    = bounds.y;
diff --git 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/SourceAlignedImage.java
 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/SourceAlignedImage.java
index 21265e35e1..7d215a7886 100644
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/SourceAlignedImage.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/image/SourceAlignedImage.java
@@ -79,9 +79,9 @@ abstract class SourceAlignedImage extends ComputedImage {
 
     /**
      * Gets the sample model, making sure it has the right size.
-     * This is a workaround while waiting for JEP 447: Statements before 
super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="1.8")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static SampleModel getSampleModel(final RenderedImage source) {
         final SampleModel sm = source.getSampleModel();
         final int width  = source.getTileWidth();
@@ -123,9 +123,9 @@ abstract class SourceAlignedImage extends ComputedImage {
 
     /**
      * Creates the sample model.
-     * This is a workaround while waiting for JEP 447: Statements before 
super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="1.8")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static SampleModel createSampleModel(final ColorModel colorModel, 
final SampleModel original) {
         final SampleModel sm = 
colorModel.createCompatibleSampleModel(original.getWidth(), 
original.getHeight());
         return original.equals(sm) ? original : sm;
diff --git 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/NotSpatioTemporalException.java
 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/NotSpatioTemporalException.java
index 229117c07e..5de00fad26 100644
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/NotSpatioTemporalException.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/extent/NotSpatioTemporalException.java
@@ -75,10 +75,9 @@ public class NotSpatioTemporalException extends 
TransformException {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static String message(final int type, final 
CoordinateReferenceSystem crs) {
         return (crs != null) ? 
Resources.format(Resources.Keys.MissingDimension_2, type, crs.getName())
                              : Errors.format(Errors.Keys.UnspecifiedCRS);
diff --git 
a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java
 
b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java
index 5d8f4569c9..85437b2411 100644
--- 
a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java
+++ 
b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/GeohashReferenceSystem.java
@@ -194,12 +194,11 @@ public class GeohashReferenceSystem extends 
ReferencingByIdentifiers {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static LocationType[] types() {
-        final ModifiableLocationType gzd = new 
ModifiableLocationType(IDENTIFIER);
+        final var gzd = new ModifiableLocationType(IDENTIFIER);
         
gzd.addIdentification(Vocabulary.formatInternational(Vocabulary.Keys.Code));
         return new LocationType[] {gzd};
     }
diff --git 
a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
 
b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
index b830018494..3acbfb6109 100644
--- 
a/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
+++ 
b/endorsed/src/org.apache.sis.referencing.gazetteer/main/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
@@ -289,10 +289,9 @@ public class MilitaryGridReferenceSystem extends 
ReferencingByIdentifiers {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Map<String,?> properties() {
         Party party;
         try {
@@ -306,14 +305,13 @@ public class MilitaryGridReferenceSystem extends 
ReferencingByIdentifiers {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static LocationType[] types() {
-        final ModifiableLocationType gzd    = new 
ModifiableLocationType(Resources.formatInternational(Resources.Keys.GridZoneDesignator));
-        final ModifiableLocationType square = new 
ModifiableLocationType(Resources.formatInternational(Resources.Keys.SquareIdentifier100));
-        final ModifiableLocationType coord  = new 
ModifiableLocationType(Resources.formatInternational(Resources.Keys.GridCoordinates));
+        final var gzd    = new 
ModifiableLocationType(Resources.formatInternational(Resources.Keys.GridZoneDesignator));
+        final var square = new 
ModifiableLocationType(Resources.formatInternational(Resources.Keys.SquareIdentifier100));
+        final var coord  = new 
ModifiableLocationType(Resources.formatInternational(Resources.Keys.GridCoordinates));
         gzd   
.addIdentification(Vocabulary.formatInternational(Vocabulary.Keys.Code));
         coord 
.addIdentification(Vocabulary.formatInternational(Vocabulary.Keys.Coordinate));
         square.addParent(gzd);
@@ -332,7 +330,7 @@ public class MilitaryGridReferenceSystem extends 
ReferencingByIdentifiers {
         // No need to synchronized; not a big deal if computed twice.
         short origin = south ? southOffset : northOffset;
         if (origin == 0) {
-            final DirectPosition2D position = new DirectPosition2D(
+            final var position = new DirectPosition2D(
                     south ? TransverseMercator.Zoner.SOUTH_BOUNDS
                           : TransverseMercator.Zoner.NORTH_BOUNDS, 0);
             double northing = datum.universal(position.x * 1.01, 
position.y).getConversionFromBase()
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/Envelope2D.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/Envelope2D.java
index 569f5ba933..02f22c2841 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/Envelope2D.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/geometry/Envelope2D.java
@@ -154,8 +154,7 @@ public class Envelope2D extends Rectangle2D.Double 
implements Envelope, Emptiabl
                        final DirectPosition upperCorner)
     {
         /*
-         * JDK constraint: The call to ensureDimensionMatch(…) should have 
been first if Sun/Oracle
-         * fixed RFE #4093999 (Relax constraint on placement of this()/super() 
call in constructors).
+         * JDK constraint: The call to ensureDimensionMatch(…) should be first 
after upgrade to JDK25.
          */
         this(lowerCorner.getCoordinate(0), lowerCorner.getCoordinate(1),
              upperCorner.getCoordinate(0), upperCorner.getCoordinate(1));
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/MapProjectionDescriptor.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/MapProjectionDescriptor.java
index 02b5a315ac..22bd377cd2 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/MapProjectionDescriptor.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/MapProjectionDescriptor.java
@@ -88,10 +88,9 @@ final class MapProjectionDescriptor extends 
DefaultParameterDescriptorGroup {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static ParameterDescriptor<?>[] addAxisLengths(final 
ParameterDescriptor<?>[] parameters) {
         final ParameterDescriptor<?>[] ext = new 
ParameterDescriptor<?>[parameters.length + 2];
         ext[0] = MapProjection.SEMI_MAJOR;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
index 7e3209d2d1..29262daf14 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/crs/DefaultProjectedCRS.java
@@ -141,10 +141,9 @@ public class DefaultProjectedCRS extends 
AbstractDerivedCRS implements Projected
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static GeodeticCRS checkDimensions(final GeodeticCRS baseCRS, 
final CartesianCS derivedCS) {
         int n = baseCRS.getCoordinateSystem().getDimension();
         if (derivedCS != null) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCompoundCS.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCompoundCS.java
index 5d08069852..3d299759e3 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCompoundCS.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/cs/DefaultCompoundCS.java
@@ -124,12 +124,11 @@ public class DefaultCompoundCS extends AbstractCS {
     }
 
     /**
-     * This is a work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      *
      * @param  components  the coordinate systems.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private DefaultCompoundCS(final CoordinateSystem[] components, final 
CoordinateSystemAxis[] axes) {
         super(Map.of(NAME_KEY, AxisDirections.appendTo(new 
StringBuilder(60).append("Compound CS"), axes)), axes);
         this.components = List.of(components);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
index f07ecb87e9..a517fd61c5 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultOperationMethod.java
@@ -241,10 +241,9 @@ public class DefaultOperationMethod extends 
AbstractIdentifiedObject implements
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Map<String,?> getProperties(final MathTransform transform) {
         ArgumentChecks.ensureNonNull("transform", transform);
         if (transform instanceof Parameterized) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
index 2320808efa..d99c28df7d 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
@@ -36,6 +36,7 @@ import 
org.apache.sis.referencing.operation.transform.MathTransforms;
 import org.apache.sis.referencing.operation.transform.PassThroughTransform;
 import org.apache.sis.metadata.internal.shared.ImplementationHelper;
 import org.apache.sis.util.ArraysExt;
+import org.apache.sis.util.Workaround;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.io.wkt.FormattableObject;
@@ -124,9 +125,9 @@ public class DefaultPassThroughOperation extends 
AbstractCoordinateOperation imp
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
+    @Workaround(library="JDK", version="11", fixed="25")
     private DefaultPassThroughOperation(final Map<String,?>            
properties,
                                         final CoordinateReferenceSystem 
sourceCRS,
                                         final CoordinateReferenceSystem 
targetCRS,
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
index 4df06a0993..28842bc361 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
@@ -88,13 +88,11 @@ public class AlbersEqualArea extends AuthalicConversion {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @SuppressWarnings("fallthrough")
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.FALSE_EASTING,    EASTING_AT_FALSE_ORIGIN);
         roles.put(ParameterRole.FALSE_NORTHING,   NORTHING_AT_FALSE_ORIGIN);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, LONGITUDE_OF_FALSE_ORIGIN);
@@ -102,10 +100,9 @@ public class AlbersEqualArea extends AuthalicConversion {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private AlbersEqualArea(final Initializer initializer) {
         super(initializer, null);
         double φ0 = initializer.getAndStore(LATITUDE_OF_FALSE_ORIGIN);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
index 100edba838..babd0a6b8f 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/AzimuthalEquidistant.java
@@ -80,10 +80,9 @@ public class AzimuthalEquidistant extends 
NormalizedProjection {
     final double sinφ0, cosφ0;
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
         roles.put(ParameterRole.LATITUDE_OF_CONFORMAL_SPHERE_RADIUS, 
LATITUDE_OF_ORIGIN);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CassiniSoldner.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CassiniSoldner.java
index 23770b1fd0..8c8d44266f 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CassiniSoldner.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CassiniSoldner.java
@@ -141,10 +141,9 @@ public class CassiniSoldner extends MeridianArcBased {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, new Variant[] 
{Variant.HYPERBOLIC}, Variant.DEFAULT);
         final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
index 737033915a..92e86e9f0a 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
@@ -130,14 +130,12 @@ public class CylindricalEqualArea extends 
AuthalicConversion {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @SuppressWarnings("fallthrough")
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, Variant.values(), 
Variant.ELLIPSOIDAL);
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         /*
          * "Longitude of origin" and "scale factor" are intentionally omitted 
from this map because they will
          * be handled in a special way. See comments in 
Mercator.initializer(…) method for more details.
@@ -150,10 +148,9 @@ public class CylindricalEqualArea extends 
AuthalicConversion {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private CylindricalEqualArea(final Initializer initializer) {
         super(initializer, null);
         variant = (Variant) initializer.variant;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/EquidistantCylindrical.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/EquidistantCylindrical.java
index bbe96dbf74..b251b01ee6 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/EquidistantCylindrical.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/EquidistantCylindrical.java
@@ -83,13 +83,11 @@ public class EquidistantCylindrical extends 
NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @SuppressWarnings("fallthrough")
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.FALSE_EASTING,    
Equirectangular.FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   
Equirectangular.FALSE_NORTHING);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, 
Equirectangular.LONGITUDE_OF_ORIGIN);
@@ -97,10 +95,9 @@ public class EquidistantCylindrical extends 
NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private EquidistantCylindrical(final Initializer initializer) {
         super(initializer, null);
         final double φ1 = 
toRadians(initializer.getAndStore(Equirectangular.STANDARD_PARALLEL));
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java
index e386699b22..1bed4a2db2 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java
@@ -80,13 +80,11 @@ public class LambertAzimuthalEqualArea extends 
AuthalicConversion {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @SuppressWarnings("fallthrough")
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, LONGITUDE_OF_ORIGIN);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   FALSE_NORTHING);
@@ -94,10 +92,9 @@ public class LambertAzimuthalEqualArea extends 
AuthalicConversion {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private LambertAzimuthalEqualArea(final Initializer initializer) {
         super(initializer, null);
         final double φ0    = 
toRadians(initializer.getAndStore(LATITUDE_OF_ORIGIN));
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
index 7bfa5750aa..37b78a4d7e 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
@@ -180,14 +180,12 @@ public class LambertConicConformal extends 
ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @SuppressWarnings("fallthrough")
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, Variant.values(), 
Variant.TWO_PARALLELS);
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         /*
          * "Scale factor" is not formally a "Lambert Conformal (2SP)" 
argument, but we accept it
          * anyway for all Lambert projections since it may be used in some 
Well Known Text (WKT).
@@ -227,10 +225,9 @@ public class LambertConicConformal extends 
ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private LambertConicConformal(final Initializer initializer) {
         super(initializer);
         final Variant variant = (Variant) initializer.variant;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mercator.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mercator.java
index 4884e1a17e..7259120223 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mercator.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mercator.java
@@ -183,14 +183,12 @@ public class Mercator extends ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @SuppressWarnings("fallthrough")
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, Variant.values(), 
Variant.TWO_PARALLELS);
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         /*
          * The "scale factor" is not formally a "Mercator 2SP" argument, but 
we accept it anyway
          * for all Mercator projections because it may be used in some Well 
Known Text (WKT).
@@ -235,10 +233,9 @@ public class Mercator extends ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private Mercator(final Initializer initializer) {
         super(initializer);
         variant = (Variant) initializer.variant;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
index 2ec28b7902..8af43684db 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
@@ -80,12 +80,11 @@ public class ModifiedAzimuthalEquidistant extends 
AzimuthalEquidistant {
     private final double Bp;
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, LONGITUDE_OF_ORIGIN);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   FALSE_NORTHING);
@@ -108,10 +107,9 @@ public class ModifiedAzimuthalEquidistant extends 
AzimuthalEquidistant {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private ModifiedAzimuthalEquidistant(final Initializer initializer) {
         super(initializer);
         var ν0      = initializer.rν2(sinφ0).sqrt().inverse();
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mollweide.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mollweide.java
index 9ed01b9ed5..8fb004b3ff 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mollweide.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Mollweide.java
@@ -70,12 +70,11 @@ public class Mollweide extends NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, CENTRAL_MERIDIAN);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   FALSE_NORTHING);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueMercator.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueMercator.java
index 68009a4470..c419bc23e8 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueMercator.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueMercator.java
@@ -151,13 +151,12 @@ public class ObliqueMercator extends ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, Variant.values(), 
Variant.DEFAULT);
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
 //      ParameterRole.CENTRAL_MERIDIAN intentionally excluded. It will be 
handled in the constructor instead.
         roles.put(ParameterRole.SCALE_FACTOR,   SCALE_FACTOR);
         roles.put(ParameterRole.FALSE_EASTING,  variant.center ? 
EASTING_AT_CENTRE  : FALSE_EASTING);
@@ -166,10 +165,9 @@ public class ObliqueMercator extends ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private ObliqueMercator(final Initializer initializer) {
         super(initializer);
         final Variant variant = (Variant) initializer.variant;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
index 29c65e405f..6766f3c6e8 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
@@ -106,12 +106,11 @@ public class ObliqueStereographic extends 
NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, LONGITUDE_OF_ORIGIN);
         roles.put(ParameterRole.SCALE_FACTOR,     SCALE_FACTOR);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
@@ -120,10 +119,9 @@ public class ObliqueStereographic extends 
NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private ObliqueStereographic(final Initializer initializer) {
         super(initializer, null);
         final double φ0     = 
toRadians(initializer.getAndStore(LATITUDE_OF_ORIGIN));
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Orthographic.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Orthographic.java
index 6affdb1dc3..4c52e73cae 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Orthographic.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Orthographic.java
@@ -64,12 +64,11 @@ public class Orthographic extends NormalizedProjection {
     private final double mℯ2_cosφ0;
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, LONGITUDE_OF_ORIGIN);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   FALSE_NORTHING);
@@ -92,10 +91,9 @@ public class Orthographic extends NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private Orthographic(final Initializer initializer) {
         super(initializer, null);
         final double φ0 = 
toRadians(initializer.getAndStore(LATITUDE_OF_ORIGIN));
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/PolarStereographic.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/PolarStereographic.java
index 60da7e68d7..6a9359542b 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/PolarStereographic.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/PolarStereographic.java
@@ -134,13 +134,12 @@ public class PolarStereographic extends 
ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, Variant.values(), Variant.B);
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         ParameterDescriptor<Double> falseEasting  = 
PolarStereographicA.FALSE_EASTING;
         ParameterDescriptor<Double> falseNorthing = 
PolarStereographicA.FALSE_NORTHING;
         if (variant == Variant.C) {
@@ -157,10 +156,9 @@ public class PolarStereographic extends 
ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private PolarStereographic(final Initializer initializer) {
         super(initializer);
         final Variant variant = (Variant) initializer.variant;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Polyconic.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Polyconic.java
index 0c1563940d..113ad38fd9 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Polyconic.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Polyconic.java
@@ -86,12 +86,11 @@ public class Polyconic extends MeridianArcBased {
     private final double ci2, ci4, ci6;
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, LONGITUDE_OF_ORIGIN);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   FALSE_NORTHING);
@@ -114,10 +113,9 @@ public class Polyconic extends MeridianArcBased {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private Polyconic(final Initializer initializer) {
         super(initializer);
         final double φ0 = 
toRadians(initializer.getAndStore(LATITUDE_OF_ORIGIN));
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Robinson.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Robinson.java
index 404a3173c8..332f5bbe30 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Robinson.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Robinson.java
@@ -90,12 +90,11 @@ public class Robinson extends NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, CENTRAL_MERIDIAN);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   FALSE_NORTHING);
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
index 1e33245e84..65f5470b69 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
@@ -98,12 +98,11 @@ public class SatelliteTracking extends NormalizedProjection 
{
     private final boolean isConic;
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database ("Relax constraint on
-     * placement of this()/super() call in constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
-        final EnumMap<NormalizedProjection.ParameterRole, 
ParameterDescriptor<Double>> roles = new 
EnumMap<>(NormalizedProjection.ParameterRole.class);
+        final var roles = new EnumMap<NormalizedProjection.ParameterRole, 
ParameterDescriptor<Double>>(NormalizedProjection.ParameterRole.class);
         roles.put(NormalizedProjection.ParameterRole.CENTRAL_MERIDIAN, 
CENTRAL_MERIDIAN);
         roles.put(ParameterRole.LATITUDE_OF_CONFORMAL_SPHERE_RADIUS, 
LATITUDE_OF_ORIGIN);
         return new Initializer(method, parameters, roles, null);
@@ -121,10 +120,9 @@ public class SatelliteTracking extends 
NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private SatelliteTracking(final Initializer initializer) {
         super(initializer, null);
         final double φ0 = 
toRadians(initializer.getAndStore(LATITUDE_OF_ORIGIN));
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Sinusoidal.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Sinusoidal.java
index b4e7c35a26..d5720e85b9 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Sinusoidal.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/Sinusoidal.java
@@ -87,13 +87,12 @@ public class Sinusoidal extends MeridianArcBased {
     private final Variant variant;
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="8", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, Variant.values(), null);
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         roles.put(ParameterRole.CENTRAL_MERIDIAN, CENTRAL_MERIDIAN);
         roles.put(ParameterRole.FALSE_EASTING,    FALSE_EASTING);
         roles.put(ParameterRole.FALSE_NORTHING,   FALSE_NORTHING);
@@ -116,10 +115,9 @@ public class Sinusoidal extends MeridianArcBased {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private Sinusoidal(final Initializer initializer) {
         super(initializer);
         variant = (Variant) initializer.variant;
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/TransverseMercator.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/TransverseMercator.java
index fbd23875b0..d92e5f149b 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/TransverseMercator.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/projection/TransverseMercator.java
@@ -198,13 +198,12 @@ public class TransverseMercator extends 
NormalizedProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Initializer initializer(final OperationMethod method, final 
Parameters parameters) {
         final Variant variant = variant(method, Variant.values(), null);
-        final EnumMap<ParameterRole, ParameterDescriptor<Double>> roles = new 
EnumMap<>(ParameterRole.class);
+        final var roles = new EnumMap<ParameterRole, 
ParameterDescriptor<Double>>(ParameterRole.class);
         ParameterRole xOffset = ParameterRole.FALSE_EASTING;
         ParameterRole yOffset = ParameterRole.FALSE_NORTHING;
         if (variant == Variant.SOUTH_ORIENTATED) {
diff --git 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Affine.java
 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Affine.java
index 38078c546b..39bd29f8ec 100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Affine.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/operation/provider/Affine.java
@@ -138,10 +138,9 @@ public final class Affine extends AbstractProvider {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static ParameterDescriptor<?>[] descriptors() {
         final var descriptors = 
MatrixParameters.EPSG.getAllDescriptors(EPSG_DIMENSION, EPSG_DIMENSION + 1);
         return new ParameterDescriptor<?>[] {
diff --git 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/projection/NoOp.java
 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/projection/NoOp.java
index a2b94ee4e7..56138a5650 100644
--- 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/projection/NoOp.java
+++ 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/projection/NoOp.java
@@ -65,10 +65,9 @@ final class NoOp extends ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private NoOp(final Parameters parameters) {
         super(new Initializer(new DefaultOperationMethod(
                 Map.of(DefaultOperationMethod.NAME_KEY, 
parameters.getDescriptor().getName()),
@@ -76,10 +75,9 @@ final class NoOp extends ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Parameters parameters(final Ellipsoid ellipsoid, final 
boolean declareIvf) {
         final Parameters parameters = parameters(
                 ellipsoid.getSemiMajorAxis(),
@@ -91,10 +89,9 @@ final class NoOp extends ConformalProjection {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Parameters parameters(final double semiMajor, final double 
semiMinor) {
         final ParameterValueGroup group = new ParameterBuilder()
                 
.addName("No-operation").createGroupForMapProjection().createValue();
diff --git 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/ProjectiveTransformTest.java
 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/ProjectiveTransformTest.java
index b435531bf8..1089b4449e 100644
--- 
a/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/ProjectiveTransformTest.java
+++ 
b/endorsed/src/org.apache.sis.referencing/test/org/apache/sis/referencing/operation/transform/ProjectiveTransformTest.java
@@ -28,6 +28,7 @@ import org.apache.sis.referencing.operation.matrix.Matrix2;
 import org.apache.sis.referencing.operation.matrix.Matrix4;
 import org.apache.sis.referencing.internal.shared.ExtendedPrecisionMatrix;
 import org.apache.sis.referencing.operation.provider.Affine;
+import org.apache.sis.util.Workaround;
 import org.apache.sis.util.internal.shared.DoubleDouble;
 import org.apache.sis.parameter.Parameterized;
 import org.apache.sis.math.Fraction;
@@ -58,8 +59,9 @@ import org.opengis.test.referencing.AffineTransformTest;
 public class ProjectiveTransformTest extends AffineTransformTest {
     /**
      * A math transform factory which delegates instantiations to the 
enclosing test class.
-     * This is a workaround while waiting for JEP 447: Statements before 
super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
+    @Workaround(library="JDK", version="11", fixed="25")
     private static final class Proxy extends MathTransformFactoryBase {
         /** The enclosing test class. */
         ProjectiveTransformTest test;
@@ -73,6 +75,7 @@ public class ProjectiveTransformTest extends 
AffineTransformTest {
     /**
      * Creates a new test suite.
      */
+    @SuppressWarnings("LeakingThisInConstructor")
     public ProjectiveTransformTest() {
         super(new Proxy());
         ((Proxy) mtFactory).test = this;
diff --git 
a/endorsed/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/IdentifiedMediaData.java
 
b/endorsed/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/IdentifiedMediaData.java
index e46da1e246..bdaf811d3c 100644
--- 
a/endorsed/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/IdentifiedMediaData.java
+++ 
b/endorsed/src/org.apache.sis.storage.geoheif/main/org/apache/sis/storage/isobmff/base/IdentifiedMediaData.java
@@ -64,11 +64,10 @@ public final class IdentifiedMediaData extends MediaData {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      * The identifier needs to be read before the call to `super(reader)`.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private IdentifiedMediaData(final Reader reader, final int id) throws 
IOException {
         super(reader);
         identifier = id;
diff --git 
a/endorsed/src/org.apache.sis.storage.geoheif/test/org/apache/sis/storage/geoheif/SelfConsistencyTest.java
 
b/endorsed/src/org.apache.sis.storage.geoheif/test/org/apache/sis/storage/geoheif/SelfConsistencyTest.java
index cbf02d64cb..5303bd62ef 100644
--- 
a/endorsed/src/org.apache.sis.storage.geoheif/test/org/apache/sis/storage/geoheif/SelfConsistencyTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.geoheif/test/org/apache/sis/storage/geoheif/SelfConsistencyTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.sis.storage.geoheif;
 
+import org.apache.sis.util.Workaround;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.GridCoverageResource;
 import org.apache.sis.storage.StorageConnector;
@@ -47,12 +48,12 @@ public final class SelfConsistencyTest extends 
CoverageReadConsistency<GeoHeifSt
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      *
      * @throws DataStoreException if an error occurred while reading the file.
      */
     @Override
+    @Workaround(library="JDK", version="11", fixed="25")
     protected GridCoverageResource resource() throws DataStoreException {
         return assertInstanceOf(GridCoverageResource.class, 
store.components().iterator().next());
     }
diff --git 
a/endorsed/src/org.apache.sis.storage.geotiff/test/org/apache/sis/storage/geotiff/SelfConsistencyTest.java
 
b/endorsed/src/org.apache.sis.storage.geotiff/test/org/apache/sis/storage/geotiff/SelfConsistencyTest.java
index b52720fb64..86c6083868 100644
--- 
a/endorsed/src/org.apache.sis.storage.geotiff/test/org/apache/sis/storage/geotiff/SelfConsistencyTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.geotiff/test/org/apache/sis/storage/geotiff/SelfConsistencyTest.java
@@ -18,6 +18,7 @@ package org.apache.sis.storage.geotiff;
 
 import java.util.List;
 import org.opengis.util.GenericName;
+import org.apache.sis.util.Workaround;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.GridCoverageResource;
 import org.apache.sis.storage.IllegalNameException;
@@ -53,12 +54,12 @@ public final class SelfConsistencyTest extends 
CoverageReadConsistency<GeoTiffSt
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      *
      * @throws DataStoreException if an error occurred while reading the file.
      */
     @Override
+    @Workaround(library="JDK", version="11", fixed="25")
     protected GridCoverageResource resource() throws DataStoreException {
         return store.components().iterator().next();
     }
diff --git 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/SelfConsistencyTest.java
 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/SelfConsistencyTest.java
index 152a263954..6ef8b5322f 100644
--- 
a/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/SelfConsistencyTest.java
+++ 
b/endorsed/src/org.apache.sis.storage.netcdf/test/org/apache/sis/storage/netcdf/SelfConsistencyTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.sis.storage.netcdf;
 
+import org.apache.sis.util.Workaround;
 import org.apache.sis.storage.DataStoreException;
 import org.apache.sis.storage.GridCoverageResource;
 import org.apache.sis.storage.StorageConnector;
@@ -47,10 +48,12 @@ public final class SelfConsistencyTest extends 
CoverageReadConsistency<NetcdfSto
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
+     *
+     * @throws DataStoreException if an error occurred while reading the file.
      */
     @Override
+    @Workaround(library="JDK", version="11", fixed="25")
     protected GridCoverageResource resource() throws DataStoreException {
         return assertInstanceOf(GridCoverageResource.class, 
store.components().iterator().next());
     }
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreException.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreException.java
index fecd731d94..ad301679ed 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreException.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/DataStoreException.java
@@ -122,9 +122,9 @@ public class DataStoreException extends Exception 
implements LocalizedException
     }
 
     /**
-     * Workaround while waiting for JEP 447: Statements before super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="1.8")
+    @Workaround(library="JDK", version="11", fixed="25")
     private DataStoreException(final Locale locale, final Object[] params) {
         this(locale, IOUtilities.errorMessageKey(params), params);
     }
diff --git 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/UnsupportedStorageException.java
 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/UnsupportedStorageException.java
index e1fbdbda72..9f4258d1e0 100644
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/UnsupportedStorageException.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/UnsupportedStorageException.java
@@ -108,10 +108,9 @@ public class UnsupportedStorageException extends 
IllegalOpenParameterException {
 
     /**
      * Returns the type of the given storage, with a special case for files or 
paths to directories.
-     * This is a work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="10", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Object type(final Object storage) {
         if ((storage instanceof File && ((File) storage).isDirectory()) ||
             (storage instanceof Path && Files.isDirectory((Path) storage)))
diff --git 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BILConsistencyTest.java
 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BILConsistencyTest.java
index 3b51dd7fb4..0188bbd6f4 100644
--- 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BILConsistencyTest.java
+++ 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BILConsistencyTest.java
@@ -45,10 +45,9 @@ public final class BILConsistencyTest extends 
CoverageReadConsistency<RawRasterS
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static RawRasterStore openFile() throws IOException, 
DataStoreException {
         final URL url = BIPConsistencyTest.class.getResource("BIL.raw");
         assertNotNull(url, "Test file not found.");
@@ -56,11 +55,10 @@ public final class BILConsistencyTest extends 
CoverageReadConsistency<RawRasterS
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
     @Override
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     protected GridCoverageResource resource() throws DataStoreException {
         return store;
     }
diff --git 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BIPConsistencyTest.java
 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BIPConsistencyTest.java
index 637f453e30..9b8c7c69ae 100644
--- 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BIPConsistencyTest.java
+++ 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BIPConsistencyTest.java
@@ -45,10 +45,9 @@ public final class BIPConsistencyTest extends 
CoverageReadConsistency<RawRasterS
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static RawRasterStore openFile() throws IOException, 
DataStoreException {
         final URL url = BIPConsistencyTest.class.getResource("BIP.raw");
         assertNotNull(url, "Test file not found.");
@@ -56,11 +55,10 @@ public final class BIPConsistencyTest extends 
CoverageReadConsistency<RawRasterS
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
     @Override
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     protected GridCoverageResource resource() throws DataStoreException {
         return store;
     }
diff --git 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BSQConsistencyTest.java
 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BSQConsistencyTest.java
index 25509b3c6e..03574c40cf 100644
--- 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BSQConsistencyTest.java
+++ 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/esri/BSQConsistencyTest.java
@@ -45,10 +45,9 @@ public final class BSQConsistencyTest extends 
CoverageReadConsistency<RawRasterS
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static RawRasterStore openFile() throws IOException, 
DataStoreException {
         final URL url = BSQConsistencyTest.class.getResource("BSQ.raw");
         assertNotNull(url, "Test file not found.");
@@ -56,11 +55,10 @@ public final class BSQConsistencyTest extends 
CoverageReadConsistency<RawRasterS
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
     @Override
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     protected GridCoverageResource resource() throws DataStoreException {
         return store;
     }
diff --git 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/image/SelfConsistencyTest.java
 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/image/SelfConsistencyTest.java
index 3b4420bda5..e3169ac7d0 100644
--- 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/image/SelfConsistencyTest.java
+++ 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/image/SelfConsistencyTest.java
@@ -49,10 +49,9 @@ public final class SelfConsistencyTest extends 
CoverageReadConsistency<WorldFile
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static WorldFileStore openFile() throws IOException, 
DataStoreException {
         final URL url = WorldFileStoreTest.class.getResource("gradient.png");
         assertNotNull(url, "Test file not found.");
@@ -60,11 +59,10 @@ public final class SelfConsistencyTest extends 
CoverageReadConsistency<WorldFile
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
     @Override
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     protected GridCoverageResource resource() throws DataStoreException {
         return store.components().iterator().next();
     }
diff --git 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/test/CoverageReadConsistency.java
 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/test/CoverageReadConsistency.java
index ae7a4460bd..50751b43ab 100644
--- 
a/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/test/CoverageReadConsistency.java
+++ 
b/endorsed/src/org.apache.sis.storage/test/org/apache/sis/storage/test/CoverageReadConsistency.java
@@ -180,14 +180,12 @@ public abstract class CoverageReadConsistency<S extends 
DataStore> extends TestC
      * This method shall not use any other field and shall not invoke any 
other method,
      * because this method is invoked during object construction.
      *
-     * <p>This method is a work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in constructors")
-     * and will be removed (replaced by constructor argument) in a future 
version.</p>
+     * <p>This method is a work around for JEP 513.</p>
      *
      * @return the resource to test.
      * @throws DataStoreException if an error occurred while reading the 
resource.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     protected abstract GridCoverageResource resource() throws 
DataStoreException;
 
     /**
diff --git 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/shared/LocalizedParseException.java
 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/shared/LocalizedParseException.java
index da4566bd12..7f7cc74cc0 100644
--- 
a/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/shared/LocalizedParseException.java
+++ 
b/endorsed/src/org.apache.sis.util/main/org/apache/sis/util/internal/shared/LocalizedParseException.java
@@ -93,9 +93,9 @@ public final class LocalizedParseException extends 
ParseException implements Loc
     }
 
     /**
-     * Workaround while waiting for JEP 447: Statements before super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="1.8")
+    @Workaround(library="JDK", version="11", fixed="25")
     private LocalizedParseException(final Locale locale, final Class<?> type,
             final CharSequence text, final int offset, final int errorOffset)
     {
@@ -103,15 +103,15 @@ public final class LocalizedParseException extends 
ParseException implements Loc
     }
 
     /**
-     * Workaround while waiting for JEP 447: Statements before super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="1.8")
+    @Workaround(library="JDK", version="11", fixed="25")
     private LocalizedParseException(final Locale locale, final Object[] 
parameters, final int errorOffset) {
         this(locale, key(parameters), parameters, errorOffset);
     }
 
     /**
-     * Workaround while waiting for JEP 447: Statements before super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      *
      * @param  type         the type of objects parsed by the {@link 
java.text.Format}.
      * @param  text         the text that {@code Format} failed to parse.
@@ -119,7 +119,7 @@ public final class LocalizedParseException extends 
ParseException implements Loc
      * @param  errorOffset  the position where the error is found while 
parsing.
      * @return the {@code parameters} value to give to the constructor.
      */
-    @Workaround(library="JDK", version="1.8")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static Object[] parameters(final Class<?> type, CharSequence text, 
final int offset, final int errorOffset) {
         if (errorOffset >= text.length()) {
             return new Object[] {text};
@@ -133,9 +133,9 @@ public final class LocalizedParseException extends 
ParseException implements Loc
     }
 
     /**
-     * Workaround while waiting for JEP 447: Statements before super(…).
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="1.8")
+    @Workaround(library="JDK", version="11", fixed="25")
     private static short key(final Object[] parameters) {
         final short key;
         switch (parameters.length) {
diff --git 
a/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/Printer.java 
b/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/Printer.java
index b504da1115..3a1c5dcbf9 100644
--- a/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/Printer.java
+++ b/endorsed/src/org.apache.sis.util/test/org/apache/sis/test/Printer.java
@@ -56,10 +56,9 @@ public final class Printer extends PrintWriter {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private Printer(final StringWriter buffer) {
         super(buffer);
         this.buffer = buffer;
diff --git 
a/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/GpkgStore.java
 
b/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/GpkgStore.java
index 5f2c580aa1..553c383ef1 100644
--- 
a/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/GpkgStore.java
+++ 
b/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/GpkgStore.java
@@ -140,10 +140,9 @@ public class GpkgStore extends SQLStore implements 
WritableAggregate {
     }
 
     /**
-     * Work around for RFE #4093999 in Sun's bug database
-     * ("Relax constraint on placement of this()/super() call in 
constructors").
+     * Workaround while waiting for JEP 513: Flexible Constructor Bodies.
      */
-    @Workaround(library="JDK", version="7", fixed="25")
+    @Workaround(library="JDK", version="11", fixed="25")
     private GpkgStore(final DataStoreProvider provider, final Initializer 
init) throws DataStoreException {
         super(provider, init.connector);
         path    = init.path;
diff --git 
a/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/Initializer.java
 
b/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/Initializer.java
index 8fc16d3d01..fddb647b8d 100644
--- 
a/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/Initializer.java
+++ 
b/incubator/src/org.apache.sis.storage.geopackage/main/org/apache/sis/storage/geopackage/Initializer.java
@@ -42,12 +42,11 @@ import org.apache.sis.util.Workaround;
  * A helper class for initializing a {@code GpkgStore}.
  * A temporary instance exists at construction time, then is discarded.
  *
- * This is a work around for RFE #4093999 in Sun's bug database
- * ("Relax constraint on placement of this()/super() call in constructors").
+ * This is a work around while waiting for JEP 513: Flexible Constructor 
Bodies.
  *
  * @author Martin Desruisseaux (Geomatys).
  */
-@Workaround(library="JDK", version="7", fixed="25")
+@Workaround(library="JDK", version="11", fixed="25")
 final class Initializer {
     /**
      * Suffixes of auxiliary files.

Reply via email to