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

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

commit 81026e057dc7764a13a66cd9c65ab685bdab1940
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Fri Sep 9 11:25:20 2022 +0200

    Rename `MetadataUtilities` as `ImplementationHelper`.
    This is for making room for an user-oriented `MetadataUtilities` class.
---
 ...ataUtilities.java => ImplementationHelper.java} | 13 +++++-----
 .../apache/sis/internal/metadata/package-info.java |  2 +-
 .../apache/sis/metadata/ModifiableMetadata.java    |  2 +-
 .../iso/DefaultExtendedElementInformation.java     |  2 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   | 16 ++++++------
 .../org/apache/sis/metadata/iso/ISOMetadata.java   |  8 +++---
 .../acquisition/DefaultEnvironmentalRecord.java    |  2 +-
 .../sis/metadata/iso/acquisition/DefaultEvent.java |  4 +--
 .../iso/acquisition/DefaultRequestedDate.java      |  4 +--
 .../iso/acquisition/DefaultRequirement.java        |  4 +--
 .../sis/metadata/iso/citation/DefaultCitation.java |  4 +--
 .../metadata/iso/citation/DefaultCitationDate.java |  4 +--
 .../iso/citation/DefaultResponsibleParty.java      |  2 +-
 .../sis/metadata/iso/content/DefaultBand.java      |  2 +-
 .../iso/content/DefaultCoverageDescription.java    |  2 +-
 .../DefaultFeatureCatalogueDescription.java        |  2 +-
 .../iso/content/DefaultFeatureTypeInfo.java        |  2 +-
 .../iso/content/DefaultImageDescription.java       |  4 +--
 .../iso/content/DefaultSampleDimension.java        |  2 +-
 .../DefaultDigitalTransferOptions.java             |  2 +-
 .../metadata/iso/distribution/DefaultMedium.java   |  2 +-
 .../distribution/DefaultStandardOrderProcess.java  |  4 +--
 .../iso/extent/DefaultSpatialTemporalExtent.java   |  2 +-
 .../DefaultRepresentativeFraction.java             |  8 +++---
 .../iso/identification/DefaultResolution.java      |  2 +-
 .../metadata/iso/identification/DefaultUsage.java  |  4 +--
 .../iso/lineage/DefaultNominalResolution.java      |  2 +-
 .../maintenance/DefaultMaintenanceInformation.java |  2 +-
 .../sis/metadata/iso/quality/AbstractElement.java  |  2 +-
 .../sis/metadata/iso/spatial/DefaultDimension.java |  2 +-
 .../iso/spatial/DefaultGeometricObjects.java       |  2 +-
 .../spatial/DefaultGridSpatialRepresentation.java  |  2 +-
 ...tiesTest.java => ImplementationHelperTest.java} | 30 +++++++++++-----------
 .../apache/sis/test/suite/MetadataTestSuite.java   |  2 +-
 .../parameter/DefaultParameterDescriptorGroup.java |  4 +--
 .../sis/parameter/DefaultParameterValue.java       |  4 +--
 .../sis/parameter/DefaultParameterValueGroup.java  |  4 +--
 .../sis/referencing/AbstractIdentifiedObject.java  |  6 ++---
 .../sis/referencing/AbstractReferenceSystem.java   |  6 ++---
 .../apache/sis/referencing/crs/AbstractCRS.java    |  4 +--
 .../sis/referencing/crs/AbstractDerivedCRS.java    |  6 ++---
 .../sis/referencing/crs/DefaultEngineeringCRS.java |  4 +--
 .../sis/referencing/crs/DefaultGeodeticCRS.java    |  4 +--
 .../sis/referencing/crs/DefaultImageCRS.java       |  4 +--
 .../sis/referencing/crs/DefaultParametricCRS.java  |  4 +--
 .../sis/referencing/crs/DefaultTemporalCRS.java    |  4 +--
 .../sis/referencing/crs/DefaultVerticalCRS.java    |  4 +--
 .../cs/DefaultCoordinateSystemAxis.java            | 14 +++++-----
 .../sis/referencing/datum/AbstractDatum.java       | 20 +++++++--------
 .../sis/referencing/datum/DefaultEllipsoid.java    |  6 ++---
 .../referencing/datum/DefaultGeodeticDatum.java    |  6 ++---
 .../sis/referencing/datum/DefaultImageDatum.java   |  4 +--
 .../referencing/datum/DefaultPrimeMeridian.java    |  4 +--
 .../referencing/datum/DefaultTemporalDatum.java    |  8 +++---
 .../referencing/datum/DefaultVerticalDatum.java    |  4 +--
 .../operation/AbstractCoordinateOperation.java     | 14 +++++-----
 .../operation/AbstractSingleOperation.java         |  6 ++---
 .../operation/DefaultOperationMethod.java          | 12 ++++-----
 .../operation/DefaultPassThroughOperation.java     |  4 +--
 59 files changed, 153 insertions(+), 156 deletions(-)

diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ImplementationHelper.java
similarity index 97%
rename from 
core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java
rename to 
core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ImplementationHelper.java
index 087cf45ec2..1aacb7af82 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/ImplementationHelper.java
@@ -33,21 +33,20 @@ import org.apache.sis.internal.util.CollectionsExt;
 
 
 /**
- * Miscellaneous utility methods for metadata.
+ * Miscellaneous utility methods for implementation of metadata classes.
+ * Many methods in this class are related to (un)marshalling.
+ * This is not an helper class for <em>usage</em> of metadata.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.0
+ * @version 1.3
  * @since   0.3
  * @module
- *
- * @todo Most methods in this class are related to (un)marshalling. We should 
rename as {@code MarshallingUtilities}
- *       and move to a JAXB package after we removed the {@code 
toMilliseconds(…)} and {@code toDate(…)} methods.
  */
-public final class MetadataUtilities extends Static {
+public final class ImplementationHelper extends Static {
     /**
      * Do not allow instantiation of this class.
      */
-    private MetadataUtilities() {
+    private ImplementationHelper() {
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/package-info.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/package-info.java
index 3aa3f674ab..fe80e55968 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/package-info.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/package-info.java
@@ -24,7 +24,7 @@
  * may change in incompatible ways in any future version without notice.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.2
+ * @version 1.3
  * @since   0.3
  * @module
  */
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
index f5b08bec6f..6093fb0c5f 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
@@ -42,7 +42,7 @@ import org.apache.sis.internal.metadata.Resources;
 import org.apache.sis.internal.system.Semaphores;
 
 import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
index 1068f8ce47..3861f4405e 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
@@ -39,7 +39,7 @@ import org.apache.sis.internal.metadata.Dependencies;
 import org.apache.sis.internal.metadata.legacy.LegacyPropertyAdapter;
 import org.apache.sis.internal.util.CollectionsExt;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
index abc7628372..b7708d64f6 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
@@ -68,7 +68,7 @@ import 
org.apache.sis.metadata.iso.citation.DefaultOnlineResource;
 import org.apache.sis.metadata.iso.identification.AbstractIdentification;
 import org.apache.sis.metadata.iso.identification.DefaultDataIdentification;
 import org.apache.sis.internal.metadata.legacy.LegacyPropertyAdapter;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.metadata.Dependencies;
 import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.internal.jaxb.lan.LocaleAndCharset;
@@ -900,7 +900,7 @@ public class DefaultMetadata extends ISOMetadata implements 
Metadata {
      */
     @Deprecated
     public void setHierarchyLevels(final Collection<? extends ScopeCode> 
newValues) {
-        checkWritePermission(MetadataUtilities.valueIfDefined(metadataScopes));
+        
checkWritePermission(ImplementationHelper.valueIfDefined(metadataScopes));
         ((LegacyPropertyAdapter<ScopeCode,?>) 
getHierarchyLevels()).setValues(newValues);
     }
 
@@ -951,7 +951,7 @@ public class DefaultMetadata extends ISOMetadata implements 
Metadata {
      */
     @Deprecated
     public void setHierarchyLevelNames(final Collection<? extends String> 
newValues) {
-        checkWritePermission(MetadataUtilities.valueIfDefined(metadataScopes));
+        
checkWritePermission(ImplementationHelper.valueIfDefined(metadataScopes));
         ((LegacyPropertyAdapter<String,?>) 
getHierarchyLevelNames()).setValues(newValues);
     }
 
@@ -1036,7 +1036,7 @@ public class DefaultMetadata extends ISOMetadata 
implements Metadata {
      */
     @Deprecated
     public void setDateStamp(final Date newValue) {
-        checkWritePermission(MetadataUtilities.valueIfDefined(dateInfo));
+        checkWritePermission(ImplementationHelper.valueIfDefined(dateInfo));
         Collection<CitationDate> newValues = dateInfo;      // See "Note about 
deprecated methods implementation"
         if (newValues == null) {
             if (newValue == null) {
@@ -1169,7 +1169,7 @@ public class DefaultMetadata extends ISOMetadata 
implements Metadata {
      * {@link #setMetadataStandardVersion(String)} methods.
      */
     private void setMetadataStandard(final boolean version, final String 
newValue) {
-        
checkWritePermission(MetadataUtilities.valueIfDefined(metadataStandards));
+        
checkWritePermission(ImplementationHelper.valueIfDefined(metadataStandards));
         final InternationalString i18n = (newValue != null) ? new 
SimpleInternationalString(newValue) : null;
         final List<Citation> newValues = (metadataStandards != null)
                 ? new ArrayList<>(metadataStandards)
@@ -1328,7 +1328,7 @@ public class DefaultMetadata extends ISOMetadata 
implements Metadata {
     public void setDataSetUri(final String newValue) throws URISyntaxException 
{
         final URI uri = (newValue != null) ? new URI(newValue) : null;
         Collection<Identification> info = identificationInfo;   // See "Note 
about deprecated methods implementation"
-        checkWritePermission(MetadataUtilities.valueIfDefined(info));
+        checkWritePermission(ImplementationHelper.valueIfDefined(info));
         AbstractIdentification firstId = 
AbstractIdentification.castOrCopy(CollectionsExt.first(info));
         if (firstId == null) {
             if (uri == null) return;
@@ -1346,10 +1346,10 @@ public class DefaultMetadata extends ISOMetadata 
implements Metadata {
             firstOnline = new DefaultOnlineResource();
         }
         firstOnline.setLinkage(uri);
-        onlineResources = MetadataUtilities.setFirst(onlineResources, 
firstOnline);
+        onlineResources = ImplementationHelper.setFirst(onlineResources, 
firstOnline);
         citation.setOnlineResources(onlineResources);
         firstId.setCitation(citation);
-        info = MetadataUtilities.setFirst(info, firstId);
+        info = ImplementationHelper.setFirst(info, firstId);
         setIdentificationInfo(info);
     }
 
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
index 2ce7f383a3..77a211d3da 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/ISOMetadata.java
@@ -36,13 +36,13 @@ import org.apache.sis.metadata.ModifiableMetadata;
 import org.apache.sis.internal.jaxb.IdentifierMapAdapter;
 import org.apache.sis.internal.jaxb.ModifiableIdentifierMap;
 import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.internal.system.Modules;
 import org.apache.sis.util.collection.Containers;
 
 import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
@@ -269,7 +269,7 @@ public class ISOMetadata extends ModifiableMetadata 
implements IdentifiedObject,
     @XmlSchemaType(name = "ID")
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     private String getID() {
-        return isNullOrEmpty(identifiers) ? null : 
MetadataUtilities.getObjectID(this);
+        return isNullOrEmpty(identifiers) ? null : 
ImplementationHelper.getObjectID(this);
     }
 
     /**
@@ -277,7 +277,7 @@ public class ISOMetadata extends ModifiableMetadata 
implements IdentifiedObject,
      * This method is invoked automatically by JAXB and should never be 
invoked explicitly.
      */
     private void setID(final String id) {
-        MetadataUtilities.setObjectID(this, id);
+        ImplementationHelper.setObjectID(this, id);
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
index b2fe2a0dac..a3a562ba67 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
@@ -24,7 +24,7 @@ import org.opengis.util.InternationalString;
 import org.apache.sis.measure.ValueRange;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.ensureInRange;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensureInRange;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
index a3c3324df7..0f1134c0ae 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEvent.java
@@ -31,8 +31,8 @@ import org.opengis.metadata.acquisition.Sequence;
 import org.opengis.metadata.acquisition.Trigger;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import static org.apache.sis.internal.metadata.ImplementationHelper.toDate;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.toMilliseconds;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
index 16525f9a04..94ef8681a2 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequestedDate.java
@@ -23,8 +23,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 import org.opengis.metadata.acquisition.RequestedDate;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import static org.apache.sis.internal.metadata.ImplementationHelper.toDate;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.toMilliseconds;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
index c86fab4b27..e70e1a93c3 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
@@ -30,8 +30,8 @@ import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.citation.Responsibility;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import static org.apache.sis.internal.metadata.ImplementationHelper.toDate;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.toMilliseconds;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
index 3d010f5933..301e0df5c0 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
@@ -40,8 +40,8 @@ import org.apache.sis.xml.IdentifierSpace;
 import org.apache.sis.xml.IdentifierMap;
 
 import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import static org.apache.sis.internal.metadata.ImplementationHelper.toDate;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.toMilliseconds;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
index 95fa24fe12..238d9a8724 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitationDate.java
@@ -25,8 +25,8 @@ import org.opengis.metadata.citation.DateType;
 import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.metadata.TitleProperty;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import static org.apache.sis.internal.metadata.ImplementationHelper.toDate;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.toMilliseconds;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
index aee818c59a..7e75da66eb 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
@@ -36,7 +36,7 @@ import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.metadata.Dependencies;
 import org.apache.sis.internal.metadata.legacy.LegacyPropertyAdapter;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
index 6dfc6b2e8c..7b57f18527 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
@@ -31,7 +31,7 @@ import org.apache.sis.measure.ValueRange;
 import org.apache.sis.internal.jaxb.gco.GO_Real;
 import org.apache.sis.internal.jaxb.gco.UnitAdapter;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java
index 63c0e1c4d6..3cd043289e 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultCoverageDescription.java
@@ -38,7 +38,7 @@ import 
org.apache.sis.internal.metadata.legacy.LegacyPropertyAdapter;
 import org.apache.sis.internal.jaxb.FilterByVersion;
 import org.apache.sis.internal.jaxb.metadata.MD_Identifier;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java
index c8d5e149d9..0d6328df8c 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureCatalogueDescription.java
@@ -34,7 +34,7 @@ import org.apache.sis.internal.metadata.Dependencies;
 import org.apache.sis.internal.metadata.legacy.LegacyPropertyAdapter;
 import org.apache.sis.internal.jaxb.lan.LocaleAndCharset;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
index 847c575715..d0cdbb0171 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultFeatureTypeInfo.java
@@ -25,7 +25,7 @@ import org.apache.sis.measure.ValueRange;
 import org.apache.sis.metadata.TitleProperty;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java
index f4e5d39303..5f0048d664 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultImageDescription.java
@@ -27,8 +27,8 @@ import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.jaxb.FilterByVersion;
 import org.apache.sis.measure.ValueRange;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.ensureInRange;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensureInRange;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
index 267266b56b..9123887af7 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
@@ -34,7 +34,7 @@ import org.apache.sis.internal.jaxb.gco.GO_Integer;
 import org.apache.sis.internal.jaxb.gco.GO_Record;
 import org.apache.sis.internal.jaxb.gco.GO_RecordType;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
index 2cc79fdbe7..312ad36da6 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultDigitalTransferOptions.java
@@ -35,7 +35,7 @@ import org.apache.sis.internal.jaxb.gts.TM_PeriodDuration;
 import org.apache.sis.internal.jaxb.FilterByVersion;
 import org.apache.sis.internal.util.CollectionsExt;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
index edcedacdc0..238b5cb793 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
@@ -41,7 +41,7 @@ import 
org.apache.sis.internal.metadata.legacy.LegacyPropertyAdapter;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.util.CollectionsExt;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultStandardOrderProcess.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultStandardOrderProcess.java
index 6464f286fc..2a5df18360 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultStandardOrderProcess.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/distribution/DefaultStandardOrderProcess.java
@@ -30,8 +30,8 @@ import org.apache.sis.internal.jaxb.gco.GO_RecordType;
 import org.apache.sis.internal.jaxb.gco.GO_Record;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import static org.apache.sis.internal.metadata.ImplementationHelper.toDate;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.toMilliseconds;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java
index 747266c1c9..bc777cc120 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultSpatialTemporalExtent.java
@@ -29,7 +29,7 @@ import org.opengis.metadata.extent.SpatialTemporalExtent;
 import org.opengis.referencing.operation.TransformException;
 import org.apache.sis.internal.metadata.ReferencingServices;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java
index 26a4332c3e..f79423e4f4 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFraction.java
@@ -32,7 +32,7 @@ import org.apache.sis.metadata.UnmodifiableMetadataException;
 import org.apache.sis.internal.jaxb.ModifiableIdentifierMap;
 import org.apache.sis.internal.jaxb.IdentifierMapAdapter;
 import org.apache.sis.internal.jaxb.gco.GO_Integer64;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.metadata.Resources;
 import org.apache.sis.internal.util.CheckedArrayList;
 import org.apache.sis.measure.ValueRange;
@@ -44,7 +44,7 @@ import org.apache.sis.util.Emptiable;
 import org.apache.sis.util.resources.Errors;
 
 import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
@@ -406,7 +406,7 @@ public class DefaultRepresentativeFraction extends Number 
implements Representat
     @XmlSchemaType(name = "ID")
     @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
     private String getID() {
-        return isNullOrEmpty(identifiers) ? null : 
MetadataUtilities.getObjectID(this);
+        return isNullOrEmpty(identifiers) ? null : 
ImplementationHelper.getObjectID(this);
     }
 
     /**
@@ -416,7 +416,7 @@ public class DefaultRepresentativeFraction extends Number 
implements Representat
      */
     @SuppressWarnings("unused")
     private void setID(String id) {
-        MetadataUtilities.setObjectID(this, id);
+        ImplementationHelper.setObjectID(this, id);
     }
 
     /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java
index 7e44563483..1f8415c212 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultResolution.java
@@ -31,7 +31,7 @@ import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.measure.ValueRange;
 import org.apache.sis.util.resources.Messages;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultUsage.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultUsage.java
index 3b8c1c19c0..35fbb3fd8a 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultUsage.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultUsage.java
@@ -30,8 +30,8 @@ import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.metadata.TitleProperty;
 import org.apache.sis.util.iso.Types;
 
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import static org.apache.sis.internal.metadata.ImplementationHelper.toDate;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.toMilliseconds;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java
index a86807dd38..f62c2a4a22 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultNominalResolution.java
@@ -23,7 +23,7 @@ import org.opengis.metadata.lineage.NominalResolution;
 import org.apache.sis.metadata.iso.ISOMetadata;
 import org.apache.sis.measure.ValueRange;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
index b0d7b23246..e8593c4818 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
@@ -41,7 +41,7 @@ import org.apache.sis.internal.jaxb.FilterByVersion;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.util.CollectionsExt;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java
index 447265b775..5febb30461 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractElement.java
@@ -45,7 +45,7 @@ import org.apache.sis.util.collection.CheckedContainer;
 import org.apache.sis.util.resources.Errors;
 
 import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.valueIfDefined;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.valueIfDefined;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java
index 89683a91d5..36a3a4f610 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultDimension.java
@@ -30,7 +30,7 @@ import org.apache.sis.metadata.TitleProperty;
 import org.apache.sis.measure.ValueRange;
 import org.apache.sis.util.ArgumentChecks;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java
index dd45fd670a..e5f08b356d 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGeometricObjects.java
@@ -24,7 +24,7 @@ import org.opengis.metadata.spatial.GeometricObjectType;
 import org.apache.sis.measure.ValueRange;
 import org.apache.sis.metadata.iso.ISOMetadata;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
index 818eff6437..3ba75ff47b 100644
--- 
a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
+++ 
b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/DefaultGridSpatialRepresentation.java
@@ -28,7 +28,7 @@ import org.opengis.metadata.spatial.Georeferenceable;
 import org.opengis.metadata.spatial.GridSpatialRepresentation;
 import org.apache.sis.measure.ValueRange;
 
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.ensurePositive;
+import static 
org.apache.sis.internal.metadata.ImplementationHelper.ensurePositive;
 
 
 /**
diff --git 
a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/MetadataUtilitiesTest.java
 
b/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/ImplementationHelperTest.java
similarity index 64%
rename from 
core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/MetadataUtilitiesTest.java
rename to 
core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/ImplementationHelperTest.java
index 593cf7befb..0ba376708c 100644
--- 
a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/MetadataUtilitiesTest.java
+++ 
b/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/ImplementationHelperTest.java
@@ -29,52 +29,52 @@ import static java.util.Locale.*;
 
 
 /**
- * Tests the {@link MetadataUtilities} class.
+ * Tests the {@link ImplementationHelper} class.
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 1.0
+ * @version 1.3
  * @since   0.3
  * @module
  */
-public final strictfp class MetadataUtilitiesTest extends TestCase {
+public final strictfp class ImplementationHelperTest extends TestCase {
     /**
-     * Tests {@link MetadataUtilities#toMilliseconds(Date)}.
+     * Tests {@link ImplementationHelper#toMilliseconds(Date)}.
      */
     @Test
     public void testToMilliseconds() {
-        assertEquals(1000,           MetadataUtilities.toMilliseconds(new 
Date(1000)));
-        assertEquals(Long.MIN_VALUE, MetadataUtilities.toMilliseconds(null));
+        assertEquals(1000,           ImplementationHelper.toMilliseconds(new 
Date(1000)));
+        assertEquals(Long.MIN_VALUE, 
ImplementationHelper.toMilliseconds(null));
     }
 
     /**
-     * Tests {@link MetadataUtilities#toDate(long)}.
+     * Tests {@link ImplementationHelper#toDate(long)}.
      */
     @Test
     public void testToDate() {
-        assertEquals(new Date(1000), MetadataUtilities.toDate(1000));
-        assertNull(MetadataUtilities.toDate(Long.MIN_VALUE));
+        assertEquals(new Date(1000), ImplementationHelper.toDate(1000));
+        assertNull(ImplementationHelper.toDate(Long.MIN_VALUE));
     }
 
     /**
-     * Tests the {@link MetadataUtilities#setFirst(Collection, Object)} method.
+     * Tests the {@link ImplementationHelper#setFirst(Collection, Object)} 
method.
      */
     @Test
     public void testSetFirst() {
-        Collection<Locale> locales = MetadataUtilities.setFirst(null, null);
+        Collection<Locale> locales = ImplementationHelper.setFirst(null, null);
         assertTrue(locales.isEmpty());
 
-        locales = MetadataUtilities.setFirst(null, GERMAN);
+        locales = ImplementationHelper.setFirst(null, GERMAN);
         assertArrayEquals(new Locale[] {GERMAN}, locales.toArray());
 
         locales = Arrays.asList(ENGLISH, JAPANESE, FRENCH);
-        assertSame("Shall set value in-place.", locales, 
MetadataUtilities.setFirst(locales, GERMAN));
+        assertSame("Shall set value in-place.", locales, 
ImplementationHelper.setFirst(locales, GERMAN));
         assertArrayEquals(new Locale[] {GERMAN, JAPANESE, FRENCH}, 
locales.toArray());
 
         locales = new LinkedHashSet<>(Arrays.asList(ENGLISH, JAPANESE, 
FRENCH));
-        locales = MetadataUtilities.setFirst(locales, ITALIAN);
+        locales = ImplementationHelper.setFirst(locales, ITALIAN);
         assertArrayEquals(new Locale[] {ITALIAN, JAPANESE, FRENCH}, 
locales.toArray());
 
-        locales = MetadataUtilities.setFirst(locales, null);
+        locales = ImplementationHelper.setFirst(locales, null);
         assertArrayEquals(new Locale[] {JAPANESE, FRENCH}, locales.toArray());
     }
 }
diff --git 
a/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
 
b/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
index af4efdc2c4..a7f8adda19 100644
--- 
a/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
+++ 
b/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
@@ -33,7 +33,7 @@ import org.junit.BeforeClass;
     org.apache.sis.internal.metadata.IdentifiersTest.class,
     org.apache.sis.internal.metadata.AxisNamesTest.class,
     org.apache.sis.internal.metadata.NameMeaningTest.class,
-    org.apache.sis.internal.metadata.MetadataUtilitiesTest.class,
+    org.apache.sis.internal.metadata.ImplementationHelperTest.class,
 
     // Classes using Java reflection.
     org.apache.sis.metadata.PropertyInformationTest.class,
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
index 99b5fe7bec..7a54c31593 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptorGroup.java
@@ -31,7 +31,7 @@ import org.opengis.parameter.GeneralParameterDescriptor;
 import org.opengis.parameter.ParameterNotFoundException;
 import org.opengis.parameter.InvalidParameterNameException;
 import org.apache.sis.internal.jaxb.referencing.CC_OperationParameterGroup;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.Resources;
 import org.apache.sis.referencing.IdentifiedObjects;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
@@ -483,7 +483,7 @@ public class DefaultParameterDescriptorGroup extends 
AbstractParameterDescriptor
             verifyNames(null, parameters);
             descriptors = asList(parameters);
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultParameterValue.class, 
"setDescriptors", "parameter");
+            
ImplementationHelper.propertyAlreadySet(DefaultParameterValue.class, 
"setDescriptors", "parameter");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
index 3317063778..88e41ac63b 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
@@ -44,7 +44,7 @@ import org.apache.sis.internal.jaxb.gml.Measure;
 import org.apache.sis.internal.jaxb.gml.MeasureList;
 import org.apache.sis.internal.referencing.Resources;
 import org.apache.sis.internal.referencing.WKTUtilities;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.util.Numerics;
 import org.apache.sis.internal.system.Loggers;
@@ -1219,7 +1219,7 @@ convert:            if (componentType != null) {
                 value = (T) xmlValue;
             }
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultParameterValue.class, 
"setXmlValue", "value");
+            
ImplementationHelper.propertyAlreadySet(DefaultParameterValue.class, 
"setXmlValue", "value");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
index eb65376078..96b5b103b9 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
@@ -35,7 +35,7 @@ import org.opengis.parameter.GeneralParameterValue;
 import org.opengis.parameter.GeneralParameterDescriptor;
 import org.opengis.parameter.ParameterNotFoundException;
 import org.opengis.parameter.InvalidParameterCardinalityException;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.Resources;
 import org.apache.sis.referencing.IdentifiedObjects;
 import org.apache.sis.util.LenientComparable;
@@ -568,7 +568,7 @@ scan:   for (final GeneralParameterValue param : 
actual.values()) {
         if (values == null) {
             values = new ParameterValueList(descriptor);
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultParameterValue.class, 
"setDescriptor", "group");
+            
ImplementationHelper.propertyAlreadySet(DefaultParameterValue.class, 
"setDescriptor", "group");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
index 449d24bbe7..a85cd35247 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
@@ -50,7 +50,7 @@ import org.apache.sis.internal.util.Strings;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.internal.metadata.NameToIdentifier;
 import org.apache.sis.internal.referencing.WKTUtilities;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.system.DefaultFactories;
 import org.apache.sis.io.wkt.FormattableObject;
 import org.apache.sis.io.wkt.Formatter;
@@ -1008,7 +1008,7 @@ public class AbstractIdentifiedObject extends 
FormattableObject implements Ident
                 }
             }
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractIdentifiedObject.class, 
"setIdentifier", "identifier");
+            
ImplementationHelper.propertyAlreadySet(AbstractIdentifiedObject.class, 
"setIdentifier", "identifier");
         }
     }
 
@@ -1127,7 +1127,7 @@ public class AbstractIdentifiedObject extends 
FormattableObject implements Ident
         if (remarks == null) {
             remarks = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractIdentifiedObject.class, 
"setRemarks", "remarks");
+            
ImplementationHelper.propertyAlreadySet(AbstractIdentifiedObject.class, 
"setRemarks", "remarks");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java
index 915c24b8e3..f41702368c 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java
@@ -30,7 +30,7 @@ import org.apache.sis.util.Workaround;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.iso.Types;
 import org.apache.sis.internal.jaxb.metadata.EX_Extent;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 
 import static org.apache.sis.util.Utilities.deepEquals;
 import static org.apache.sis.util.collection.Containers.property;
@@ -287,7 +287,7 @@ public class AbstractReferenceSystem extends 
AbstractIdentifiedObject implements
         if (domainOfValidity == null) {
             domainOfValidity = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractReferenceSystem.class, 
"setDomainOfValidity", "domainOfValidity");
+            
ImplementationHelper.propertyAlreadySet(AbstractReferenceSystem.class, 
"setDomainOfValidity", "domainOfValidity");
         }
     }
 
@@ -300,7 +300,7 @@ public class AbstractReferenceSystem extends 
AbstractIdentifiedObject implements
         if (scope == null) {
             scope = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractReferenceSystem.class, "setScope", 
"scope");
+            
ImplementationHelper.propertyAlreadySet(AbstractReferenceSystem.class, 
"setScope", "scope");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
index 078bcf316e..b0cedf7a54 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
@@ -34,7 +34,7 @@ import org.opengis.referencing.crs.SingleCRS;
 import org.opengis.referencing.crs.GeneralDerivedCRS;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.internal.referencing.ReferencingUtilities;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.referencing.AbstractReferenceSystem;
 import org.apache.sis.referencing.IdentifiedObjects;
 import org.apache.sis.referencing.NamedIdentifier;
@@ -557,7 +557,7 @@ public class AbstractCRS extends AbstractReferenceSystem 
implements CoordinateRe
             if (name == null) {
                 name = 
String.valueOf(ReferencingUtilities.toPropertyName(CoordinateSystem.class, 
cs.getClass()));
             }
-            MetadataUtilities.propertyAlreadySet(AbstractCRS.class, 
"setCoordinateSystem", name);
+            ImplementationHelper.propertyAlreadySet(AbstractCRS.class, 
"setCoordinateSystem", name);
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
index 5c8fdb508f..def7306df6 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
@@ -37,7 +37,7 @@ import org.opengis.geometry.MismatchedDimensionException;
 import org.apache.sis.referencing.operation.DefaultConversion;
 import org.apache.sis.internal.jaxb.referencing.CC_Conversion;
 import org.apache.sis.internal.referencing.ReferencingFactoryContainer;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.metadata.Identifiers;
 import org.apache.sis.internal.system.DefaultFactories;
 import org.apache.sis.internal.system.Semaphores;
@@ -297,7 +297,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> 
extends AbstractCRS impl
         if (conversionFromBase == null) {
             conversionFromBase = conversion;
         } else {
-            MetadataUtilities.propertyAlreadySet(AbstractDerivedCRS.class, 
"setConversionFromBase", "conversion");
+            ImplementationHelper.propertyAlreadySet(AbstractDerivedCRS.class, 
"setConversionFromBase", "conversion");
         }
     }
 
@@ -320,7 +320,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> 
extends AbstractCRS impl
             final SingleCRS previous = 
CC_Conversion.setBaseCRS(conversionFromBase, baseCRS);
             if (previous != null) {
                 CC_Conversion.setBaseCRS(conversionFromBase, previous);   // 
Temporary location.
-                MetadataUtilities.propertyAlreadySet(AbstractDerivedCRS.class, 
"setBaseCRS", name);
+                
ImplementationHelper.propertyAlreadySet(AbstractDerivedCRS.class, "setBaseCRS", 
name);
             }
         } else {
             throw new 
IllegalStateException(Errors.format(Errors.Keys.MissingComponentInElement_2, 
getInterface(), "conversion"));
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
index 35eb3b4092..cb5e1d4e7d 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
@@ -26,7 +26,7 @@ import org.opengis.referencing.crs.EngineeringCRS;
 import org.opengis.referencing.datum.EngineeringDatum;
 import org.apache.sis.referencing.cs.*;
 import org.apache.sis.referencing.AbstractReferenceSystem;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.jaxb.referencing.CS_CoordinateSystem;
 import org.apache.sis.io.wkt.Formatter;
@@ -286,7 +286,7 @@ public class DefaultEngineeringCRS extends AbstractCRS 
implements EngineeringCRS
         if (datum == null) {
             datum = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultEngineeringCRS.class, 
"setDatum", "engineeringDatum");
+            
ImplementationHelper.propertyAlreadySet(DefaultEngineeringCRS.class, 
"setDatum", "engineeringDatum");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
index 9aaa2c994e..9291d7905d 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
@@ -33,7 +33,7 @@ import org.opengis.referencing.datum.GeodeticDatum;
 import org.opengis.referencing.datum.PrimeMeridian;
 import org.apache.sis.internal.referencing.Legacy;
 import org.apache.sis.internal.referencing.AxisDirections;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.referencing.WKTUtilities;
 import org.apache.sis.internal.referencing.ReferencingUtilities;
@@ -302,7 +302,7 @@ class DefaultGeodeticCRS extends AbstractCRS implements 
GeodeticCRS { // If made
         if (datum == null) {
             datum = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultGeodeticCRS.class, 
"setDatum", "geodeticDatum");
+            ImplementationHelper.propertyAlreadySet(DefaultGeodeticCRS.class, 
"setDatum", "geodeticDatum");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
index 265e9ea5ec..b04f30e40a 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
@@ -26,7 +26,7 @@ import org.opengis.referencing.crs.ImageCRS;
 import org.opengis.referencing.cs.CartesianCS;
 import org.opengis.referencing.datum.ImageDatum;
 import org.apache.sis.internal.referencing.WKTKeywords;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.referencing.cs.AxesConvention;
 import org.apache.sis.referencing.AbstractReferenceSystem;
 import org.apache.sis.io.wkt.Formatter;
@@ -284,7 +284,7 @@ public class DefaultImageCRS extends AbstractCRS implements 
ImageCRS {
         if (datum == null) {
             datum = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultImageCRS.class, 
"setDatum", "imageDatum");
+            ImplementationHelper.propertyAlreadySet(DefaultImageCRS.class, 
"setDatum", "imageDatum");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
index 8e837673c8..2675146238 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultParametricCRS.java
@@ -21,7 +21,7 @@ import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import org.opengis.referencing.cs.CoordinateSystem;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.referencing.cs.AxesConvention;
 import org.apache.sis.io.wkt.Formatter;
@@ -285,7 +285,7 @@ public class DefaultParametricCRS extends AbstractCRS 
implements ParametricCRS {
         if (datum == null) {
             datum = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultParametricCRS.class, 
"setDatum", "parametricDatum");
+            
ImplementationHelper.propertyAlreadySet(DefaultParametricCRS.class, "setDatum", 
"parametricDatum");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
index b1f110f9b7..a903c556cf 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultTemporalCRS.java
@@ -34,7 +34,7 @@ import org.opengis.referencing.crs.TemporalCRS;
 import org.opengis.referencing.datum.TemporalDatum;
 import org.apache.sis.referencing.cs.AxesConvention;
 import org.apache.sis.referencing.AbstractReferenceSystem;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.io.wkt.Formatter;
 import org.apache.sis.measure.Units;
@@ -507,7 +507,7 @@ public class DefaultTemporalCRS extends AbstractCRS 
implements TemporalCRS {
                 initializeConverter();
             }
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultVerticalCRS.class, 
"setDatum", "temporalDatum");
+            ImplementationHelper.propertyAlreadySet(DefaultVerticalCRS.class, 
"setDatum", "temporalDatum");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
index 159aa7475f..aab1fccef9 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultVerticalCRS.java
@@ -27,7 +27,7 @@ import org.opengis.referencing.datum.VerticalDatum;
 import org.apache.sis.referencing.cs.AxesConvention;
 import org.apache.sis.referencing.AbstractReferenceSystem;
 import org.apache.sis.internal.referencing.WKTKeywords;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.io.wkt.Formatter;
 
 import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
@@ -279,7 +279,7 @@ public class DefaultVerticalCRS extends AbstractCRS 
implements VerticalCRS {
         if (datum == null) {
             datum = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultVerticalCRS.class, 
"setDatum", "verticalDatum");
+            ImplementationHelper.propertyAlreadySet(DefaultVerticalCRS.class, 
"setDatum", "verticalDatum");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
index 97c28a504a..337cbdd66c 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
@@ -40,7 +40,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.apache.sis.internal.metadata.AxisNames;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.referencing.AxisDirections;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.referencing.AbstractIdentifiedObject;
 import org.apache.sis.referencing.IdentifiedObjects;
 import org.apache.sis.measure.Longitude;
@@ -898,7 +898,7 @@ public class DefaultCoordinateSystemAxis extends 
AbstractIdentifiedObject implem
         if (abbreviation == null) {
             abbreviation = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setAbbreviation", "abbreviation");
+            
ImplementationHelper.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setAbbreviation", "abbreviation");
         }
     }
 
@@ -911,7 +911,7 @@ public class DefaultCoordinateSystemAxis extends 
AbstractIdentifiedObject implem
         if (direction == null) {
             direction = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setDirection", "direction");
+            
ImplementationHelper.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setDirection", "direction");
         }
     }
 
@@ -924,7 +924,7 @@ public class DefaultCoordinateSystemAxis extends 
AbstractIdentifiedObject implem
         if (unit == null) {
             unit = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setUnit", "unit");
+            
ImplementationHelper.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setUnit", "unit");
         }
     }
 
@@ -937,7 +937,7 @@ public class DefaultCoordinateSystemAxis extends 
AbstractIdentifiedObject implem
         if (rangeMeaning == null) {
             rangeMeaning = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setRangeMeaning", "rangeMeaning");
+            
ImplementationHelper.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setRangeMeaning", "rangeMeaning");
         }
     }
 
@@ -963,7 +963,7 @@ public class DefaultCoordinateSystemAxis extends 
AbstractIdentifiedObject implem
                 outOfRange("minimumValue", value);
             }
         } else {
-            
MetadataUtilities.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setMinimum", "minimumValue");
+            
ImplementationHelper.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setMinimum", "minimumValue");
         }
     }
 
@@ -989,7 +989,7 @@ public class DefaultCoordinateSystemAxis extends 
AbstractIdentifiedObject implem
                 outOfRange("maximumValue", value);
             }
         } else {
-            
MetadataUtilities.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setMaximum", "maximumValue");
+            
ImplementationHelper.propertyAlreadySet(DefaultCoordinateSystemAxis.class, 
"setMaximum", "maximumValue");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java
index 95368262d2..ce4793a909 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/AbstractDatum.java
@@ -18,6 +18,7 @@ package org.apache.sis.referencing.datum;
 
 import java.util.Date;
 import java.util.Map;
+import java.util.Objects;
 import javax.xml.bind.annotation.XmlType;
 import javax.xml.bind.annotation.XmlSchemaType;
 import javax.xml.bind.annotation.XmlElement;
@@ -36,7 +37,7 @@ import org.apache.sis.util.CharSequences;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.internal.metadata.Identifiers;
 import org.apache.sis.internal.metadata.NameToIdentifier;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.metadata.iso.citation.Citations;
 import org.apache.sis.io.wkt.ElementKind;
 import org.apache.sis.io.wkt.Formatter;
@@ -44,9 +45,6 @@ import org.apache.sis.io.wkt.Formatter;
 import static org.apache.sis.util.Utilities.deepEquals;
 import static org.apache.sis.util.collection.Containers.property;
 
-// Branch-dependent imports
-import java.util.Objects;
-
 
 /**
  * Specifies the relationship of a {@linkplain 
org.apache.sis.referencing.cs.AbstractCS Coordinate System} to the earth.
@@ -198,7 +196,7 @@ public class AbstractDatum extends AbstractIdentifiedObject 
implements Datum {
      */
     public AbstractDatum(final Map<String,?> properties) {
         super(properties);
-        realizationEpoch = 
MetadataUtilities.toMilliseconds(property(properties, REALIZATION_EPOCH_KEY, 
Date.class));
+        realizationEpoch = 
ImplementationHelper.toMilliseconds(property(properties, REALIZATION_EPOCH_KEY, 
Date.class));
         domainOfValidity = property(properties, DOMAIN_OF_VALIDITY_KEY, 
Extent.class);
         anchorDefinition = Types.toInternationalString(properties, 
ANCHOR_POINT_KEY);
         scope            = Types.toInternationalString(properties, SCOPE_KEY);
@@ -215,7 +213,7 @@ public class AbstractDatum extends AbstractIdentifiedObject 
implements Datum {
      */
     protected AbstractDatum(final Datum datum) {
         super(datum);
-        realizationEpoch = 
MetadataUtilities.toMilliseconds(datum.getRealizationEpoch());
+        realizationEpoch = 
ImplementationHelper.toMilliseconds(datum.getRealizationEpoch());
         domainOfValidity = datum.getDomainOfValidity();
         scope            = datum.getScope();
         anchorDefinition = datum.getAnchorPoint();
@@ -303,7 +301,7 @@ public class AbstractDatum extends AbstractIdentifiedObject 
implements Datum {
     @XmlSchemaType(name = "date")
     @XmlElement(name = "realizationEpoch")
     public Date getRealizationEpoch() {
-        return MetadataUtilities.toDate(realizationEpoch);
+        return ImplementationHelper.toDate(realizationEpoch);
     }
 
     /**
@@ -507,7 +505,7 @@ public class AbstractDatum extends AbstractIdentifiedObject 
implements Datum {
         if (anchorDefinition == null) {
             anchorDefinition = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(AbstractDatum.class, 
"setAnchorPoint", "anchorDefinition");
+            ImplementationHelper.propertyAlreadySet(AbstractDatum.class, 
"setAnchorPoint", "anchorDefinition");
         }
     }
 
@@ -520,7 +518,7 @@ public class AbstractDatum extends AbstractIdentifiedObject 
implements Datum {
         if (realizationEpoch == Long.MIN_VALUE) {
             realizationEpoch = value.getTime();
         } else {
-            MetadataUtilities.propertyAlreadySet(AbstractDatum.class, 
"setRealizationEpoch", "realizationEpoch");
+            ImplementationHelper.propertyAlreadySet(AbstractDatum.class, 
"setRealizationEpoch", "realizationEpoch");
         }
     }
 
@@ -533,7 +531,7 @@ public class AbstractDatum extends AbstractIdentifiedObject 
implements Datum {
         if (domainOfValidity == null) {
             domainOfValidity = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(AbstractDatum.class, 
"setDomainOfValidity", "domainOfValidity");
+            ImplementationHelper.propertyAlreadySet(AbstractDatum.class, 
"setDomainOfValidity", "domainOfValidity");
         }
     }
 
@@ -546,7 +544,7 @@ public class AbstractDatum extends AbstractIdentifiedObject 
implements Datum {
         if (scope == null) {
             scope = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(AbstractDatum.class, 
"setScope", "scope");
+            ImplementationHelper.propertyAlreadySet(AbstractDatum.class, 
"setScope", "scope");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
index 3d48028d81..2a3cc533eb 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultEllipsoid.java
@@ -33,7 +33,7 @@ import org.apache.sis.internal.util.Numerics;
 import org.apache.sis.internal.util.DoubleDouble;
 import org.apache.sis.internal.jaxb.gml.Measure;
 import org.apache.sis.internal.jaxb.referencing.SecondDefiningParameter;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.Formulas;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.referencing.IdentifiedObjects;
@@ -762,7 +762,7 @@ public class DefaultEllipsoid extends 
AbstractIdentifiedObject implements Ellips
             unit = measure.getUnit(Length.class);
             harmonizeAxisUnits(uom);
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultEllipsoid.class, 
"setSemiMajorAxisMeasure", "semiMajorAxis");
+            ImplementationHelper.propertyAlreadySet(DefaultEllipsoid.class, 
"setSemiMajorAxisMeasure", "semiMajorAxis");
         }
     }
 
@@ -819,7 +819,7 @@ public class DefaultEllipsoid extends 
AbstractIdentifiedObject implements Ellips
             }
         }
         if (duplicate) {
-            MetadataUtilities.propertyAlreadySet(DefaultEllipsoid.class,
+            ImplementationHelper.propertyAlreadySet(DefaultEllipsoid.class,
                     "setSecondDefiningParameter", "secondDefiningParameter");
         }
     }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
index 35d1271472..e480d21041 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
@@ -40,7 +40,7 @@ import 
org.apache.sis.referencing.operation.matrix.NoninvertibleMatrixException;
 import org.apache.sis.metadata.iso.extent.Extents;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.metadata.NameToIdentifier;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.AnnotatedMatrix;
 import org.apache.sis.internal.referencing.CoordinateOperations;
 import org.apache.sis.internal.referencing.ExtentSelector;
@@ -723,7 +723,7 @@ public class DefaultGeodeticDatum extends AbstractDatum 
implements GeodeticDatum
         if (ellipsoid == null) {
             ellipsoid = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultGeodeticDatum.class, 
"setEllipsoid", "ellipsoid");
+            
ImplementationHelper.propertyAlreadySet(DefaultGeodeticDatum.class, 
"setEllipsoid", "ellipsoid");
         }
     }
 
@@ -736,7 +736,7 @@ public class DefaultGeodeticDatum extends AbstractDatum 
implements GeodeticDatum
         if (primeMeridian == null) {
             primeMeridian = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultGeodeticDatum.class, 
"setPrimeMeridian", "primeMeridian");
+            
ImplementationHelper.propertyAlreadySet(DefaultGeodeticDatum.class, 
"setPrimeMeridian", "primeMeridian");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java
index ddae660833..c0dc7981f2 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultImageDatum.java
@@ -27,7 +27,7 @@ import org.opengis.metadata.Identifier;
 import org.opengis.referencing.datum.ImageDatum;
 import org.opengis.referencing.datum.PixelInCell;
 import org.apache.sis.internal.referencing.WKTKeywords;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.io.wkt.Formatter;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.util.ComparisonMode;
@@ -287,7 +287,7 @@ public class DefaultImageDatum extends AbstractDatum 
implements ImageDatum {
         if (pixelInCell == null) {
             pixelInCell = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultImageDatum.class, 
"setPixelInCell", "pixelInCell");
+            ImplementationHelper.propertyAlreadySet(DefaultImageDatum.class, 
"setPixelInCell", "pixelInCell");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
index c0294a38d9..53a628d38b 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
@@ -32,7 +32,7 @@ import org.apache.sis.referencing.AbstractIdentifiedObject;
 import org.apache.sis.internal.referencing.Formulas;
 import org.apache.sis.internal.referencing.WKTUtilities;
 import org.apache.sis.internal.referencing.ReferencingUtilities;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.jaxb.gml.Measure;
 import org.apache.sis.internal.util.Numerics;
@@ -444,7 +444,7 @@ public class DefaultPrimeMeridian extends 
AbstractIdentifiedObject implements Pr
                 }
             }
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultPrimeMeridian.class, 
"setGreenwichMeasure", "greenwichLongitude");
+            
ImplementationHelper.propertyAlreadySet(DefaultPrimeMeridian.class, 
"setGreenwichMeasure", "greenwichLongitude");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
index 9e7f2ce66e..16f834cc24 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultTemporalDatum.java
@@ -30,7 +30,7 @@ import org.opengis.metadata.Identifier;
 import org.opengis.referencing.datum.TemporalDatum;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.jaxb.gml.UniversalTimeAdapter;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.io.wkt.Formatter;
 import org.apache.sis.io.wkt.FormattableObject;
@@ -176,7 +176,7 @@ public class DefaultTemporalDatum extends AbstractDatum 
implements TemporalDatum
      */
     protected DefaultTemporalDatum(final TemporalDatum datum) {
         super(datum);
-        origin = MetadataUtilities.toMilliseconds(datum.getOrigin());
+        origin = ImplementationHelper.toMilliseconds(datum.getOrigin());
     }
 
     /**
@@ -220,7 +220,7 @@ public class DefaultTemporalDatum extends AbstractDatum 
implements TemporalDatum
     @XmlElement(name = "origin", required = true)
     @XmlJavaTypeAdapter(UniversalTimeAdapter.class)
     public Date getOrigin() {
-        return MetadataUtilities.toDate(origin);
+        return ImplementationHelper.toDate(origin);
     }
 
     /**
@@ -339,7 +339,7 @@ public class DefaultTemporalDatum extends AbstractDatum 
implements TemporalDatum
         if (origin == Long.MIN_VALUE) {
             origin = value.getTime();
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultTemporalDatum.class, 
"setOrigin", "origin");
+            
ImplementationHelper.propertyAlreadySet(DefaultTemporalDatum.class, 
"setOrigin", "origin");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
index 919af8b2c0..c684d2c3f5 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
@@ -32,7 +32,7 @@ import org.apache.sis.internal.jaxb.Context;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.referencing.WKTKeywords;
 import org.apache.sis.internal.referencing.VerticalDatumTypes;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 
 import static org.apache.sis.util.ArgumentChecks.ensureNonNull;
 
@@ -361,7 +361,7 @@ public class DefaultVerticalDatum extends AbstractDatum 
implements VerticalDatum
         if (type == null) {
             type = t;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultVerticalDatum.class, 
"setTypeElement", "verticalDatumType");
+            
ImplementationHelper.propertyAlreadySet(DefaultVerticalDatum.class, 
"setTypeElement", "verticalDatumType");
         }
     }
 }
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
index b93fb86c0b..589e5f7781 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
@@ -66,7 +66,7 @@ import 
org.apache.sis.internal.referencing.ReferencingUtilities;
 import org.apache.sis.internal.referencing.Resources;
 import org.apache.sis.internal.referencing.WKTUtilities;
 import org.apache.sis.internal.referencing.WKTKeywords;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.util.Constants;
 import org.apache.sis.internal.util.CollectionsExt;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
@@ -1123,7 +1123,7 @@ check:      for (int isTarget=0; ; isTarget++) {        
// 0 == source check; 1
         if (sourceCRS == null) {
             sourceCRS = crs;
         } else if (!sourceCRS.equals(crs)) {                    // Could be 
defined by ConcatenatedOperation.
-            
MetadataUtilities.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setSource", "sourceCRS");
+            
ImplementationHelper.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setSource", "sourceCRS");
         }
     }
 
@@ -1142,7 +1142,7 @@ check:      for (int isTarget=0; ; isTarget++) {        
// 0 == source check; 1
         if (targetCRS == null) {
             targetCRS = crs;
         } else if (!targetCRS.equals(crs)) {                    // Could be 
defined by ConcatenatedOperation.
-            
MetadataUtilities.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setTarget", "targetCRS");
+            
ImplementationHelper.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setTarget", "targetCRS");
         }
     }
 
@@ -1163,7 +1163,7 @@ check:      for (int isTarget=0; ; isTarget++) {        
// 0 == source check; 1
         if (coordinateOperationAccuracy == null) {
             coordinateOperationAccuracy = UnmodifiableArrayList.wrap(values);
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setAccuracy", "coordinateOperationAccuracy");
+            
ImplementationHelper.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setAccuracy", "coordinateOperationAccuracy");
         }
     }
 
@@ -1176,7 +1176,7 @@ check:      for (int isTarget=0; ; isTarget++) {        
// 0 == source check; 1
         if (operationVersion == null) {
             operationVersion = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setOperationVersion", "operationVersion");
+            
ImplementationHelper.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setOperationVersion", "operationVersion");
         }
     }
 
@@ -1189,7 +1189,7 @@ check:      for (int isTarget=0; ; isTarget++) {        
// 0 == source check; 1
         if (domainOfValidity == null) {
             domainOfValidity = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setDomainOfValidity", "domainOfValidity");
+            
ImplementationHelper.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setDomainOfValidity", "domainOfValidity");
         }
     }
 
@@ -1202,7 +1202,7 @@ check:      for (int isTarget=0; ; isTarget++) {        
// 0 == source check; 1
         if (scope == null) {
             scope = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setScope", "scope");
+            
ImplementationHelper.propertyAlreadySet(AbstractCoordinateOperation.class, 
"setScope", "scope");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
index ad0735e7f1..7be7a93f96 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
@@ -46,7 +46,7 @@ import 
org.apache.sis.internal.jaxb.referencing.CC_OperationMethod;
 import org.apache.sis.internal.jaxb.Context;
 import org.apache.sis.internal.referencing.CoordinateOperations;
 import org.apache.sis.internal.referencing.ReferencingUtilities;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.internal.system.DefaultFactories;
 import org.apache.sis.internal.metadata.Identifiers;
 import org.apache.sis.util.collection.Containers;
@@ -371,7 +371,7 @@ class AbstractSingleOperation extends 
AbstractCoordinateOperation implements Sin
         if (method == null) {
             method = value;
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractSingleOperation.class, 
"setMethod", "method");
+            
ImplementationHelper.propertyAlreadySet(AbstractSingleOperation.class, 
"setMethod", "method");
         }
     }
 
@@ -445,7 +445,7 @@ class AbstractSingleOperation extends 
AbstractCoordinateOperation implements Sin
             CC_OperationMethod.store(values, parameters.values(), 
replacements);
             parameters = Parameters.unmodifiable(parameters);
         } else {
-            
MetadataUtilities.propertyAlreadySet(AbstractSingleOperation.class, 
"setParameters", "parameterValue");
+            
ImplementationHelper.propertyAlreadySet(AbstractSingleOperation.class, 
"setParameters", "parameterValue");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
index c3ff5bc8a5..1232c0aad6 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
@@ -50,7 +50,7 @@ import 
org.apache.sis.internal.jaxb.referencing.CC_OperationMethod;
 import org.apache.sis.internal.referencing.NilReferencingObject;
 import org.apache.sis.internal.referencing.Resources;
 import org.apache.sis.internal.metadata.Identifiers;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.parameter.DefaultParameterDescriptorGroup;
 import org.apache.sis.parameter.Parameterized;
 import org.apache.sis.referencing.NamedIdentifier;
@@ -835,7 +835,7 @@ public class DefaultOperationMethod extends 
AbstractIdentifiedObject implements
         if (sourceDimensions == null) {
             sourceDimensions = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultOperationMethod.class, 
"setSourceDimensions", "sourceDimensions");
+            
ImplementationHelper.propertyAlreadySet(DefaultOperationMethod.class, 
"setSourceDimensions", "sourceDimensions");
         }
     }
 
@@ -848,7 +848,7 @@ public class DefaultOperationMethod extends 
AbstractIdentifiedObject implements
         if (targetDimensions == null) {
             targetDimensions = value;
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultOperationMethod.class, 
"setTargetDimensions", "targetDimensions");
+            
ImplementationHelper.propertyAlreadySet(DefaultOperationMethod.class, 
"setTargetDimensions", "targetDimensions");
         }
     }
 
@@ -882,7 +882,7 @@ public class DefaultOperationMethod extends 
AbstractIdentifiedObject implements
             formula = (formula == null) ? new DefaultFormula(citation)
                       : new DefaultFormula(formula.getFormula(), citation);
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultOperationMethod.class, 
"setFormulaCitation", "formulaCitation");
+            
ImplementationHelper.propertyAlreadySet(DefaultOperationMethod.class, 
"setFormulaCitation", "formulaCitation");
         }
     }
 
@@ -894,7 +894,7 @@ public class DefaultOperationMethod extends 
AbstractIdentifiedObject implements
             formula = (formula == null) ? new DefaultFormula(description)
                       : new DefaultFormula(new 
SimpleInternationalString(description), formula.getCitation());
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultOperationMethod.class, 
"setFormulaDescription", "formula");
+            
ImplementationHelper.propertyAlreadySet(DefaultOperationMethod.class, 
"setFormulaDescription", "formula");
         }
     }
 
@@ -959,7 +959,7 @@ public class DefaultOperationMethod extends 
AbstractIdentifiedObject implements
         if (parameters == null) {
             parameters = CC_OperationMethod.group(super.getName(), 
descriptors);
         } else {
-            MetadataUtilities.propertyAlreadySet(DefaultOperationMethod.class, 
"setDescriptors", "parameter");
+            
ImplementationHelper.propertyAlreadySet(DefaultOperationMethod.class, 
"setDescriptors", "parameter");
         }
     }
 
diff --git 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
index 06ace2ca1f..58d86fbb6b 100644
--- 
a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
+++ 
b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
@@ -30,7 +30,7 @@ import org.opengis.referencing.crs.CompoundCRS;
 import org.apache.sis.referencing.operation.transform.MathTransforms;
 import org.apache.sis.referencing.operation.transform.PassThroughTransform;
 import org.apache.sis.internal.referencing.ReferencingUtilities;
-import org.apache.sis.internal.metadata.MetadataUtilities;
+import org.apache.sis.internal.metadata.ImplementationHelper;
 import org.apache.sis.util.UnsupportedImplementationException;
 import org.apache.sis.util.ArgumentChecks;
 import org.apache.sis.util.ComparisonMode;
@@ -315,7 +315,7 @@ public class DefaultPassThroughOperation extends 
AbstractCoordinateOperation imp
         if (operation == null) {
             operation = op;
         } else {
-            
MetadataUtilities.propertyAlreadySet(DefaultPassThroughOperation.class, 
"setOperation", "coordOperation");
+            
ImplementationHelper.propertyAlreadySet(DefaultPassThroughOperation.class, 
"setOperation", "coordOperation");
         }
     }
 

Reply via email to