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

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

commit 9048ae55d3d4015181edbec6d937e354a88a546e
Merge: 6cbd4e47c3 069553e76c
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Thu Mar 7 18:42:19 2024 +0100

    Merge branch 'geoapi-4.0' into geoapi-3.1.
    https://issues.apache.org/jira/browse/SIS-596

 endorsed/build.gradle.kts                          |    6 +-
 .../apache/sis/cloud/aws/s3/ClientFileSystem.java  |    2 +-
 .../main/org/apache/sis/console/AboutCommand.java  |    4 +-
 .../main/org/apache/sis/console/Command.java       |    2 +-
 .../main/org/apache/sis/console/CommandRunner.java |    2 +-
 .../apache/sis/console/FormattedOutputCommand.java |    2 +-
 .../org/apache/sis/console/IdentifierCommand.java  |    2 +-
 .../apache/sis/console/ResourcesDownloader.java    |    2 +-
 .../org/apache/sis/console/TransformCommand.java   |    8 +-
 .../org.apache.sis.feature/main/module-info.java   |   13 +-
 .../org/apache/sis/coverage/CoverageCombiner.java  |    6 +-
 .../org/apache/sis/coverage/SampleDimension.java   |    2 +-
 .../org/apache/sis/coverage/SampleRangeFormat.java |    2 +-
 .../coverage/grid/BandAggregateGridCoverage.java   |    4 +-
 .../coverage/grid/CoordinateOperationFinder.java   |    6 +-
 .../apache/sis/coverage/grid/DefaultEvaluator.java |    8 +-
 .../sis/coverage/grid/DimensionAppender.java       |    2 +-
 .../apache/sis/coverage/grid/DimensionReducer.java |    2 +-
 .../sis/coverage/grid/DimensionalityReduction.java |    2 +-
 .../coverage/grid/FractionalGridCoordinates.java   |    2 +-
 .../org/apache/sis/coverage/grid/GridCoverage.java |    4 +-
 .../apache/sis/coverage/grid/GridCoverage2D.java   |    4 +-
 .../sis/coverage/grid/GridCoverageBuilder.java     |   10 +-
 .../sis/coverage/grid/GridCoverageProcessor.java   |    8 +-
 .../apache/sis/coverage/grid/GridDerivation.java   |    2 +-
 .../org/apache/sis/coverage/grid/GridExtent.java   |   10 +-
 .../apache/sis/coverage/grid/GridExtentCRS.java    |    2 +-
 .../org/apache/sis/coverage/grid/GridGeometry.java |   18 +-
 .../apache/sis/coverage/grid/ImageRenderer.java    |   12 +-
 .../sis/coverage/grid/ReducedGridCoverage.java     |    2 +-
 .../sis/coverage/grid/ResampledGridCoverage.java   |    6 +-
 .../apache/sis/coverage/grid/SliceGeometry.java    |    8 +-
 .../sis/coverage/grid/j2d/BatchComputedImage.java  |  213 ----
 .../sis/coverage/grid/j2d/ColorModelBuilder.java   |  701 --------------
 .../sis/coverage/grid/j2d/ColorModelFactory.java   |  864 -----------------
 .../sis/coverage/grid/j2d/ColorModelType.java      |  106 --
 .../sis/coverage/grid/j2d/ColorsForRange.java      |  291 ------
 .../sis/coverage/grid/j2d/DeferredProperty.java    |  124 ---
 .../apache/sis/coverage/grid/j2d/FillValues.java   |  208 ----
 .../apache/sis/coverage/grid/j2d/ImageLayout.java  |  438 ---------
 .../sis/coverage/grid/j2d/ImageUtilities.java      |  673 -------------
 .../grid/j2d/MultiBandsIndexColorModel.java        |  314 ------
 .../sis/coverage/grid/j2d/ObservableImage.java     |  288 ------
 .../sis/coverage/grid/j2d/RasterFactory.java       |  314 ------
 .../sis/coverage/grid/j2d/SampleModelFactory.java  |  291 ------
 .../sis/coverage/grid/j2d/ScaledColorModel.java    |  162 ----
 .../sis/coverage/grid/j2d/ScaledColorSpace.java    |  223 -----
 .../sis/coverage/grid/j2d/TileErrorHandler.java    |  120 ---
 .../sis/coverage/grid/j2d/TileOpExecutor.java      | 1019 --------------------
 .../sis/coverage/grid/j2d/TilePlaceholder.java     |  404 --------
 .../apache/sis/coverage/grid/j2d/TiledImage.java   |  274 ------
 .../sis/coverage/grid/j2d/WritableTiledImage.java  |  217 -----
 .../apache/sis/coverage/grid/j2d/package-info.java |   31 -
 .../sis/coverage/internal/CommonDomainFinder.java  |  374 -------
 .../sis/coverage/internal/MultiSourceArgument.java |  619 ------------
 .../sis/coverage/internal/RangeArgument.java       |  395 --------
 .../sis/coverage/internal/SampleDimensions.java    |  179 ----
 .../apache/sis/coverage/internal/package-info.java |    2 +-
 .../sis/coverage/privy/BatchComputedImage.java     |  213 ++++
 .../sis/coverage/privy/ColorModelBuilder.java      |  701 ++++++++++++++
 .../sis/coverage/privy/ColorModelFactory.java      |  864 +++++++++++++++++
 .../apache/sis/coverage/privy/ColorModelType.java  |  106 ++
 .../apache/sis/coverage/privy/ColorsForRange.java  |  291 ++++++
 .../sis/coverage/privy/CommonDomainFinder.java     |  374 +++++++
 .../sis/coverage/privy/DeferredProperty.java       |  124 +++
 .../org/apache/sis/coverage/privy/FillValues.java  |  208 ++++
 .../org/apache/sis/coverage/privy/ImageLayout.java |  438 +++++++++
 .../apache/sis/coverage/privy/ImageUtilities.java  |  673 +++++++++++++
 .../coverage/privy/MultiBandsIndexColorModel.java  |  314 ++++++
 .../sis/coverage/privy/MultiSourceArgument.java    |  619 ++++++++++++
 .../apache/sis/coverage/privy/ObservableImage.java |  288 ++++++
 .../apache/sis/coverage/privy/RangeArgument.java   |  395 ++++++++
 .../apache/sis/coverage/privy/RasterFactory.java   |  314 ++++++
 .../sis/coverage/privy/SampleDimensions.java       |  179 ++++
 .../sis/coverage/privy/SampleModelFactory.java     |  291 ++++++
 .../sis/coverage/privy/ScaledColorModel.java       |  162 ++++
 .../sis/coverage/privy/ScaledColorSpace.java       |  223 +++++
 .../sis/coverage/privy/TileErrorHandler.java       |  120 +++
 .../apache/sis/coverage/privy/TileOpExecutor.java  | 1019 ++++++++++++++++++++
 .../apache/sis/coverage/privy/TilePlaceholder.java |  404 ++++++++
 .../org/apache/sis/coverage/privy/TiledImage.java  |  274 ++++++
 .../sis/coverage/privy/WritableTiledImage.java     |  217 +++++
 .../apache/sis/coverage/privy/package-info.java    |   30 +
 .../org/apache/sis/feature/AbstractFeature.java    |    2 +-
 .../org/apache/sis/feature/CharacteristicMap.java  |    8 +-
 .../apache/sis/feature/CharacteristicTypeMap.java  |    4 +-
 .../apache/sis/feature/DefaultAssociationRole.java |    2 +-
 .../org/apache/sis/feature/DefaultFeatureType.java |    4 +-
 .../main/org/apache/sis/feature/DenseFeature.java  |    4 +-
 .../org/apache/sis/feature/EnvelopeOperation.java  |    6 +-
 .../apache/sis/feature/ExpressionOperation.java    |    6 +-
 .../main/org/apache/sis/feature/FeatureFormat.java |    4 +-
 .../org/apache/sis/feature/FeatureOperations.java  |    2 +-
 .../sis/feature/GroupAsPolylineOperation.java      |    4 +-
 .../main/org/apache/sis/feature/LinkOperation.java |    2 +-
 .../apache/sis/feature/MultiValuedAssociation.java |    2 +-
 .../apache/sis/feature/MultiValuedAttribute.java   |    4 +-
 .../org/apache/sis/feature/NamedFeatureType.java   |    2 +-
 .../org/apache/sis/feature/SingletonAttribute.java |    2 +-
 .../main/org/apache/sis/feature/SparseFeature.java |    4 +-
 .../apache/sis/feature/StringJoinOperation.java    |    6 +-
 .../sis/feature/builder/AttributeTypeBuilder.java  |    8 +-
 .../sis/feature/builder/FeatureTypeBuilder.java    |    2 +-
 .../sis/feature/internal/AttributeConvention.java  |  444 ---------
 .../sis/feature/internal/FeatureExpression.java    |  128 ---
 .../sis/feature/internal/FeatureUtilities.java     |   92 --
 .../apache/sis/feature/internal/InstantList.java   |   80 --
 .../sis/feature/internal/MovingFeatures.java       |  130 ---
 .../apache/sis/feature/internal/package-info.java  |    4 +-
 .../sis/feature/privy/AttributeConvention.java     |  444 +++++++++
 .../sis/feature/privy/FeatureExpression.java       |  128 +++
 .../apache/sis/feature/privy/FeatureUtilities.java |   92 ++
 .../org/apache/sis/feature/privy/InstantList.java  |   80 ++
 .../apache/sis/feature/privy/MovingFeatures.java   |  130 +++
 .../org/apache/sis/feature/privy/package-info.java |   32 +
 .../org/apache/sis/filter/ArithmeticFunction.java  |    4 +-
 .../apache/sis/filter/BinaryGeometryFilter.java    |    2 +-
 .../main/org/apache/sis/filter/Capabilities.java   |    2 +-
 .../org/apache/sis/filter/ConvertFunction.java     |    4 +-
 .../apache/sis/filter/DefaultFilterFactory.java    |    3 +-
 .../org/apache/sis/filter/FunctionRegister.java    |   78 ++
 .../org/apache/sis/filter/IdentifierFilter.java    |    2 +-
 .../main/org/apache/sis/filter/LeafExpression.java |    2 +-
 .../main/org/apache/sis/filter/LogicalFilter.java  |    4 +-
 .../main/org/apache/sis/filter/Optimization.java   |    2 +-
 .../main/org/apache/sis/filter/PropertyValue.java  |    2 +-
 .../apache/sis/filter/internal/CopyVisitor.java    |  707 --------------
 .../apache/sis/filter/internal/EditVisitor.java    |   55 --
 .../apache/sis/filter/internal/FunctionNames.java  |   89 --
 .../sis/filter/internal/FunctionRegister.java      |   77 --
 .../main/org/apache/sis/filter/internal/Node.java  |    2 +-
 .../sis/filter/internal/SortByComparator.java      |  203 ----
 .../org/apache/sis/filter/internal/Visitor.java    |  329 -------
 .../main/org/apache/sis/filter/internal/XPath.java |  251 -----
 .../org/apache/sis/filter/privy/CopyVisitor.java   |  707 ++++++++++++++
 .../org/apache/sis/filter/privy/EditVisitor.java   |   55 ++
 .../org/apache/sis/filter/privy/FunctionNames.java |   89 ++
 .../apache/sis/filter/privy/SortByComparator.java  |  203 ++++
 .../main/org/apache/sis/filter/privy/Visitor.java  |  329 +++++++
 .../main/org/apache/sis/filter/privy/XPath.java    |  251 +++++
 .../org/apache/sis/filter/privy/package-info.java  |   31 +
 .../apache/sis/filter/sqlmm/FunctionWithSRID.java  |    2 +-
 .../main/org/apache/sis/filter/sqlmm/Registry.java |    2 +-
 .../main/org/apache/sis/filter/sqlmm/ST_Point.java |    2 +-
 .../apache/sis/filter/sqlmm/SpatialFunction.java   |    2 +-
 .../org/apache/sis/filter/sqlmm/TwoGeometries.java |    2 +-
 .../apache/sis/geometry/wrapper/Geometries.java    |    2 +-
 .../apache/sis/geometry/wrapper/GeometryType.java  |    2 +-
 .../sis/geometry/wrapper/GeometryWrapper.java      |    2 +-
 .../geometry/wrapper/SpatialOperationContext.java  |    6 +-
 .../apache/sis/geometry/wrapper/esri/Factory.java  |    2 +-
 .../sis/geometry/wrapper/j2d/EmptyShape.java       |    2 +-
 .../apache/sis/geometry/wrapper/j2d/Factory.java   |    6 +-
 .../apache/sis/geometry/wrapper/j2d/FlatShape.java |    2 +-
 .../sis/geometry/wrapper/j2d/MultiPolylines.java   |    2 +-
 .../sis/geometry/wrapper/j2d/ShapeProperties.java  |    2 +-
 .../sis/geometry/wrapper/j2d/ShapeWrapper.java     |    2 +-
 .../apache/sis/geometry/wrapper/j2d/Wrapper.java   |    4 +-
 .../apache/sis/geometry/wrapper/jts/Factory.java   |    2 +-
 .../org/apache/sis/geometry/wrapper/jts/JTS.java   |    2 +-
 .../sis/geometry/wrapper/jts/ShapeAdapter.java     |    4 +-
 .../sis/geometry/wrapper/jts/ShapeConverter.java   |    2 +-
 .../apache/sis/geometry/wrapper/jts/Wrapper.java   |    2 +-
 .../main/org/apache/sis/image/AnnotatedImage.java  |    6 +-
 .../org/apache/sis/image/BandAggregateImage.java   |    4 +-
 .../main/org/apache/sis/image/BandSelectImage.java |    8 +-
 .../main/org/apache/sis/image/BandSharing.java     |    2 +-
 .../apache/sis/image/BandedSampleConverter.java    |   14 +-
 .../main/org/apache/sis/image/Colorizer.java       |    4 +-
 .../main/org/apache/sis/image/ComputedImage.java   |    4 +-
 .../main/org/apache/sis/image/DataType.java        |    4 +-
 .../main/org/apache/sis/image/ImageCombiner.java   |    6 +-
 .../main/org/apache/sis/image/ImageProcessor.java  |    6 +-
 .../main/org/apache/sis/image/MaskImage.java       |    6 +-
 .../main/org/apache/sis/image/MaskedImage.java     |   10 +-
 .../org/apache/sis/image/MultiSourceImage.java     |    2 +-
 .../org/apache/sis/image/MultiSourceLayout.java    |   10 +-
 .../org/apache/sis/image/MultiSourcePrefetch.java  |    2 +-
 .../main/org/apache/sis/image/PixelIterator.java   |    4 +-
 .../main/org/apache/sis/image/PlanarImage.java     |    6 +-
 .../sis/image/PositionalConsistencyImage.java      |    2 +-
 .../main/org/apache/sis/image/PrefetchedImage.java |    8 +-
 .../main/org/apache/sis/image/RecoloredImage.java  |    6 +-
 .../main/org/apache/sis/image/ResampledImage.java  |    8 +-
 .../main/org/apache/sis/image/ResamplingGrid.java  |    2 +-
 .../org/apache/sis/image/StatisticsCalculator.java |    2 +-
 .../main/org/apache/sis/image/TileCache.java       |    2 +-
 .../main/org/apache/sis/image/Transferer.java      |    6 +-
 .../main/org/apache/sis/image/Visualization.java   |    8 +-
 .../apache/sis/image/WritableComputedImage.java    |    2 +-
 .../sis/image/processing/CompoundFuture.java       |    2 +-
 .../sis/image/processing/isoline/Fragments.java    |    2 +-
 .../org/apache/sis/index/tree/NodeIterator.java    |    2 +-
 .../main/org/apache/sis/index/tree/PointTree.java  |    2 +-
 .../coverage/grid/ConvertedGridCoverageTest.java   |    2 +-
 .../coverage/grid/DimensionalityReductionTest.java |    2 +-
 .../sis/coverage/grid/GridCoverage2DTest.java      |    2 +-
 .../sis/coverage/grid/GridCoverageBuilderTest.java |    2 +-
 .../sis/coverage/grid/GridDerivationTest.java      |    4 +-
 .../apache/sis/coverage/grid/GridGeometryTest.java |    2 +-
 .../coverage/grid/ResampledGridCoverageTest.java   |    6 +-
 .../coverage/grid/TranslatedGridCoverageTest.java  |    2 +-
 .../coverage/grid/j2d/ColorModelBuilderTest.java   |  151 ---
 .../sis/coverage/grid/j2d/ImageLayoutTest.java     |   48 -
 .../sis/coverage/grid/j2d/ImageUtilitiesTest.java  |  235 -----
 .../coverage/grid/j2d/SampleModelFactoryTest.java  |  151 ---
 .../coverage/grid/j2d/ScaledColorSpaceTest.java    |  102 --
 .../sis/coverage/internal/RangeArgumentTest.java   |   94 --
 .../sis/coverage/privy/ColorModelBuilderTest.java  |  151 +++
 .../apache/sis/coverage/privy/ImageLayoutTest.java |   48 +
 .../sis/coverage/privy/ImageUtilitiesTest.java     |  235 +++++
 .../sis/coverage/privy/RangeArgumentTest.java      |   94 ++
 .../sis/coverage/privy/SampleModelFactoryTest.java |  151 +++
 .../sis/coverage/privy/ScaledColorSpaceTest.java   |  102 ++
 .../apache/sis/feature/EnvelopeOperationTest.java  |    2 +-
 .../apache/sis/feature/FeatureMemoryBenchmark.java |    2 +-
 .../apache/sis/feature/FeatureOperationsTest.java  |    2 +-
 .../sis/feature/StringJoinOperationTest.java       |    2 +-
 .../feature/builder/AttributeTypeBuilderTest.java  |    2 +-
 .../feature/builder/FeatureTypeBuilderTest.java    |    2 +-
 .../feature/internal/AttributeConventionTest.java  |  122 ---
 .../sis/feature/privy/AttributeConventionTest.java |  122 +++
 .../apache/sis/feature/test/FeatureComparator.java |    2 +-
 .../apache/sis/filter/ComparisonFilterTest.java    |    2 +-
 .../org/apache/sis/filter/TemporalFilterTest.java  |    2 +-
 .../test/org/apache/sis/filter/XPathTest.java      |    2 +-
 .../sis/filter/internal/CopyVisitorTest.java       |   80 --
 .../sis/filter/internal/FilterFactoryMock.java     |  558 -----------
 .../apache/sis/filter/internal/FunctionMock.java   |   95 --
 .../sis/filter/internal/FunctionNamesTest.java     |  154 ---
 .../sis/filter/internal/ValueReferenceMock.java    |   85 --
 .../apache/sis/filter/privy/CopyVisitorTest.java   |   80 ++
 .../apache/sis/filter/privy/FilterFactoryMock.java |  558 +++++++++++
 .../org/apache/sis/filter/privy/FunctionMock.java  |   95 ++
 .../apache/sis/filter/privy/FunctionNamesTest.java |  154 +++
 .../sis/filter/privy/ValueReferenceMock.java       |   85 ++
 .../apache/sis/geometry/wrapper/jts/JTSTest.java   |    2 +-
 .../apache/sis/image/BandAggregateImageTest.java   |    4 +-
 .../org/apache/sis/image/BandSelectImageTest.java  |    4 +-
 .../sis/image/BandedSampleConverterTest.java       |    2 +-
 .../org/apache/sis/image/ImageCombinerTest.java    |    2 +-
 .../org/apache/sis/image/InterpolationTest.java    |    4 +-
 .../test/org/apache/sis/image/MaskedImageTest.java |    2 +-
 .../test/org/apache/sis/image/PlanarImageTest.java |    2 +-
 .../org/apache/sis/image/ResampledImageTest.java   |    6 +-
 .../org/apache/sis/image/ResamplingGridTest.java   |    4 +-
 .../apache/sis/image/StatisticsCalculatorTest.java |    2 +-
 .../test/org/apache/sis/image/TiledImageMock.java  |    4 +-
 .../sis/image/processing/isoline/IsolinesTest.java |    2 +-
 .../sis/image/processing/isoline/StepsViewer.java  |    2 +-
 ... => org.apache.sis.util.privy.MetadataServices} |    0
 .../org.apache.sis.metadata/main/module-info.java  |   12 +-
 .../org/apache/sis/metadata/MetadataStandard.java  |    2 +-
 .../org/apache/sis/metadata/MetadataVisitor.java   |    2 +-
 .../sis/metadata/MetadataVisitorException.java     |    2 +-
 .../apache/sis/metadata/ModifiableMetadata.java    |    8 +-
 .../org/apache/sis/metadata/PropertyAccessor.java  |   10 +-
 .../main/org/apache/sis/metadata/PropertyMap.java  |    2 +-
 .../main/org/apache/sis/metadata/Pruner.java       |    2 +-
 .../main/org/apache/sis/metadata/SpecialCases.java |    4 +-
 .../main/org/apache/sis/metadata/StateChanger.java |    6 +-
 .../main/org/apache/sis/metadata/TreeNode.java     |    4 +-
 .../org/apache/sis/metadata/TreeTableView.java     |    4 +-
 .../apache/sis/metadata/internal/AxisNames.java    |  221 -----
 .../sis/metadata/internal/CitationConstant.java    |  244 +++++
 .../apache/sis/metadata/internal/Identifiers.java  |  299 ------
 .../metadata/internal/ImplementationHelper.java    |  304 ------
 .../org/apache/sis/metadata/internal/Merger.java   |  425 --------
 .../apache/sis/metadata/internal/NameMeaning.java  |  238 -----
 .../sis/metadata/internal/NameToIdentifier.java    |  313 ------
 .../sis/metadata/internal/RecordSchemaSIS.java     |    2 +-
 .../sis/metadata/internal/ReferencingServices.java |  301 ------
 .../apache/sis/metadata/internal/Resources.java    |    7 +-
 .../sis/metadata/internal/Resources.properties     |    1 -
 .../sis/metadata/internal/Resources_fr.properties  |    1 -
 .../sis/metadata/internal/ServicesForUtility.java  |   14 +-
 .../sis/metadata/internal/TemporalUtilities.java   |  144 ---
 .../metadata/internal/TransformationAccuracy.java  |   89 --
 .../apache/sis/metadata/internal/package-info.java |    2 +-
 .../iso/DefaultExtendedElementInformation.java     |    6 +-
 .../apache/sis/metadata/iso/DefaultMetadata.java   |    6 +-
 .../org/apache/sis/metadata/iso/ISOMetadata.java   |    6 +-
 .../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/Citations.java       |    8 +-
 .../sis/metadata/iso/citation/DefaultCitation.java |    6 +-
 .../metadata/iso/citation/DefaultCitationDate.java |    4 +-
 .../sis/metadata/iso/citation/DefaultContact.java  |    4 +-
 .../iso/citation/DefaultResponsibleParty.java      |    4 +-
 .../metadata/iso/citation/DefaultTelephone.java    |    4 +-
 .../sis/metadata/iso/citation/package-info.java    |    2 +-
 .../sis/metadata/iso/content/DefaultBand.java      |    2 +-
 .../iso/content/DefaultCoverageDescription.java    |    6 +-
 .../DefaultFeatureCatalogueDescription.java        |    4 +-
 .../iso/content/DefaultFeatureTypeInfo.java        |    2 +-
 .../iso/content/DefaultImageDescription.java       |    6 +-
 .../iso/content/DefaultRangeDimension.java         |    2 +-
 .../iso/content/DefaultSampleDimension.java        |    2 +-
 .../sis/metadata/iso/content/package-info.java     |    2 +-
 .../metadata/iso/distribution/DefaultDataFile.java |    2 +-
 .../DefaultDigitalTransferOptions.java             |    4 +-
 .../metadata/iso/distribution/DefaultFormat.java   |    4 +-
 .../metadata/iso/distribution/DefaultMedium.java   |    8 +-
 .../distribution/DefaultStandardOrderProcess.java  |    4 +-
 .../metadata/iso/distribution/package-info.java    |    2 +-
 .../sis/metadata/iso/extent/DefaultExtent.java     |    2 +-
 .../iso/extent/DefaultGeographicBoundingBox.java   |    2 +-
 .../iso/extent/DefaultSpatialTemporalExtent.java   |    4 +-
 .../metadata/iso/extent/DefaultTemporalExtent.java |    4 +-
 .../metadata/iso/extent/DefaultVerticalExtent.java |    2 +-
 .../apache/sis/metadata/iso/extent/Extents.java    |    6 +-
 .../iso/identification/AbstractIdentification.java |    2 +-
 .../DefaultAggregateInformation.java               |    2 +-
 .../iso/identification/DefaultCoupledResource.java |    4 +-
 .../identification/DefaultDataIdentification.java  |    2 +-
 .../DefaultRepresentativeFraction.java             |    6 +-
 .../iso/identification/DefaultResolution.java      |    2 +-
 .../metadata/iso/identification/DefaultUsage.java  |    4 +-
 .../metadata/iso/identification/OperationName.java |    2 +-
 .../metadata/iso/identification/package-info.java  |    2 +-
 .../metadata/iso/legacy/LegacyPropertyAdapter.java |    2 +-
 .../iso/lineage/DefaultNominalResolution.java      |    2 +-
 .../metadata/iso/lineage/DefaultProcessStep.java   |    4 +-
 .../sis/metadata/iso/lineage/DefaultSource.java    |    2 +-
 .../sis/metadata/iso/lineage/package-info.java     |    2 +-
 .../maintenance/DefaultMaintenanceInformation.java |    6 +-
 .../sis/metadata/iso/maintenance/package-info.java |    2 +-
 .../org/apache/sis/metadata/iso/package-info.java  |    2 +-
 .../sis/metadata/iso/quality/AbstractElement.java  |    2 +-
 .../iso/quality/DefaultCoverageResult.java         |    2 +-
 .../metadata/iso/quality/DefaultDataQuality.java   |    2 +-
 .../iso/quality/DefaultEvaluationMethod.java       |    4 +-
 .../iso/quality/DefaultMeasureReference.java       |    2 +-
 .../DefaultNonQuantitativeAttributeAccuracy.java   |    2 +-
 .../iso/quality/DefaultQuantitativeResult.java     |    2 +-
 .../sis/metadata/iso/quality/DefaultScope.java     |    2 +-
 .../sis/metadata/iso/quality/DefaultUsability.java |    2 +-
 .../sis/metadata/iso/quality/package-info.java     |    2 +-
 .../sis/metadata/iso/spatial/DefaultDimension.java |    2 +-
 .../iso/spatial/DefaultGeometricObjects.java       |    2 +-
 .../spatial/DefaultGridSpatialRepresentation.java  |    2 +-
 .../org/apache/sis/metadata/privy/AxisNames.java   |  221 +++++
 .../org/apache/sis/metadata/privy/Identifiers.java |  299 ++++++
 .../sis/metadata/privy/ImplementationHelper.java   |  304 ++++++
 .../main/org/apache/sis/metadata/privy/Merger.java |  425 ++++++++
 .../org/apache/sis/metadata/privy/NameMeaning.java |  238 +++++
 .../sis/metadata/privy/NameToIdentifier.java       |  313 ++++++
 .../sis/metadata/privy/ReferencingServices.java    |  301 ++++++
 .../sis/metadata/privy/TemporalUtilities.java      |  144 +++
 .../sis/metadata/privy/TransformationAccuracy.java |   90 ++
 .../apache/sis/metadata/privy/package-info.java    |   30 +
 .../sis/metadata/simple/CitationConstant.java      |  243 -----
 .../apache/sis/metadata/simple/SimpleCitation.java |    2 +-
 .../apache/sis/metadata/simple/SimpleDuration.java |    2 +-
 .../apache/sis/metadata/simple/SimpleExtent.java   |    2 +-
 .../apache/sis/metadata/simple/SimpleFormat.java   |    2 +-
 .../metadata/simple/SimpleIdentifiedObject.java    |    4 +-
 .../sis/metadata/simple/SimpleIdentifier.java      |    2 +-
 .../org/apache/sis/metadata/sql/Dispatcher.java    |    4 +-
 .../sis/metadata/sql/IdentifierGenerator.java      |    2 +-
 .../org/apache/sis/metadata/sql/Installer.java     |    2 +-
 .../apache/sis/metadata/sql/MetadataFallback.java  |    2 +-
 .../apache/sis/metadata/sql/MetadataSource.java    |   14 +-
 .../apache/sis/metadata/sql/MetadataWriter.java    |    8 +-
 .../org/apache/sis/metadata/sql/privy/Dialect.java |  149 +++
 .../apache/sis/metadata/sql/privy/Initializer.java |  457 +++++++++
 .../sis/metadata/sql/privy/LocalDataSource.java    |  455 +++++++++
 .../apache/sis/metadata/sql/privy/Reflection.java  |  213 ++++
 .../apache/sis/metadata/sql/privy/SQLBuilder.java  |  367 +++++++
 .../sis/metadata/sql/privy/SQLUtilities.java       |  199 ++++
 .../sis/metadata/sql/privy/ScriptRunner.java       |  836 ++++++++++++++++
 .../org/apache/sis/metadata/sql/privy/Syntax.java  |   81 ++
 .../apache/sis/metadata/sql/privy/TypeMapper.java  |  105 ++
 .../sis/metadata/sql/privy/package-info.java       |   77 ++
 .../org/apache/sis/metadata/sql/util/Dialect.java  |  149 ---
 .../apache/sis/metadata/sql/util/Initializer.java  |  457 ---------
 .../sis/metadata/sql/util/LocalDataSource.java     |  455 ---------
 .../apache/sis/metadata/sql/util/Reflection.java   |  213 ----
 .../apache/sis/metadata/sql/util/SQLBuilder.java   |  367 -------
 .../apache/sis/metadata/sql/util/SQLUtilities.java |  199 ----
 .../apache/sis/metadata/sql/util/ScriptRunner.java |  836 ----------------
 .../org/apache/sis/metadata/sql/util/Syntax.java   |   81 --
 .../apache/sis/metadata/sql/util/TypeMapper.java   |  105 --
 .../apache/sis/metadata/sql/util/package-info.java |   77 --
 .../apache/sis/util/iso/DefaultNameFactory.java    |    2 +-
 .../org/apache/sis/util/iso/DefaultNameSpace.java  |    4 +-
 .../org/apache/sis/util/iso/DefaultRecord.java     |    4 +-
 .../apache/sis/util/iso/DefaultRecordSchema.java   |    2 +-
 .../org/apache/sis/util/iso/DefaultScopedName.java |    2 +-
 .../org/apache/sis/util/iso/RecordDefinition.java  |    2 +-
 .../main/org/apache/sis/util/iso/TypeNames.java    |    2 +-
 .../main/org/apache/sis/util/iso/Types.java        |    2 +-
 .../main/org/apache/sis/xml/MarshallerPool.java    |    2 +-
 .../main/org/apache/sis/xml/Namespaces.java        |    4 +-
 .../main/org/apache/sis/xml/NilObjectHandler.java  |    2 +-
 .../main/org/apache/sis/xml/OutputFactory.java     |    2 +-
 .../main/org/apache/sis/xml/Pooled.java            |    6 +-
 .../main/org/apache/sis/xml/PooledMarshaller.java  |    2 +-
 .../org/apache/sis/xml/PooledUnmarshaller.java     |    2 +-
 .../main/org/apache/sis/xml/ReferenceResolver.java |    8 +-
 .../main/org/apache/sis/xml/TransformVersion.java  |    2 +-
 .../org/apache/sis/xml/TransformingReader.java     |   14 +-
 .../org/apache/sis/xml/TransformingWriter.java     |    4 +-
 .../main/org/apache/sis/xml/ValueConverter.java    |    2 +-
 .../main/org/apache/sis/xml/XML.java               |    2 +-
 .../main/org/apache/sis/xml/XPointer.java          |    2 +-
 .../main/org/apache/sis/xml/bind/Context.java      |    6 +-
 .../apache/sis/xml/bind/IdentifierMapAdapter.java  |    4 +-
 .../sis/xml/bind/NonMarshalledAuthority.java       |    6 +-
 .../apache/sis/xml/bind/SpecializedIdentifier.java |    2 +-
 .../org/apache/sis/xml/bind/cat/CodeListUID.java   |    2 +-
 .../sis/xml/bind/gco/CharSequenceAdapter.java      |    2 +-
 .../sis/xml/bind/gco/GO_CharacterString.java       |    2 +-
 .../org/apache/sis/xml/bind/gco/GO_DateTime.java   |    2 +-
 .../org/apache/sis/xml/bind/gco/GO_Temporal.java   |    2 +-
 .../org/apache/sis/xml/bind/gco/PropertyType.java  |    2 +-
 .../org/apache/sis/xml/bind/gmi/MI_Metadata.java   |    2 +-
 .../org/apache/sis/xml/bind/gmi/package-info.java  |    2 +-
 .../org/apache/sis/xml/bind/gml/DateAdapter.java   |    2 +-
 .../main/org/apache/sis/xml/bind/gml/Measure.java  |    4 +-
 .../org/apache/sis/xml/bind/gml/TM_Primitive.java  |    4 +-
 .../org/apache/sis/xml/bind/gml/TimeInstant.java   |    4 +-
 .../org/apache/sis/xml/bind/gml/TimePeriod.java    |    4 +-
 .../sis/xml/bind/gml/UniversalTimeAdapter.java     |    4 +-
 .../apache/sis/xml/bind/gts/TM_PeriodDuration.java |    4 +-
 .../org/apache/sis/xml/bind/gts/package-info.java  |    2 +-
 .../main/org/apache/sis/xml/bind/lan/Country.java  |    4 +-
 .../apache/sis/xml/bind/lan/LocaleAndCharset.java  |    6 +-
 .../org/apache/sis/xml/bind/lan/PT_Locale.java     |    4 +-
 .../xml/bind/metadata/code/MD_MediumNameCode.java  |    2 +-
 .../sis/xml/bind/metadata/code/package-info.java   |    2 +-
 .../sis/xml/bind/metadata/replace/Parameter.java   |    2 +-
 .../xml/bind/metadata/replace/RS_Identifier.java   |    2 +-
 .../bind/metadata/replace/ServiceParameter.java    |    6 +-
 .../xml/bind/metadata/replace/package-info.java    |    2 +-
 .../apache/sis/xml/privy/ExceptionSimplifier.java  |  150 +++
 .../apache/sis/xml/privy/ExternalLinkHandler.java  |  317 ++++++
 .../org/apache/sis/xml/privy/LegacyNamespaces.java |  121 +++
 .../apache/sis/xml/privy/StreamWriterDelegate.java |  243 +++++
 .../main/org/apache/sis/xml/privy/URISource.java   |  125 +++
 .../org/apache/sis/xml/privy/XmlUtilities.java     |  374 +++++++
 .../org/apache/sis/xml/privy/package-info.java     |   34 +
 .../apache/sis/xml/util/ExceptionSimplifier.java   |  150 ---
 .../apache/sis/xml/util/ExternalLinkHandler.java   |  317 ------
 .../org/apache/sis/xml/util/LegacyNamespaces.java  |  121 ---
 .../apache/sis/xml/util/StreamWriterDelegate.java  |  243 -----
 .../main/org/apache/sis/xml/util/URISource.java    |  125 ---
 .../main/org/apache/sis/xml/util/XmlUtilities.java |  374 -------
 .../main/org/apache/sis/xml/util/package-info.java |   34 -
 .../test/org/apache/sis/metadata/Assertions.java   |    2 +-
 .../apache/sis/metadata/MetadataCopierTest.java    |    2 +-
 .../sis/metadata/PropertyConsistencyCheck.java     |    2 +-
 .../sis/metadata/internal/AxisNamesTest.java       |   63 --
 .../sis/metadata/internal/IdentifiersTest.java     |  111 ---
 .../internal/ImplementationHelperTest.java         |   85 --
 .../apache/sis/metadata/internal/MergerTest.java   |  134 ---
 .../sis/metadata/internal/NameMeaningTest.java     |   80 --
 .../sis/metadata/iso/citation/CitationsTest.java   |    4 +-
 .../metadata/iso/citation/DefaultCitationTest.java |    2 +-
 .../iso/citation/DefaultResponsibilityTest.java    |    2 +-
 .../metadata/iso/citation/HardCodedCitations.java  |    4 +-
 .../constraint/DefaultLegalConstraintsTest.java    |    4 +-
 .../sis/metadata/iso/content/DefaultBandTest.java  |    2 +-
 .../sis/metadata/iso/extent/ExtentsTest.java       |    2 +-
 .../iso/identification/DefaultResolutionTest.java  |    2 +-
 .../metadata/iso/lineage/DefaultLineageTest.java   |    2 +-
 .../iso/quality/DefaultQuantitativeResultTest.java |    2 +-
 .../{internal => privy}/AxisDirectionsTest.md      |    0
 .../apache/sis/metadata/privy/AxisNamesTest.java   |   63 ++
 .../apache/sis/metadata/privy/IdentifiersTest.java |  111 +++
 .../metadata/privy/ImplementationHelperTest.java   |   85 ++
 .../org/apache/sis/metadata/privy/MergerTest.java  |  134 +++
 .../apache/sis/metadata/privy/NameMeaningTest.java |   80 ++
 .../sis/metadata/sql/IdentifierGeneratorTest.java  |    2 +-
 .../sis/metadata/sql/MetadataFallbackVerifier.java |    4 +-
 .../sis/metadata/sql/MetadataWriterTest.java       |    2 +-
 .../org/apache/sis/metadata/sql/TestDatabase.java  |    6 +-
 .../sis/metadata/sql/privy/SQLUtilitiesTest.java   |   58 ++
 .../sis/metadata/sql/privy/ScriptRunnerTest.java   |   89 ++
 .../sis/metadata/sql/privy/TypeMapperTest.java     |   48 +
 .../sis/metadata/sql/util/SQLUtilitiesTest.java    |   58 --
 .../sis/metadata/sql/util/ScriptRunnerTest.java    |   89 --
 .../sis/metadata/sql/util/TypeMapperTest.java      |   48 -
 .../apache/sis/test/mock/FeatureAttributeMock.java |    2 +-
 .../apache/sis/test/mock/IdentifiedObjectMock.java |    4 +-
 .../org/apache/sis/test/mock/MetadataMock.java     |    2 +-
 .../org/apache/sis/test/mock/package-info.java     |    2 +-
 .../apache/sis/util/iso/DefaultLocalNameTest.java  |    2 +-
 .../apache/sis/util/iso/NameMarshallingTest.java   |    2 +-
 .../org/apache/sis/util/iso/TypeNamesTest.java     |    2 +-
 .../sis/xml/CharSequenceSubstitutionTest.java      |    4 +-
 .../test/org/apache/sis/xml/NamespacesTest.java    |    2 +-
 .../org/apache/sis/xml/RenameListGenerator.java    |    2 +-
 .../test/org/apache/sis/xml/TransformerTest.java   |    2 +-
 .../apache/sis/xml/TransformingNamespacesTest.java |    2 +-
 .../sis/xml/bind/cat/CodeListMarshallingTest.java  |    2 +-
 .../apache/sis/xml/bind/gml/TimePeriodTest.java    |    2 +-
 .../sis/xml/bind/lan/FreeTextMarshallingTest.java  |    2 +-
 .../apache/sis/xml/bind/lan/LanguageCodeTest.java  |    4 +-
 .../sis/xml/privy/DocumentComparatorTest.java      |  137 +++
 .../org/apache/sis/xml/privy/XmlUtilitiesTest.java |  120 +++
 .../sis/xml/test/AnnotationConsistencyCheck.java   |    2 +-
 .../apache/sis/xml/test/DocumentComparator.java    |    4 +-
 .../org/apache/sis/xml/test/PackageVerifier.java   |    2 +-
 .../test/org/apache/sis/xml/test/TestCase.java     |    2 +-
 .../sis/xml/util/DocumentComparatorTest.java       |  137 ---
 .../org/apache/sis/xml/util/XmlUtilitiesTest.java  |  120 ---
 .../org/apache/sis/openoffice/Transformer.java     |    2 +-
 .../sis/openoffice/ReferencingFunctionsTest.java   |    4 +-
 .../org/apache/sis/map/coverage/RenderingData.java |   10 +-
 .../sis/map/coverage/RenderingWorkaround.java      |    2 +-
 .../main/org/apache/sis/portrayal/Canvas.java      |    8 +-
 .../org/apache/sis/portrayal/CanvasContext.java    |    2 +-
 .../org/apache/sis/portrayal/CanvasExtent.java     |    4 +-
 .../org/apache/sis/portrayal/CanvasFollower.java   |    2 +-
 .../org/apache/sis/portrayal/PlanarCanvas.java     |    2 +-
 .../org/apache/sis/style/se1/StyleFactory.java     |    2 +-
 .../referencing/gazetteer/FinalLocationType.java   |    2 +-
 .../referencing/gazetteer/GazetteerFactory.java    |    2 +-
 .../gazetteer/GeohashReferenceSystem.java          |    2 +-
 .../sis/referencing/gazetteer/LocationFormat.java  |    2 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     |    6 +-
 .../gazetteer/ReferencingByIdentifiers.java        |    4 +-
 .../sis/referencing/gazetteer/LocationViewer.java  |    2 +-
 .../gazetteer/MilitaryGridReferenceSystemTest.java |    2 +-
 ....apache.sis.metadata.privy.ReferencingServices} |    0
 ... org.apache.sis.metadata.sql.privy.Initializer} |    0
 .../main/module-info.java                          |   15 +-
 .../sis/geometry/AbstractDirectPosition.java       |    6 +-
 .../org/apache/sis/geometry/AbstractEnvelope.java  |    8 +-
 .../org/apache/sis/geometry/ArrayEnvelope.java     |    2 +-
 .../org/apache/sis/geometry/CoordinateFormat.java  |   10 +-
 .../main/org/apache/sis/geometry/Envelope2D.java   |    2 +-
 .../org/apache/sis/geometry/EnvelopeReducer.java   |    2 +-
 .../main/org/apache/sis/geometry/Envelopes.java    |   10 +-
 .../org/apache/sis/geometry/GeneralEnvelope.java   |    4 +-
 .../main/org/apache/sis/geometry/Shapes2D.java     |    6 +-
 .../apache/sis/geometry/WraparoundAdjustment.java  |    6 +-
 .../main/org/apache/sis/io/wkt/AbstractParser.java |    2 +-
 .../main/org/apache/sis/io/wkt/Colors.java         |    2 +-
 .../main/org/apache/sis/io/wkt/Element.java        |    4 +-
 .../org/apache/sis/io/wkt/FormattableObject.java   |    4 +-
 .../main/org/apache/sis/io/wkt/Formatter.java      |   12 +-
 .../apache/sis/io/wkt/GeodeticObjectParser.java    |   22 +-
 .../org/apache/sis/io/wkt/MathTransformParser.java |    8 +-
 .../main/org/apache/sis/io/wkt/StoredTree.java     |    2 +-
 .../main/org/apache/sis/io/wkt/Transliterator.java |    6 +-
 .../main/org/apache/sis/io/wkt/VerticalInfo.java   |    2 +-
 .../main/org/apache/sis/io/wkt/WKTDictionary.java  |   10 +-
 .../main/org/apache/sis/io/wkt/WKTFormat.java      |    6 +-
 .../sis/parameter/AbstractParameterDescriptor.java |    4 +-
 .../sis/parameter/DefaultParameterDescriptor.java  |    2 +-
 .../parameter/DefaultParameterDescriptorGroup.java |    4 +-
 .../sis/parameter/DefaultParameterValue.java       |   10 +-
 .../sis/parameter/DefaultParameterValueGroup.java  |    2 +-
 .../apache/sis/parameter/FilteredParameters.java   |    2 +-
 .../sis/parameter/MapProjectionDescriptor.java     |    2 +-
 .../sis/parameter/MapProjectionParameters.java     |    4 +-
 .../org/apache/sis/parameter/MatrixParameters.java |    2 +-
 .../sis/parameter/MatrixParametersAlphaNum.java    |    4 +-
 .../org/apache/sis/parameter/ParameterFormat.java  |    6 +-
 .../apache/sis/parameter/ParameterTableRow.java    |    8 +-
 .../org/apache/sis/parameter/TensorParameters.java |    2 +-
 .../org/apache/sis/parameter/TensorValues.java     |   10 +-
 .../sis/parameter/UninitializedParameter.java      |    2 +-
 .../sis/parameter/UnmodifiableParameterValue.java  |    2 +-
 .../parameter/UnmodifiableParameterValueGroup.java |    2 +-
 .../main/org/apache/sis/parameter/Verifier.java    |    2 +-
 .../sis/referencing/AbstractIdentifiedObject.java  |   20 +-
 .../apache/sis/referencing/AuthorityFactories.java |    2 +-
 .../main/org/apache/sis/referencing/CRS.java       |   12 +-
 .../main/org/apache/sis/referencing/CommonCRS.java |    6 +-
 .../sis/referencing/DefaultObjectDomain.java       |    2 +-
 .../sis/referencing/EPSGFactoryFallback.java       |    6 +-
 .../referencing/EllipsoidalHeightSeparator.java    |   10 +-
 .../sis/referencing/GeodesicsOnEllipsoid.java      |    2 +-
 .../apache/sis/referencing/GeodeticCalculator.java |   14 +-
 .../apache/sis/referencing/IdentifiedObjects.java  |   14 +-
 .../sis/referencing/ImmutableIdentifier.java       |    8 +-
 .../org/apache/sis/referencing/NameIterator.java   |    8 +-
 .../apache/sis/referencing/NamedIdentifier.java    |    2 +-
 .../org/apache/sis/referencing/Properties.java     |    4 +-
 .../sis/referencing/StandardDefinitions.java       |    8 +-
 .../apache/sis/referencing/crs/AbstractCRS.java    |    8 +-
 .../sis/referencing/crs/AbstractDerivedCRS.java    |    6 +-
 .../sis/referencing/crs/DefaultCompoundCRS.java    |    8 +-
 .../sis/referencing/crs/DefaultDerivedCRS.java     |    6 +-
 .../sis/referencing/crs/DefaultEngineeringCRS.java |    4 +-
 .../sis/referencing/crs/DefaultGeodeticCRS.java    |   10 +-
 .../sis/referencing/crs/DefaultGeographicCRS.java  |   10 +-
 .../sis/referencing/crs/DefaultImageCRS.java       |    4 +-
 .../sis/referencing/crs/DefaultParametricCRS.java  |    4 +-
 .../sis/referencing/crs/DefaultProjectedCRS.java   |    8 +-
 .../sis/referencing/crs/DefaultTemporalCRS.java    |    8 +-
 .../sis/referencing/crs/DefaultVerticalCRS.java    |    4 +-
 .../sis/referencing/crs/ExplicitParameters.java    |    6 +-
 .../org/apache/sis/referencing/cs/AbstractCS.java  |   12 +-
 .../apache/sis/referencing/cs/AxesConvention.java  |    2 +-
 .../main/org/apache/sis/referencing/cs/Codes.java  |    4 +-
 .../sis/referencing/cs/CoordinateSystems.java      |    6 +-
 .../apache/sis/referencing/cs/DefaultAffineCS.java |    2 +-
 .../sis/referencing/cs/DefaultCompoundCS.java      |    4 +-
 .../cs/DefaultCoordinateSystemAxis.java            |   12 +-
 .../sis/referencing/cs/DefaultCylindricalCS.java   |    2 +-
 .../sis/referencing/cs/DefaultEllipsoidalCS.java   |    2 +-
 .../apache/sis/referencing/cs/DefaultLinearCS.java |    2 +-
 .../apache/sis/referencing/cs/DefaultPolarCS.java  |    2 +-
 .../sis/referencing/cs/DefaultSphericalCS.java     |    2 +-
 .../apache/sis/referencing/cs/DefaultTimeCS.java   |    2 +-
 .../sis/referencing/cs/DefaultVerticalCS.java      |    2 +-
 .../sis/referencing/cs/DirectionAlongMeridian.java |    6 +-
 .../org/apache/sis/referencing/cs/Normalizer.java  |    6 +-
 .../org/apache/sis/referencing/cs/SubTypes.java    |    2 +-
 .../sis/referencing/datum/AbstractDatum.java       |    8 +-
 .../sis/referencing/datum/BursaWolfParameters.java |    4 +-
 .../sis/referencing/datum/DatumShiftGrid.java      |    4 +-
 .../sis/referencing/datum/DefaultEllipsoid.java    |   12 +-
 .../referencing/datum/DefaultEngineeringDatum.java |    2 +-
 .../referencing/datum/DefaultGeodeticDatum.java    |   14 +-
 .../sis/referencing/datum/DefaultImageDatum.java   |    4 +-
 .../referencing/datum/DefaultParametricDatum.java  |    2 +-
 .../referencing/datum/DefaultPrimeMeridian.java    |   14 +-
 .../referencing/datum/DefaultTemporalDatum.java    |    4 +-
 .../referencing/datum/DefaultVerticalDatum.java    |    6 +-
 .../sis/referencing/datum/TimeDependentBWP.java    |    4 +-
 .../apache/sis/referencing/datum/package-info.java |    2 +-
 .../factory/AuthorityFactoryIdentifier.java        |   10 +-
 .../referencing/factory/AuthorityFactoryProxy.java |    2 +-
 .../referencing/factory/CommonAuthorityCode.java   |    4 +-
 .../factory/CommonAuthorityFactory.java            |    4 +-
 .../factory/ConcurrentAuthorityFactory.java        |    4 +-
 .../sis/referencing/factory/FilteredCodes.java     |    2 +-
 .../factory/GeodeticAuthorityFactory.java          |    4 +-
 .../referencing/factory/GeodeticObjectFactory.java |    2 +-
 .../factory/IdentifiedObjectFinder.java            |    2 +-
 .../factory/LazySynchronizedIterator.java          |    2 +-
 .../factory/MultiAuthoritiesFactory.java           |   14 +-
 .../sis/referencing/factory/ReferenceKeeper.java   |    2 +-
 .../referencing/factory/sql/AuthorityCodes.java    |    2 +-
 .../sis/referencing/factory/sql/BursaWolfInfo.java |    2 +-
 .../referencing/factory/sql/EPSGCodeFinder.java    |   10 +-
 .../referencing/factory/sql/EPSGDataAccess.java    |   26 +-
 .../sis/referencing/factory/sql/EPSGFactory.java   |    6 +-
 .../sis/referencing/factory/sql/EPSGInstaller.java |    8 +-
 .../factory/sql/InstallationScriptProvider.java    |    4 +-
 .../sis/referencing/factory/sql/SQLTranslator.java |    8 +-
 .../sis/referencing/factory/sql/TableInfo.java     |    2 +-
 .../sis/referencing/internal/AnnotatedMatrix.java  |    4 +-
 .../sis/referencing/internal/Arithmetic.java       |    6 +-
 .../apache/sis/referencing/internal/Bezier.java    |  532 ++++++++++
 .../sis/referencing/internal/DatabaseListener.java |    4 +-
 .../referencing/internal/EPSGParameterDomain.java  |    2 +-
 .../internal/ImmutableAffineTransform.java         |  314 ++++++
 .../apache/sis/referencing/internal/Legacy.java    |    2 +-
 .../referencing/internal/LinearTransform2D.java    |   39 +
 .../sis/referencing/internal/MergedProperties.java |    2 +-
 .../referencing/internal/ParameterizedAffine.java  |  172 ++++
 .../referencing/internal/ServicesForMetadata.java  |   10 +-
 .../operation/AbstractCoordinateOperation.java     |   20 +-
 .../operation/AbstractSingleOperation.java         |    8 +-
 .../apache/sis/referencing/operation/CRSPair.java  |    4 +-
 .../operation/CoordinateOperationContext.java      |    4 +-
 .../operation/CoordinateOperationFinder.java       |   12 +-
 .../operation/CoordinateOperationRegistry.java     |   12 +-
 .../operation/DefaultConcatenatedOperation.java    |    8 +-
 .../referencing/operation/DefaultConversion.java   |    2 +-
 .../DefaultCoordinateOperationFactory.java         |   10 +-
 .../sis/referencing/operation/DefaultFormula.java  |    2 +-
 .../operation/DefaultOperationMethod.java          |   10 +-
 .../operation/DefaultPassThroughOperation.java     |    4 +-
 .../operation/InverseOperationMethod.java          |    2 +-
 .../operation/MathTransformContext.java            |    2 +-
 .../operation/builder/LinearTransformBuilder.java  |   10 +-
 .../operation/builder/LocalizationGridBuilder.java |    4 +-
 .../operation/builder/ResidualGrid.java            |    6 +-
 .../operation/gridded/CompressedGrid.java          |    2 +-
 .../referencing/operation/gridded/GridGroup.java   |    8 +-
 .../referencing/operation/gridded/LoadedGrid.java  |    2 +-
 .../sis/referencing/operation/gridded/Tile.java    |  679 +++++++++++++
 .../operation/gridded/TileOrganizer.java           |  567 +++++++++++
 .../operation/matrix/AffineTransforms2D.java       |    4 +-
 .../operation/matrix/GeneralMatrix.java            |    4 +-
 .../sis/referencing/operation/matrix/Matrices.java |    8 +-
 .../sis/referencing/operation/matrix/Matrix1.java  |    2 +-
 .../sis/referencing/operation/matrix/Matrix2.java  |    2 +-
 .../referencing/operation/matrix/MatrixSIS.java    |    4 +-
 .../sis/referencing/operation/matrix/Solver.java   |    2 +-
 .../operation/matrix/UnmodifiableMatrix.java       |    2 +-
 .../operation/projection/AlbersEqualArea.java      |    4 +-
 .../operation/projection/AuthalicConversion.java   |    2 +-
 .../operation/projection/ConformalProjection.java  |    2 +-
 .../operation/projection/CylindricalEqualArea.java |    2 +-
 .../operation/projection/Initializer.java          |    6 +-
 .../projection/LambertAzimuthalEqualArea.java      |    4 +-
 .../projection/LambertConicConformal.java          |    6 +-
 .../operation/projection/LongitudeWraparound.java  |    4 +-
 .../referencing/operation/projection/Mercator.java |    2 +-
 .../operation/projection/MeridianArcBased.java     |    2 +-
 .../operation/projection/NormalizedProjection.java |    8 +-
 .../operation/projection/ObliqueMercator.java      |    2 +-
 .../operation/projection/ObliqueStereographic.java |    4 +-
 .../operation/projection/PolarStereographic.java   |    6 +-
 .../operation/projection/SatelliteTracking.java    |    2 +-
 .../operation/projection/TransverseMercator.java   |    2 +-
 .../operation/projection/ZonedGridSystem.java      |    2 +-
 .../operation/provider/AbstractProvider.java       |    2 +-
 .../sis/referencing/operation/provider/Affine.java |    4 +-
 .../referencing/operation/provider/EPSGName.java   |    2 +-
 .../operation/provider/Equirectangular.java        |    6 +-
 .../provider/FranceGeocentricInterpolation.java    |    4 +-
 .../operation/provider/GeocentricAffine.java       |    6 +-
 .../GeocentricAffineBetweenGeographic.java         |    2 +-
 .../provider/GeocentricToTopocentric.java          |    2 +-
 .../operation/provider/Geographic2Dto3D.java       |    2 +-
 .../operation/provider/Geographic3Dto2D.java       |    4 +-
 .../operation/provider/GeographicOffsets2D.java    |    2 +-
 .../operation/provider/GeographicRedimension.java  |    2 +-
 .../operation/provider/GeographicToGeocentric.java |    2 +-
 .../operation/provider/Interpolation1D.java        |    2 +-
 .../operation/provider/LambertConformal2SP.java    |    2 +-
 .../operation/provider/LongitudeRotation.java      |    2 +-
 .../operation/provider/MapProjection.java          |    2 +-
 .../operation/provider/Mercator1SP.java            |    2 +-
 .../operation/provider/MillerCylindrical.java      |    2 +-
 .../referencing/operation/provider/Molodensky.java |    6 +-
 .../sis/referencing/operation/provider/NTv2.java   |    4 +-
 .../operation/provider/PolarStereographicA.java    |    6 +-
 .../operation/provider/SatelliteTracking.java      |    2 +-
 .../referencing/operation/provider/Sinusoidal.java |    2 +-
 .../operation/provider/TransverseMercator.java     |    6 +-
 .../transform/AbstractLinearTransform.java         |    4 +-
 .../operation/transform/AbstractMathTransform.java |    6 +-
 .../transform/AbstractMathTransform2D.java         |    2 +-
 .../operation/transform/CartesianToPolar.java      |    2 +-
 .../operation/transform/ConcatenatedTransform.java |    6 +-
 .../operation/transform/ContextualParameters.java  |   14 +-
 .../transform/CoordinateSystemTransform.java       |    8 +-
 .../transform/DefaultMathTransformFactory.java     |   14 +-
 .../transform/EllipsoidToCentricTransform.java     |   12 +-
 .../transform/ExponentialTransform1D.java          |    2 +-
 .../operation/transform/IdentityTransform.java     |    2 +-
 .../transform/InterpolatedGeocentricTransform.java |    2 +-
 .../operation/transform/InterpolatedTransform.java |    4 +-
 .../operation/transform/LinearInterpolator1D.java  |    2 +-
 .../operation/transform/LinearTransform1D.java     |    6 +-
 .../transform/LogarithmicTransform1D.java          |    2 +-
 .../operation/transform/MathTransforms.java        |    6 +-
 .../operation/transform/MolodenskyTransform.java   |    2 +-
 .../operation/transform/OperationMethodSet.java    |    2 +-
 .../operation/transform/PassThroughTransform.java  |    6 +-
 .../operation/transform/PolarToCartesian.java      |    2 +-
 .../operation/transform/PoleRotation.java          |    6 +-
 .../operation/transform/PowerTransform1D.java      |    2 +-
 .../operation/transform/ProjectiveTransform.java   |    8 +-
 .../operation/transform/ProjectiveTransform2D.java |    4 +-
 .../operation/transform/ScaleTransform.java        |    4 +-
 .../transform/SpecializableTransform.java          |    2 +-
 .../operation/transform/TransformSeparator.java    |    4 +-
 .../operation/transform/TranslationTransform.java  |    4 +-
 .../operation/transform/WraparoundTransform.java   |    2 +-
 .../org/apache/sis/referencing/package-info.java   |    2 +-
 .../sis/referencing/privy/AbstractShape.java       |   79 ++
 .../apache/sis/referencing/privy/AffineMatrix.java |  242 +++++
 .../sis/referencing/privy/AffineTransform2D.java   |  491 ++++++++++
 .../apache/sis/referencing/privy/AxesMapper.java   |  156 +++
 .../sis/referencing/privy/AxisDirections.java      |  834 ++++++++++++++++
 .../referencing/privy/CoordinateOperations.java    |  361 +++++++
 .../sis/referencing/privy/DefinitionVerifier.java  |  359 +++++++
 .../sis/referencing/privy/DirectPositionView.java  |  153 +++
 .../privy/EllipsoidalHeightCombiner.java           |  227 +++++
 .../referencing/privy/ExtendedPrecisionMatrix.java |  149 +++
 .../sis/referencing/privy/ExtentSelector.java      |  558 +++++++++++
 .../org/apache/sis/referencing/privy/Formulas.java |  292 ++++++
 .../referencing/privy/GeodeticObjectBuilder.java   |  674 +++++++++++++
 .../sis/referencing/privy/IntervalRectangle.java   |  573 +++++++++++
 .../org/apache/sis/referencing/privy/LazySet.java  |  247 +++++
 .../referencing/privy/NilReferencingObject.java    |   77 ++
 .../privy/PositionalAccuracyConstant.java          |  246 +++++
 .../privy/ReferencingFactoryContainer.java         |  398 ++++++++
 .../referencing/privy/ReferencingUtilities.java    |  684 +++++++++++++
 .../sis/referencing/privy/ShapeUtilities.java      |  426 ++++++++
 .../sis/referencing/privy/TemporalAccessor.java    |  138 +++
 .../apache/sis/referencing/privy/WKTKeywords.java  |  299 ++++++
 .../apache/sis/referencing/privy/WKTUtilities.java |  548 +++++++++++
 .../referencing/privy/WraparoundApplicator.java    |  222 +++++
 .../referencing/privy/WraparoundAxesFinder.java    |   83 ++
 .../apache/sis/referencing/privy/package-info.java |   30 +
 .../apache/sis/referencing/util/AxesMapper.java    |  156 ---
 .../sis/referencing/util/AxisDirections.java       |  834 ----------------
 .../sis/referencing/util/CoordinateOperations.java |  361 -------
 .../sis/referencing/util/DefinitionVerifier.java   |  359 -------
 .../sis/referencing/util/DirectPositionView.java   |  153 ---
 .../util/EllipsoidalHeightCombiner.java            |  227 -----
 .../referencing/util/ExtendedPrecisionMatrix.java  |  149 ---
 .../sis/referencing/util/ExtentSelector.java       |  558 -----------
 .../org/apache/sis/referencing/util/Formulas.java  |  292 ------
 .../referencing/util/GeodeticObjectBuilder.java    |  674 -------------
 .../org/apache/sis/referencing/util/LazySet.java   |  247 -----
 .../sis/referencing/util/NilReferencingObject.java |   77 --
 .../util/PositionalAccuracyConstant.java           |  246 -----
 .../util/ReferencingFactoryContainer.java          |  398 --------
 .../sis/referencing/util/ReferencingUtilities.java |  684 -------------
 .../sis/referencing/util/TemporalAccessor.java     |  138 ---
 .../apache/sis/referencing/util/WKTKeywords.java   |  299 ------
 .../apache/sis/referencing/util/WKTUtilities.java  |  548 -----------
 .../sis/referencing/util/WraparoundApplicator.java |  222 -----
 .../sis/referencing/util/WraparoundAxesFinder.java |   83 --
 .../sis/referencing/util/j2d/AbstractShape.java    |   79 --
 .../sis/referencing/util/j2d/AffineMatrix.java     |  243 -----
 .../referencing/util/j2d/AffineTransform2D.java    |  490 ----------
 .../apache/sis/referencing/util/j2d/Bezier.java    |  532 ----------
 .../util/j2d/ImmutableAffineTransform.java         |  314 ------
 .../referencing/util/j2d/IntervalRectangle.java    |  573 -----------
 .../referencing/util/j2d/LinearTransform2D.java    |   39 -
 .../referencing/util/j2d/ParameterizedAffine.java  |  171 ----
 .../sis/referencing/util/j2d/ShapeUtilities.java   |  426 --------
 .../org/apache/sis/referencing/util/j2d/Tile.java  |  678 -------------
 .../sis/referencing/util/j2d/TileOrganizer.java    |  565 -----------
 .../sis/referencing/util/j2d/package-info.java     |   30 -
 .../apache/sis/referencing/util/package-info.java  |   30 -
 .../bind/referencing/CC_CoordinateOperation.java   |    2 +-
 .../referencing/CC_GeneralOperationParameter.java  |    2 +-
 .../sis/xml/bind/referencing/CS_AxisDirection.java |    2 +-
 .../sis/xml/bind/referencing/CS_RangeMeaning.java  |    2 +-
 .../org/apache/sis/xml/bind/referencing/Code.java  |    8 +-
 .../org/apache/sis/geometry/EnvelopesTest.java     |    2 +-
 .../apache/sis/geometry/GeneralEnvelopeTest.java   |    2 +-
 .../org/apache/sis/geometry/TransformTestCase.java |    4 +-
 .../sis/geometry/WraparoundAdjustmentTest.java     |    2 +-
 .../sis/io/wkt/GeodeticObjectParserTest.java       |    6 +-
 .../org/apache/sis/io/wkt/TransliteratorTest.java  |    2 +-
 .../test/org/apache/sis/io/wkt/WKTParserTest.java  |    2 +-
 .../DefaultParameterDescriptorGroupTest.java       |    2 +-
 .../parameter/DefaultParameterDescriptorTest.java  |    2 +-
 .../sis/parameter/DefaultParameterValueTest.java   |    2 +-
 .../sis/parameter/MapProjectionParametersTest.java |   18 +-
 .../apache/sis/parameter/TensorParametersTest.java |    4 +-
 .../org/apache/sis/parameter/TensorValuesTest.java |    6 +-
 .../org/apache/sis/referencing/Assertions.java     |    2 +-
 .../sis/referencing/AuthorityFactoriesTest.java    |    2 +-
 .../org/apache/sis/referencing/CommonCRSTest.java  |    4 +-
 .../sis/referencing/GeodesicsOnEllipsoidTest.java  |    6 +-
 .../sis/referencing/GeodeticCalculatorTest.java    |    6 +-
 .../sis/referencing/GeodeticObjectVerifier.java    |    2 +-
 .../sis/referencing/ImmutableIdentifierTest.java   |    4 +-
 .../sis/referencing/StandardDefinitionsTest.java   |    2 +-
 .../sis/referencing/crs/DefaultDerivedCRSTest.java |    2 +-
 .../referencing/crs/DefaultProjectedCRSTest.java   |    4 +-
 .../referencing/crs/DefaultTemporalCRSTest.java    |    4 +-
 .../referencing/cs/DefaultCylindricalCSTest.java   |    2 +-
 .../sis/referencing/cs/DefaultPolarCSTest.java     |    2 +-
 .../sis/referencing/cs/DefaultSphericalCSTest.java |    2 +-
 .../apache/sis/referencing/cs/HardCodedAxes.java   |    4 +-
 .../datum/DefaultGeodeticDatumTest.java            |    2 +-
 .../datum/DefaultPrimeMeridianTest.java            |    2 +-
 .../datum/DefaultTemporalDatumTest.java            |    2 +-
 .../datum/DefaultVerticalDatumTest.java            |    2 +-
 .../sis/referencing/datum/GeodeticDatumMock.java   |    2 +-
 .../sis/referencing/datum/HardCodedDatum.java      |    2 +-
 .../referencing/datum/TimeDependentBWPTest.java    |    2 +-
 .../factory/CommonAuthorityFactoryTest.java        |    2 +-
 .../factory/ConcurrentAuthorityFactoryTest.java    |    2 +-
 .../sis/referencing/factory/TestFactorySource.java |    4 +-
 .../referencing/factory/sql/EPSGInstallerTest.java |    4 +-
 .../factory/sql/epsg/DataScriptFormatter.java      |    4 +-
 .../operation/CoordinateOperationFinderTest.java   |    8 +-
 .../operation/CoordinateOperationRegistryTest.java |    2 +-
 .../operation/DefaultConversionTest.java           |    4 +-
 .../DefaultCoordinateOperationFactoryTest.java     |    6 +-
 .../operation/DefaultTransformationTest.java       |    2 +-
 .../operation/matrix/GeneralMatrixTest.java        |    2 +-
 .../referencing/operation/matrix/MatricesTest.java |    2 +-
 .../operation/matrix/MatrixTestCase.java           |    4 +-
 .../operation/projection/AlbersEqualAreaTest.java  |    2 +-
 .../projection/AuthalicConversionTest.java         |    2 +-
 .../projection/AzimuthalEquidistantTest.java       |    2 +-
 .../operation/projection/CassiniSoldnerTest.java   |    2 +-
 .../projection/ConformalProjectionTest.java        |    2 +-
 .../projection/CylindricalEqualAreaTest.java       |    2 +-
 .../operation/projection/EquirectangularTest.java  |    4 +-
 .../operation/projection/InitializerTest.java      |    2 +-
 .../projection/LambertAzimuthalEqualAreaTest.java  |    6 +-
 .../projection/LambertConicConformalTest.java      |    2 +-
 .../projection/MapProjectionTestCase.java          |    4 +-
 .../projection/MercatorMethodComparison.java       |    4 +-
 .../operation/projection/MercatorTest.java         |    4 +-
 .../operation/projection/MollweideTest.java        |    2 +-
 .../sis/referencing/operation/projection/NoOp.java |    2 +-
 .../projection/NormalizedProjectionTest.java       |    2 +-
 .../projection/ObliqueStereographicTest.java       |    2 +-
 .../projection/PolarStereographicTest.java         |    2 +-
 .../operation/projection/PolyconicTest.java        |    2 +-
 .../operation/projection/ProjectionBenchmark.java  |    4 +-
 .../projection/ProjectionResultComparator.java     |    2 +-
 .../projection/SatelliteTrackingTest.java          |    2 +-
 .../operation/projection/SinusoidalTest.java       |    2 +-
 .../projection/TransverseMercatorTest.java         |    2 +-
 .../operation/projection/ZonedGridSystemTest.java  |    4 +-
 .../provider/CoordinateFrameRotationTest.java      |    2 +-
 .../provider/GeocentricTranslationTest.java        |    2 +-
 .../operation/provider/GeographicOffsetsTest.java  |    2 +-
 .../operation/provider/MapProjectionTest.java      |    2 +-
 .../referencing/operation/provider/NTv2Test.java   |    2 +-
 .../provider/PositionVector7ParamTest.java         |    2 +-
 .../operation/provider/TransverseMercatorTest.java |    2 +-
 .../transform/AbridgedMolodenskyTransformTest.java |    2 +-
 .../transform/ConcatenatedTransformTest.java       |    2 +-
 .../operation/transform/CoordinateDomain.java      |    2 +-
 .../transform/DefaultMathTransformFactoryTest.java |    2 +-
 .../operation/transform/DomainDefinitionTest.java  |    2 +-
 .../transform/EllipsoidToCentricTransformTest.java |    2 +-
 .../transform/InterpolatedTransformTest.java       |    2 +-
 .../operation/transform/LinearTransformTest.java   |    2 +-
 .../transform/MolodenskyTransformTest.java         |    4 +-
 .../transform/OperationMethodSetTest.java          |    2 +-
 .../operation/transform/PoleRotationTest.java      |    2 +-
 .../transform/ProjectiveTransformTest.java         |    6 +-
 .../operation/transform/ScaleTransformTest.java    |    2 +-
 .../transform/SpecializableTransformTest.java      |    2 +-
 .../transform/TranslationTransformTest.java        |    4 +-
 .../transform/WraparoundTransformTest.java         |    2 +-
 .../sis/referencing/privy/AbstractShapeTest.java   |   50 +
 .../sis/referencing/privy/AxesMapperTest.java      |  101 ++
 .../sis/referencing/privy/AxisDirectionsTest.java  |  545 +++++++++++
 .../privy/CoordinateOperationsTest.java            |   80 ++
 .../referencing/privy/DefinitionVerifierTest.java  |  103 ++
 .../privy/EllipsoidalHeightCombinerTest.java       |  171 ++++
 .../sis/referencing/privy/ExtentSelectorTest.java  |  210 ++++
 .../apache/sis/referencing/privy/FormulasTest.java |  142 +++
 .../privy/GeodeticObjectBuilderTest.java           |   66 ++
 .../apache/sis/referencing/privy/LazySetTest.java  |  118 +++
 .../privy/PositionalAccuracyConstantTest.java      |   68 ++
 .../privy/ReferencingUtilitiesTest.java            |  128 +++
 .../sis/referencing/privy/ShapeUtilitiesExt.java   |  147 +++
 .../sis/referencing/privy/ShapeUtilitiesTest.java  |  248 +++++
 .../referencing/privy/ShapeUtilitiesViewer.java    |  266 +++++
 .../sis/referencing/privy/WKTKeywordsTest.java     |   99 ++
 .../sis/referencing/privy/WKTUtilitiesTest.java    |  102 ++
 .../privy/WraparoundApplicatorTest.java            |   47 +
 .../report/CoordinateOperationMethods.java         |    4 +-
 .../report/CoordinateReferenceSystems.java         |    2 +-
 .../sis/referencing/report/HTMLGenerator.java      |    2 +-
 .../sis/referencing/util/AxesMapperTest.java       |  101 --
 .../sis/referencing/util/AxisDirectionsTest.java   |  545 -----------
 .../referencing/util/CoordinateOperationsTest.java |   80 --
 .../referencing/util/DefinitionVerifierTest.java   |  103 --
 .../util/EllipsoidalHeightCombinerTest.java        |  171 ----
 .../sis/referencing/util/ExtentSelectorTest.java   |  210 ----
 .../apache/sis/referencing/util/FormulasTest.java  |  142 ---
 .../util/GeodeticObjectBuilderTest.java            |   66 --
 .../apache/sis/referencing/util/LazySetTest.java   |  118 ---
 .../util/PositionalAccuracyConstantTest.java       |   68 --
 .../referencing/util/ReferencingUtilitiesTest.java |  128 ---
 .../sis/referencing/util/WKTKeywordsTest.java      |   99 --
 .../sis/referencing/util/WKTUtilitiesTest.java     |  102 --
 .../referencing/util/WraparoundApplicatorTest.java |   47 -
 .../referencing/util/j2d/AbstractShapeTest.java    |   50 -
 .../referencing/util/j2d/ShapeUtilitiesExt.java    |  144 ---
 .../referencing/util/j2d/ShapeUtilitiesTest.java   |  248 -----
 .../referencing/util/j2d/ShapeUtilitiesViewer.java |  266 -----
 .../sis/test/integration/ConsistencyTest.java      |    2 +-
 .../apache/sis/test/integration/MetadataTest.java  |    4 +-
 .../org/apache/sis/test/widget/package-info.java   |    2 +-
 .../CC_OperationParameterGroupTest.java            |    2 +-
 .../apache/sis/xml/bind/referencing/CodeTest.java  |    2 +-
 .../main/org/apache/sis/storage/landsat/Band.java  |    2 +-
 .../org/apache/sis/storage/landsat/BandGroup.java  |    2 +-
 .../apache/sis/storage/landsat/LandsatStore.java   |    2 +-
 .../apache/sis/storage/landsat/MetadataReader.java |   12 +-
 .../sis/storage/geotiff/CompressedSubset.java      |    2 +-
 .../apache/sis/storage/geotiff/Compression.java    |    2 +-
 .../org/apache/sis/storage/geotiff/DataSubset.java |    8 +-
 .../apache/sis/storage/geotiff/GeoTiffStore.java   |    4 +-
 .../sis/storage/geotiff/GeoTiffStoreProvider.java  |    2 +-
 .../sis/storage/geotiff/ImageFileDirectory.java    |   10 +-
 .../sis/storage/geotiff/MultiResolutionImage.java  |    2 +-
 .../org/apache/sis/storage/geotiff/Writer.java     |    4 +-
 .../sis/storage/geotiff/reader/CRSBuilder.java     |   14 +-
 .../geotiff/reader/GridGeometryBuilder.java        |    2 +-
 .../apache/sis/storage/geotiff/reader/Type.java    |    2 +-
 .../sis/storage/geotiff/reader/XMLMetadata.java    |    4 +-
 .../sis/storage/geotiff/spi/SchemaModifier.java    |    2 +-
 .../sis/storage/geotiff/writer/GeoEncoder.java     |    8 +-
 .../storage/geotiff/writer/ReformattedImage.java   |    2 +-
 .../org/apache/sis/storage/geotiff/WriterTest.java |    2 +-
 .../storage/geotiff/reader/XMLMetadataTest.java    |    2 +-
 .../apache/sis/storage/netcdf/MetadataReader.java  |    6 +-
 .../org/apache/sis/storage/netcdf/NetcdfStore.java |    4 +-
 .../org/apache/sis/storage/netcdf/base/Axis.java   |    2 +-
 .../apache/sis/storage/netcdf/base/AxisType.java   |    2 +-
 .../apache/sis/storage/netcdf/base/CRSBuilder.java |    4 +-
 .../apache/sis/storage/netcdf/base/CRSMerger.java  |    4 +-
 .../apache/sis/storage/netcdf/base/Convention.java |    2 +-
 .../apache/sis/storage/netcdf/base/Decoder.java    |    4 +-
 .../apache/sis/storage/netcdf/base/FeatureSet.java |    4 +-
 .../org/apache/sis/storage/netcdf/base/Grid.java   |    2 +-
 .../sis/storage/netcdf/base/GridCacheKey.java      |    2 +-
 .../sis/storage/netcdf/base/GridMapping.java       |    6 +-
 .../org/apache/sis/storage/netcdf/base/HYCOM.java  |    2 +-
 .../apache/sis/storage/netcdf/base/Linearizer.java |    6 +-
 .../sis/storage/netcdf/base/NamedElement.java      |    2 +-
 .../org/apache/sis/storage/netcdf/base/Node.java   |    2 +-
 .../sis/storage/netcdf/base/RasterResource.java    |    8 +-
 .../apache/sis/storage/netcdf/base/Variable.java   |    6 +-
 .../sis/storage/netcdf/classic/ChannelDecoder.java |    6 +-
 .../sis/storage/netcdf/classic/GridInfo.java       |    2 +-
 .../sis/storage/netcdf/classic/VariableInfo.java   |    4 +-
 .../sis/storage/netcdf/ucar/DimensionWrapper.java  |    2 +-
 .../sis/storage/netcdf/ucar/GridWrapper.java       |    2 +-
 .../sis/storage/netcdf/ucar/VariableWrapper.java   |    2 +-
 .../sis/storage/netcdf/base/FeatureSetTest.java    |    2 +-
 .../main/org/apache/sis/storage/sql/SQLStore.java  |    2 +-
 .../org/apache/sis/storage/sql/feature/Column.java |    6 +-
 .../apache/sis/storage/sql/feature/Database.java   |   10 +-
 .../sis/storage/sql/feature/FeatureAdapter.java    |    2 +-
 .../sis/storage/sql/feature/FeatureAnalyzer.java   |    2 +-
 .../sis/storage/sql/feature/FeatureIterator.java   |    2 +-
 .../sis/storage/sql/feature/FeatureStream.java     |    6 +-
 .../sis/storage/sql/feature/InfoStatements.java    |    8 +-
 .../apache/sis/storage/sql/feature/PrimaryKey.java |    4 +-
 .../sis/storage/sql/feature/QueryAnalyzer.java     |    4 +-
 .../apache/sis/storage/sql/feature/Relation.java   |    4 +-
 .../sis/storage/sql/feature/SelectionClause.java   |    2 +-
 .../storage/sql/feature/SelectionClauseWriter.java |    4 +-
 .../org/apache/sis/storage/sql/feature/Table.java  |    4 +-
 .../sis/storage/sql/feature/TableAnalyzer.java     |    6 +-
 .../sis/storage/sql/feature/TableReference.java    |    2 +-
 .../sis/storage/sql/feature/ValueGetter.java       |    4 +-
 .../sis/storage/sql/postgis/ExtentEstimator.java   |    2 +-
 .../apache/sis/storage/sql/postgis/Postgres.java   |    2 +-
 .../sis/storage/sql/postgis/RasterReader.java      |    8 +-
 .../org/apache/sis/storage/sql/SQLStoreTest.java   |    2 +-
 .../sql/feature/TemporalValueGetterTest.java       |    2 +-
 .../apache/sis/storage/sql/postgis/TestRaster.java |    2 +-
 .../main/org/apache/sis/storage/gpx/Metadata.java  |    2 +-
 .../main/org/apache/sis/storage/gpx/Reader.java    |    2 +-
 .../main/org/apache/sis/storage/gpx/Types.java     |    2 +-
 .../main/org/apache/sis/storage/gpx/Writer.java    |    2 +-
 .../sis/storage/xml/stream/FormattedWriter.java    |    2 +-
 .../sis/storage/xml/stream/NamespaceEraser.java    |    2 +-
 .../sis/storage/xml/stream/StaxDataStore.java      |    6 +-
 .../sis/storage/xml/stream/StaxStreamReader.java   |    4 +-
 .../test/org/apache/sis/storage/gpx/TypesTest.java |    2 +-
 .../apache/sis/io/stream/ChannelDataOutput.java    |    2 +-
 .../apache/sis/io/stream/FileCacheByteChannel.java |    2 +-
 .../main/org/apache/sis/io/stream/IOUtilities.java |    2 +-
 .../sis/storage/AbstractGridCoverageResource.java  |    2 +-
 .../org/apache/sis/storage/CoverageSubset.java     |    6 +-
 .../main/org/apache/sis/storage/DataStore.java     |    2 +-
 .../org/apache/sis/storage/DataStoreRegistry.java  |    4 +-
 .../main/org/apache/sis/storage/FeatureNaming.java |    2 +-
 .../main/org/apache/sis/storage/FeatureQuery.java  |    8 +-
 .../main/org/apache/sis/storage/FeatureSubset.java |    2 +-
 .../main/org/apache/sis/storage/ProbeResult.java   |    2 +-
 .../org/apache/sis/storage/StorageConnector.java   |    2 +-
 .../aggregate/BandAggregateGridResource.java       |    6 +-
 .../storage/aggregate/ConcatenatedFeatureSet.java  |    4 +-
 .../aggregate/ConcatenatedGridCoverage.java        |    4 +-
 .../aggregate/ConcatenatedGridResource.java        |    6 +-
 .../sis/storage/aggregate/CoverageAggregator.java  |    2 +-
 .../sis/storage/aggregate/DimensionSelector.java   |    2 +-
 .../apache/sis/storage/aggregate/GridSlice.java    |    4 +-
 .../org/apache/sis/storage/aggregate/Group.java    |    2 +-
 .../sis/storage/aggregate/GroupAggregate.java      |    4 +-
 .../sis/storage/aggregate/JoinFeatureSet.java      |    2 +-
 .../sis/storage/aggregate/MergeStrategy.java       |    4 +-
 .../main/org/apache/sis/storage/base/CodeType.java |    4 +-
 .../org/apache/sis/storage/base/LegalSymbols.java  |    2 +-
 .../apache/sis/storage/base/MetadataBuilder.java   |    6 +-
 .../org/apache/sis/storage/base/PRJDataStore.java  |    2 +-
 .../apache/sis/storage/base/ResourceLineage.java   |    4 +-
 .../apache/sis/storage/base/SimpleAggregate.java   |    2 +-
 .../apache/sis/storage/base/StoreUtilities.java    |    2 +-
 .../sis/storage/base/TiledDeferredImage.java       |    2 +-
 .../apache/sis/storage/base/TiledGridCoverage.java |    4 +-
 .../apache/sis/storage/base/TiledGridResource.java |    2 +-
 .../org/apache/sis/storage/base/URIDataStore.java  |    4 +-
 .../sis/storage/csv/MovingFeatureBuilder.java      |    4 +-
 .../main/org/apache/sis/storage/csv/Store.java     |    8 +-
 .../org/apache/sis/storage/csv/TimeEncoding.java   |    2 +-
 .../apache/sis/storage/esri/AsciiGridStore.java    |    2 +-
 .../org/apache/sis/storage/esri/RasterStore.java   |   12 +-
 .../apache/sis/storage/esri/RawRasterReader.java   |    8 +-
 .../apache/sis/storage/esri/RawRasterStore.java    |    6 +-
 .../apache/sis/storage/event/StoreListeners.java   |    2 +-
 .../main/org/apache/sis/storage/folder/Store.java  |    2 +-
 .../sis/storage/image/WorldFileResource.java       |    6 +-
 .../apache/sis/storage/image/WorldFileStore.java   |    4 +-
 .../org/apache/sis/storage/wkt/StoreFormat.java    |    2 +-
 .../org/apache/sis/storage/wkt/StoreProvider.java  |    2 +-
 .../main/org/apache/sis/storage/xml/Store.java     |    4 +-
 .../org/apache/sis/storage/xml/StoreProvider.java  |    2 +-
 .../org/apache/sis/storage/CoverageQueryTest.java  |    2 +-
 .../org/apache/sis/storage/FeatureQueryTest.java   |    2 +-
 .../sis/storage/aggregate/JoinFeatureSetTest.java  |    2 +-
 .../sis/storage/base/MemoryGridResourceTest.java   |    2 +-
 .../sis/storage/test/CoverageReadConsistency.java  |    4 +-
 .../apache/sis/storage/test/SubsampledImage.java   |    2 +-
 .../sis/storage/xml/MimeTypeDetectorTest.java      |    2 +-
 .../test/org/apache/sis/storage/xml/StoreTest.java |    2 +-
 .../src/org.apache.sis.util/main/module-info.java  |    4 +-
 .../org/apache/sis/converter/StringConverter.java  |    4 +-
 .../main/org/apache/sis/io/CompoundFormat.java     |    6 +-
 .../main/org/apache/sis/io/DefaultFormat.java      |    2 +-
 .../org/apache/sis/io/IdentifiedObjectFormat.java  |    6 +-
 .../main/org/apache/sis/io/LineAppender.java       |    2 +-
 .../main/org/apache/sis/io/TableAppender.java      |    2 +-
 .../main/org/apache/sis/math/ArrayVector.java      |    2 +-
 .../main/org/apache/sis/math/DecimalFunctions.java |    2 +-
 .../main/org/apache/sis/math/Fraction.java         |    2 +-
 .../main/org/apache/sis/math/Line.java             |    6 +-
 .../org/apache/sis/math/LinearlyDerivedVector.java |    2 +-
 .../main/org/apache/sis/math/MathFunctions.java    |    6 +-
 .../main/org/apache/sis/math/Plane.java            |    6 +-
 .../main/org/apache/sis/math/Statistics.java       |    4 +-
 .../main/org/apache/sis/math/StatisticsFormat.java |    2 +-
 .../main/org/apache/sis/math/Vector.java           |    2 +-
 .../main/org/apache/sis/measure/AbstractUnit.java  |    2 +-
 .../main/org/apache/sis/measure/Angle.java         |    2 +-
 .../main/org/apache/sis/measure/AngleFormat.java   |    4 +-
 .../org/apache/sis/measure/LinearConverter.java    |    4 +-
 .../main/org/apache/sis/measure/NumberRange.java   |    2 +-
 .../main/org/apache/sis/measure/Prefixes.java      |    2 +-
 .../main/org/apache/sis/measure/Range.java         |    2 +-
 .../main/org/apache/sis/measure/RangeFormat.java   |    6 +-
 .../main/org/apache/sis/measure/Scalar.java        |    2 +-
 .../apache/sis/measure/SexagesimalConverter.java   |    2 +-
 .../main/org/apache/sis/measure/UnitDimension.java |    2 +-
 .../main/org/apache/sis/measure/UnitFormat.java    |    6 +-
 .../main/org/apache/sis/measure/UnitRegistry.java  |    2 +-
 .../main/org/apache/sis/measure/UnitServices.java  |    2 +-
 .../main/org/apache/sis/measure/Units.java         |    2 +-
 .../main/org/apache/sis/setup/About.java           |    6 +-
 .../main/org/apache/sis/setup/Configuration.java   |    2 +-
 .../apache/sis/setup/InstallationResources.java    |    6 +-
 .../apache/sis/setup/OptionalInstallations.java    |    2 +-
 .../main/org/apache/sis/system/DataDirectory.java  |    2 +-
 .../sis/util/AbstractInternationalString.java      |    2 +-
 .../main/org/apache/sis/util/ArgumentChecks.java   |    2 +-
 .../main/org/apache/sis/util/Characters.java       |    4 +-
 .../main/org/apache/sis/util/Numbers.java          |    4 +-
 .../apache/sis/util/collection/CodeListSet.java    |    4 +-
 .../org/apache/sis/util/collection/Containers.java |    2 +-
 .../sis/util/collection/DefaultTreeTable.java      |    4 +-
 .../org/apache/sis/util/collection/DerivedSet.java |    2 +-
 .../apache/sis/util/collection/IntegerList.java    |    2 +-
 .../sis/util/collection/TreeTableFormat.java       |    6 +-
 .../apache/sis/util/internal/AbstractIterator.java |   63 --
 .../org/apache/sis/util/internal/AbstractMap.java  |  709 --------------
 .../apache/sis/util/internal/AbstractMapEntry.java |  100 --
 .../sis/util/internal/AutoMessageFormat.java       |    1 +
 .../main/org/apache/sis/util/internal/Bag.java     |   99 --
 .../apache/sis/util/internal/CheckedArrayList.java |  324 -------
 .../apache/sis/util/internal/CheckedHashSet.java   |  115 ---
 .../org/apache/sis/util/internal/CloneAccess.java  |   46 -
 .../main/org/apache/sis/util/internal/Cloner.java  |  267 -----
 .../org/apache/sis/util/internal/CodeLists.java    |  160 ---
 .../apache/sis/util/internal/CollectionsExt.java   |  880 -----------------
 .../org/apache/sis/util/internal/Constants.java    |  266 -----
 .../apache/sis/util/internal/DefinitionURI.java    |  749 --------------
 .../org/apache/sis/util/internal/DoubleDouble.java |  918 ------------------
 .../org/apache/sis/util/internal/EmptyQueue.java   |   68 --
 .../sis/util/internal/ListOfUnknownSize.java       |  259 -----
 .../sis/util/internal/LocalizedParseException.java |  195 ----
 .../apache/sis/util/internal/MetadataServices.java |  205 ----
 .../org/apache/sis/util/internal/Numerics.java     |  648 -------------
 .../apache/sis/util/internal/PropertyFormat.java   |  238 -----
 .../apache/sis/util/internal/SetOfUnknownSize.java |  199 ----
 .../sis/util/internal/StandardDateFormat.java      |  513 ----------
 .../main/org/apache/sis/util/internal/Strings.java |  420 --------
 .../sis/util/internal/TreeFormatCustomization.java |   51 -
 .../main/org/apache/sis/util/internal/URLs.java    |   64 --
 .../sis/util/internal/UnmodifiableArrayList.java   |  439 ---------
 .../main/org/apache/sis/util/internal/Unsafe.java  |  106 --
 .../main/org/apache/sis/util/internal/X364.java    |  303 ------
 .../org/apache/sis/util/internal/package-info.java |    8 +-
 .../apache/sis/util/logging/MonolineFormatter.java |    6 +-
 .../apache/sis/util/privy/AbstractIterator.java    |   63 ++
 .../org/apache/sis/util/privy/AbstractMap.java     |  709 ++++++++++++++
 .../apache/sis/util/privy/AbstractMapEntry.java    |  100 ++
 .../main/org/apache/sis/util/privy/Bag.java        |   99 ++
 .../apache/sis/util/privy/CheckedArrayList.java    |  324 +++++++
 .../org/apache/sis/util/privy/CheckedHashSet.java  |  115 +++
 .../org/apache/sis/util/privy/CloneAccess.java     |   46 +
 .../main/org/apache/sis/util/privy/Cloner.java     |  267 +++++
 .../main/org/apache/sis/util/privy/CodeLists.java  |  160 +++
 .../org/apache/sis/util/privy/CollectionsExt.java  |  880 +++++++++++++++++
 .../main/org/apache/sis/util/privy/Constants.java  |  266 +++++
 .../org/apache/sis/util/privy/DefinitionURI.java   |  749 ++++++++++++++
 .../org/apache/sis/util/privy/DoubleDouble.java    |  918 ++++++++++++++++++
 .../main/org/apache/sis/util/privy/EmptyQueue.java |   68 ++
 .../apache/sis/util/privy/ListOfUnknownSize.java   |  259 +++++
 .../sis/util/privy/LocalizedParseException.java    |  195 ++++
 .../apache/sis/util/privy/MetadataServices.java    |  205 ++++
 .../main/org/apache/sis/util/privy/Numerics.java   |  648 +++++++++++++
 .../org/apache/sis/util/privy/PropertyFormat.java  |  238 +++++
 .../apache/sis/util/privy/SetOfUnknownSize.java    |  199 ++++
 .../apache/sis/util/privy/StandardDateFormat.java  |  513 ++++++++++
 .../main/org/apache/sis/util/privy/Strings.java    |  420 ++++++++
 .../sis/util/privy/TreeFormatCustomization.java    |   51 +
 .../main/org/apache/sis/util/privy/URLs.java       |   64 ++
 .../sis/util/privy/UnmodifiableArrayList.java      |  439 +++++++++
 .../main/org/apache/sis/util/privy/Unsafe.java     |  106 ++
 .../main/org/apache/sis/util/privy/X364.java       |  303 ++++++
 .../org/apache/sis/util/privy/package-info.java    |   36 +
 .../sis/util/resources/IndexedResourceBundle.java  |    4 +-
 .../org/apache/sis/util/resources/Messages.java    |    5 +
 .../apache/sis/util/resources/Messages.properties  |    1 +
 .../sis/util/resources/Messages_fr.properties      |    1 +
 .../apache/sis/util/resources/package-info.java    |    4 +-
 .../test/org/apache/sis/io/WordWrapTest.java       |    2 +-
 .../org/apache/sis/measure/RangeFormatTest.java    |    2 +-
 .../test/org/apache/sis/test/TestCase.java         |    2 +-
 .../test/org/apache/sis/test/TestUtilities.java    |    4 +-
 .../org/apache/sis/util/collection/CacheTest.java  |    2 +-
 .../apache/sis/util/collection/RangeSetTest.java   |    4 +-
 .../apache/sis/util/internal/AbstractMapTest.java  |  191 ----
 .../test/org/apache/sis/util/internal/BagTest.java |   84 --
 .../sis/util/internal/CheckedArrayListTest.java    |  146 ---
 .../sis/util/internal/CollectionsExtTest.java      |  175 ----
 .../sis/util/internal/DefinitionURITest.java       |  270 ------
 .../apache/sis/util/internal/DoubleDoubleTest.java |  410 --------
 .../sis/util/internal/ListOfUnknownSizeTest.java   |   64 --
 .../util/internal/LocalizedParseExceptionTest.java |   76 --
 .../org/apache/sis/util/internal/NumericsTest.java |  242 -----
 .../sis/util/internal/StandardDateFormatTest.java  |  148 ---
 .../org/apache/sis/util/internal/StringsTest.java  |   57 --
 .../org/apache/sis/util/internal/X364Test.java     |   69 --
 .../sis/util/logging/MonolineFormatterTest.java    |    2 +-
 .../org/apache/sis/util/privy/AbstractMapTest.java |  191 ++++
 .../test/org/apache/sis/util/privy/BagTest.java    |   84 ++
 .../sis/util/privy/CheckedArrayListTest.java       |  146 +++
 .../apache/sis/util/privy/CollectionsExtTest.java  |  175 ++++
 .../apache/sis/util/privy/DefinitionURITest.java   |  270 ++++++
 .../apache/sis/util/privy/DoubleDoubleTest.java    |  410 ++++++++
 .../sis/util/privy/ListOfUnknownSizeTest.java      |   64 ++
 .../util/privy/LocalizedParseExceptionTest.java    |   76 ++
 .../org/apache/sis/util/privy/NumericsTest.java    |  242 +++++
 .../sis/util/privy/StandardDateFormatTest.java     |  148 +++
 .../org/apache/sis/util/privy/StringsTest.java     |   57 ++
 .../test/org/apache/sis/util/privy/X364Test.java   |   69 ++
 .../main/org/apache/sis/cql/CQL.java               |    2 +-
 .../org/apache/sis/cql/FilterToCQLVisitor.java     |    6 +-
 .../test/org/apache/sis/cql/FilterReadingTest.java |    2 +-
 .../test/org/apache/sis/cql/FilterWritingTest.java |    2 +-
 .../main/org/apache/sis/map/SEPortrayer.java       |    4 +-
 .../main/org/apache/sis/map/SymbologyVisitor.java  |    2 +-
 .../apache/sis/map/service/se1/LineToScene2D.java  |    2 +-
 .../test/org/apache/sis/map/SEPortrayerTest.java   |    2 +-
 .../storage/shapefile/ListingPropertyVisitor.java  |    4 +-
 .../sis/storage/shapefile/ShapefileStore.java      |    4 +-
 .../sis/storage/shapefile/ShapefileStoreTest.java  |    2 +-
 netbeans-project/nbproject/project.properties      |    6 +-
 .../apache/sis/gui/controls/SyncWindowList.java    |    2 +-
 .../apache/sis/gui/controls/ValueColorMapper.java  |    2 +-
 .../apache/sis/gui/coverage/CoverageCanvas.java    |    2 +-
 .../org/apache/sis/gui/coverage/GridTileCache.java |    2 +-
 .../main/org/apache/sis/gui/coverage/GridView.java |    2 +-
 .../apache/sis/gui/coverage/IsolineRenderer.java   |    2 +-
 .../org/apache/sis/gui/dataset/ExpandableList.java |    2 +-
 .../org/apache/sis/gui/dataset/FeatureList.java    |    2 +-
 .../org/apache/sis/gui/dataset/FeatureTable.java   |    4 +-
 .../org/apache/sis/gui/dataset/ResourceCell.java   |    2 +-
 .../apache/sis/gui/internal/DataStoreOpener.java   |    2 +-
 .../org/apache/sis/gui/internal/GUIUtilities.java  |    2 +-
 .../apache/sis/gui/internal/ImageConverter.java    |    6 +-
 .../sis/gui/internal/PropertyValueFormats.java     |    2 +-
 .../sis/gui/internal/PropertyValueFormatter.java   |    2 +-
 .../apache/sis/gui/internal/io/FileAccessItem.java |    2 +-
 .../main/org/apache/sis/gui/map/MapCanvas.java     |    8 +-
 .../main/org/apache/sis/gui/map/MapCanvasAWT.java  |    2 +-
 .../main/org/apache/sis/gui/map/StatusBar.java     |    2 +-
 .../org/apache/sis/gui/map/ValuesFormatter.java    |    2 +-
 .../sis/gui/metadata/IdentificationInfo.java       |    4 +-
 .../apache/sis/gui/metadata/MetadataSummary.java   |    2 +-
 .../sis/gui/metadata/RepresentationInfo.java       |    2 +-
 .../sis/gui/metadata/StandardMetadataTree.java     |    2 +-
 .../apache/sis/gui/referencing/AuthorityCodes.java |    4 +-
 .../org/apache/sis/gui/referencing/CRSChooser.java |    2 +-
 .../org/apache/sis/gui/referencing/CodeFilter.java |    2 +-
 .../org/apache/sis/gui/referencing/MenuSync.java   |    2 +-
 .../gui/referencing/PositionableProjection.java    |    4 +-
 .../gui/referencing/RecentReferenceSystems.java    |    4 +-
 .../main/org/apache/sis/gui/referencing/Utils.java |    2 +-
 1286 files changed, 46864 insertions(+), 46778 deletions(-)

diff --cc 
endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/jts/Wrapper.java
index 01dad9455c,b38ceb26e5..df20efc692
--- 
a/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/jts/Wrapper.java
+++ 
b/endorsed/src/org.apache.sis.feature/main/org/apache/sis/geometry/wrapper/jts/Wrapper.java
@@@ -45,9 -45,9 +45,9 @@@ import org.opengis.util.FactoryExceptio
  import org.opengis.geometry.DirectPosition;
  import org.opengis.referencing.crs.CoordinateReferenceSystem;
  import org.opengis.referencing.operation.CoordinateOperation;
 -import org.opengis.referencing.operation.MathTransform;
  import org.opengis.referencing.operation.TransformException;
 +import org.opengis.referencing.operation.MathTransform;
- import org.apache.sis.referencing.util.ReferencingUtilities;
+ import org.apache.sis.referencing.privy.ReferencingUtilities;
  import org.apache.sis.geometry.DirectPosition2D;
  import org.apache.sis.geometry.GeneralDirectPosition;
  import org.apache.sis.geometry.GeneralEnvelope;
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/internal/CitationConstant.java
index 0000000000,7b2c089edf..4be6930510
mode 000000,100644..100644
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/internal/CitationConstant.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/internal/CitationConstant.java
@@@ -1,0 -1,244 +1,244 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one or more
+  * contributor license agreements.  See the NOTICE file distributed with
+  * this work for additional information regarding copyright ownership.
+  * The ASF licenses this file to You under the Apache License, Version 2.0
+  * (the "License"); you may not use this file except in compliance with
+  * the License.  You may obtain a copy of the License at
+  *
+  *     http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+ package org.apache.sis.metadata.internal;
+ 
+ import java.util.Date;
+ import java.util.Collection;
+ import java.util.logging.Logger;
+ import java.io.ObjectStreamException;
+ import org.opengis.metadata.Identifier;
+ import org.opengis.metadata.citation.Citation;
+ import org.opengis.metadata.citation.CitationDate;
+ import org.opengis.metadata.citation.PresentationForm;
+ import org.opengis.metadata.citation.Series;
+ import org.opengis.util.InternationalString;
+ import org.apache.sis.xml.IdentifierSpace;
+ import org.apache.sis.metadata.sql.MetadataSource;
+ import org.apache.sis.metadata.sql.MetadataStoreException;
+ import org.apache.sis.metadata.iso.citation.Citations;
+ import org.apache.sis.metadata.simple.SimpleCitation;
+ import org.apache.sis.system.Loggers;
+ import org.apache.sis.util.privy.Strings;
+ import org.apache.sis.util.logging.Logging;
+ 
++// Specific to the main and geoapi-3.1 branches:
++import org.opengis.metadata.citation.ResponsibleParty;
++
+ // Specific to the geoapi-3.1 and geoapi-4.0 branches:
+ import org.opengis.metadata.citation.OnlineResource;
+ import org.opengis.metadata.identification.BrowseGraphic;
+ 
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.citation.Responsibility;
 -
+ 
+ /**
+  * Base class for the {@code public static final Citation} constants defined 
in some SIS classes.
+  * This base class contains only an abbreviation (e.g. {@code "OGC"} or 
{@code "EPSG"}) which can
+  * be used as the primary key where to search for more information in a 
database. If no database
+  * is available, then that simple primary key will be used as the citation 
title.
+  *
+  * @author  Martin Desruisseaux (Geomatys)
+  *
+  * @see IdentifierSpace
+  * @see Citations
+  */
+ public class CitationConstant extends SimpleCitation {
+     /**
+      * For cross-version compatibility.
+      */
+     private static final long serialVersionUID = -8429121584437634107L;
+ 
+     /**
+      * Where to log warnings when searching for an entry in the database.
+      */
+     private static final Logger LOGGER = Logger.getLogger(Loggers.SQL);
+ 
+     /**
+      * Class of {@code public static final Citation} constants which are also 
used as namespace for identifiers.
+      * The most typical example is the "EPSG" authority which manage the 
codes identifying Coordinate Reference
+      * System (CRS) objects in the EPSG namespace.
+      *
+      * @param <T>  the type of object used as identifier values.
+      */
+     public static class Authority<T> extends CitationConstant implements 
IdentifierSpace<T> {
+         /**
+          * For cross-version compatibility.
+          */
+         private static final long serialVersionUID = 2067932813561130294L;
+ 
+         /**
+          * Creates a new citation for an authority managing codes in the 
given namespace.
+          * This constructor assumes that the namespace is the same as the 
abbreviation given as citation title.
+          *
+          * @param  namespace  the namespace of codes managed by this 
authority (e.g. "EPSG").
+          */
+         public Authority(final String namespace) {
+             super(namespace);
+         }
+ 
+         /**
+          * Creates a new citation for an authority managing codes in the 
given namespace.
+          *
+          * @param  name       a human-understandable primary key for fetching 
more information.
+          * @param  namespace  the namespace of codes managed by this 
authority (e.g. "EPSG").
+          */
+         public Authority(final String name, final String namespace) {
+             super(name, namespace);
+         }
+ 
+         /**
+          * Returns the name space given at construction time. Can be one of 
the following:
+          * <ul>
+          *   <li>Abbreviation of the authority managing the codes (e.g. 
{@code "EPSG"} or {@code "ISBN"}).</li>
+          *   <li>XML attribute name with its prefix (e.g. {@code "gml:id"}, 
{@code "gco:uuid"} or {@code "xlink:href"}).</li>
+          * </ul>
+          */
+         @Override
+         public final String getName() {
+             return namespace;
+         }
+ 
+         /**
+          * Returns a string representation of this identifier space.
+          */
+         @Override
+         public final String toString() {
+             return Strings.bracket(IdentifierSpace.class, title);
+         }
+     }
+ 
+     /**
+      * The name by which this citation is known to {@link 
Citations#fromName(String)}.
+      * Often the same as the abbreviation that {@link CitationConstant} uses 
as the title.
+      * If this {@code CitationConstant} is a {@link Authority} subtype, then 
this is also
+      * the authority namespace.
+      */
+     public final String namespace;
+ 
+     /**
+      * The citation which contain the "real" data, or {@code null} if not yet 
created.
+      * This is usually an instance created by {@link MetadataSource}. Those 
instances
+      * manage their own caching, so accesses to the database should not occur 
often.
+      */
+     private transient volatile Citation delegate;
+ 
+     /**
+      * Creates a new proxy for the given primary key.
+      * The key should be readable enough for being usable as a fallback if 
the database is not available.
+      *
+      * @param  name  a human-understandable primary key for fetching more 
information.
+      */
+     public CitationConstant(final String name) {
+         super(name);
+         this.namespace = name;
+     }
+ 
+     /**
+      * Creates a new proxy for the given primary key but a different 
programmatic name.
+      * The key should be readable enough for being usable as a fallback if 
the database is not available.
+      *
+      * @param  name       a human-understandable primary key for fetching 
more information.
+      * @param  namespace  the name by which this citation is known to {@link 
Citations#fromName(String)}.
+      */
+     public CitationConstant(final String name, final String namespace) {
+         super(name);
+         this.namespace = namespace;
+     }
+ 
+     /**
+      * Notify this instance that the database content may have changed, or 
that the module path has changed.
+      */
+     public final void refresh() {
+         delegate = null;
+     }
+ 
+     /**
+      * Returns the citation instance which contain the actual data. That 
instance is provided by the
+      * {@code org.apache.sis.metadata} module, which is optional. If that 
module is not on the module path,
+      * then this {@code delegate()} method will use the few information 
provided by the current instance.
+      *
+      * <p>Note that it should be very rare to not have {@code 
org.apache.sis.metadata} on the module path,
+      * since that module is required by {@code org.apache.sis.referencing} 
which is itself required by
+      * almost all other SIS modules.</p>
+      */
+     @SuppressWarnings("DoubleCheckedLocking")
+     private Citation delegate() {
+         Citation c = delegate;
+         if (c == null) {
+             synchronized (this) {
+                 c = delegate;
+                 if (c == null) {
+                     try {
+                         c = 
MetadataSource.getProvided().lookup(Citation.class, title);
+                     } catch (MetadataStoreException e) {
+                         /*
+                          * If no database was available, 
MetadataSource.getProvided() was supposed to fallback on
+                          * the MetadataFallback class. So if we get this 
exception, a more serious error occurred.
+                          * It is still not fatal however, since most of 
Citation content is informative.
+                          */
+                         Logging.unexpectedException(LOGGER, 
CitationConstant.class, "delegate", e);
+                         c = new SimpleCitation(title);
+                     }
+                     delegate = c;
+                 }
+             }
+         }
+         return c;
+     }
+ 
+     /**
+      * Returns the title, which is mandatory.
+      */
+     @Override
+     public InternationalString getTitle() {
+         InternationalString title = delegate().getTitle();
+         return (title != null) ? title : super.getTitle();
+     }
+ 
+     /**
+      * Redirects the call to the delegate citation (the instance which 
actually contain the data).
+      *
+      * @return the value returned by the delegate.
+      */
+     @Override public Collection<? extends InternationalString>  
getAlternateTitles()         {return delegate().getAlternateTitles();}
+     @Override public Collection<? extends CitationDate>         getDates()    
               {return delegate().getDates();}
+     @Override public InternationalString                        getEdition()  
               {return delegate().getEdition();}
+     @Override public Date                                       
getEditionDate()             {return delegate().getEditionDate();}
+     @Override public Collection<? extends Identifier>           
getIdentifiers()             {return delegate().getIdentifiers();}
 -    @Override public Collection<? extends Responsibility>       
getCitedResponsibleParties() {return delegate().getCitedResponsibleParties();}
++    @Override public Collection<? extends ResponsibleParty>     
getCitedResponsibleParties() {return delegate().getCitedResponsibleParties();}
+     @Override public Collection<PresentationForm>               
getPresentationForms()       {return delegate().getPresentationForms();}
+     @Override public Series                                     getSeries()   
               {return delegate().getSeries();}
 -    @Override public Collection<? extends InternationalString>  
getOtherCitationDetails()    {return delegate().getOtherCitationDetails();}
++    @Override public InternationalString                        
getOtherCitationDetails()    {return delegate().getOtherCitationDetails();}
+     @Override public Collection<? extends OnlineResource>       
getOnlineResources()         {return delegate().getOnlineResources();}
+     @Override public Collection<? extends BrowseGraphic>        getGraphics() 
               {return delegate().getGraphics();}
+     @Override public String                                     getISBN()     
               {return delegate().getISBN();}
+     @Override public String                                     getISSN()     
               {return delegate().getISSN();}
+ 
+     /**
+      * Invoked at deserialization time in order to replace the deserialized 
instance by the existing
+      * instance defined in the {@link 
org.apache.sis.metadata.iso.citation.Citations} class.
+      *
+      * @return the instance to use, as an unique instance if possible.
+      * @throws ObjectStreamException never thrown.
+      */
+     protected Object readResolve() throws ObjectStreamException {
+         final Citation c = Citations.fromName(title);
+         return (c instanceof CitationConstant) ? c : this;
+         /*
+          * Returns 'this' should happen only if the Citation has been 
serialized
+          * on a more recent version of Apache SIS than the current version.
+          */
+     }
+ }
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
index 5dc31db8e1,9e58d0daf4..1ed8ffc37e
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/DefaultExtendedElementInformation.java
@@@ -30,16 -30,12 +30,16 @@@ import org.apache.sis.xml.Namespaces
  import org.apache.sis.xml.NilReason;
  import org.apache.sis.xml.bind.Context;
  import org.apache.sis.xml.bind.FilterByVersion;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  import org.apache.sis.metadata.internal.Dependencies;
  import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
- import org.apache.sis.util.internal.CollectionsExt;
- import static 
org.apache.sis.metadata.internal.ImplementationHelper.ensurePositive;
+ import org.apache.sis.util.privy.CollectionsExt;
+ import static 
org.apache.sis.metadata.privy.ImplementationHelper.ensurePositive;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.Obligation;
 +import org.opengis.metadata.citation.ResponsibleParty;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import java.util.AbstractSet;
  import java.util.Iterator;
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
index b5b573c910,bfc73b1d50..7436c358fc
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
@@@ -28,11 -28,11 +28,11 @@@ import org.opengis.metadata.acquisition
  import org.opengis.metadata.acquisition.Requirement;
  import org.opengis.metadata.citation.Citation;
  import org.apache.sis.metadata.iso.ISOMetadata;
- import static org.apache.sis.metadata.internal.ImplementationHelper.toDate;
- import static 
org.apache.sis.metadata.internal.ImplementationHelper.toMilliseconds;
+ import static org.apache.sis.metadata.privy.ImplementationHelper.toDate;
+ import static 
org.apache.sis.metadata.privy.ImplementationHelper.toMilliseconds;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.citation.Responsibility;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitation.java
index d3324e523e,24ae2c5fef..4ed38a35e0
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitation.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/citation/DefaultCitation.java
@@@ -38,11 -38,11 +38,11 @@@ import org.apache.sis.xml.privy.LegacyN
  import org.apache.sis.metadata.TitleProperty;
  import org.apache.sis.metadata.iso.ISOMetadata;
  import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
- import static org.apache.sis.metadata.internal.ImplementationHelper.toDate;
- import static 
org.apache.sis.metadata.internal.ImplementationHelper.toMilliseconds;
+ import static org.apache.sis.metadata.privy.ImplementationHelper.toDate;
+ import static 
org.apache.sis.metadata.privy.ImplementationHelper.toMilliseconds;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.citation.Responsibility;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/content/DefaultBand.java
index 2d29983b29,179f4283e5..a8898f2b69
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/content/DefaultBand.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/content/DefaultBand.java
@@@ -29,10 -29,10 +29,10 @@@ import org.opengis.metadata.content.Tra
  import org.apache.sis.measure.ValueRange;
  import org.apache.sis.xml.bind.gco.GO_Real;
  import org.apache.sis.xml.bind.gco.UnitAdapter;
- import static 
org.apache.sis.metadata.internal.ImplementationHelper.ensurePositive;
+ import static 
org.apache.sis.metadata.privy.ImplementationHelper.ensurePositive;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.content.PolarisationOrientation;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.content.PolarizationOrientation;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java
index 18aaa1eea6,ef4bfb8d08..26c845bad0
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultDataFile.java
@@@ -28,11 -28,11 +28,11 @@@ import org.opengis.util.InternationalSt
  import org.apache.sis.xml.Namespaces;
  import org.apache.sis.metadata.iso.ISOMetadata;
  import org.apache.sis.xml.bind.FilterByVersion;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  import org.apache.sis.xml.bind.gcx.MimeFileTypeAdapter;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.util.GenericName;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.util.LocalName;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
index 711d17008d,faf89f0a1c..e3c2ed9667
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/distribution/DefaultMedium.java
@@@ -33,17 -33,12 +33,17 @@@ import org.apache.sis.xml.bind.FilterBy
  import org.apache.sis.xml.bind.gco.GO_Real;
  import org.apache.sis.xml.bind.metadata.CI_Citation;
  import org.apache.sis.xml.bind.metadata.MD_Identifier;
 -import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
  import org.apache.sis.metadata.internal.Dependencies;
 +import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
- import org.apache.sis.xml.util.LegacyNamespaces;
- import org.apache.sis.util.internal.CollectionsExt;
- import static 
org.apache.sis.metadata.internal.ImplementationHelper.ensurePositive;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
+ import org.apache.sis.util.privy.CollectionsExt;
+ import static 
org.apache.sis.metadata.privy.ImplementationHelper.ensurePositive;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.distribution.MediumName;
- import org.apache.sis.util.internal.CodeLists;
++import org.apache.sis.util.privy.CodeLists;
 +import org.apache.sis.metadata.iso.citation.DefaultCitation;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import java.util.AbstractSet;
  import java.util.Iterator;
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/AbstractIdentification.java
index 2831a2d5d5,a301d3d51e..38c04ba18a
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/AbstractIdentification.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/AbstractIdentification.java
@@@ -45,12 -45,9 +45,12 @@@ import org.apache.sis.metadata.iso.ISOM
  import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
  import org.apache.sis.xml.bind.FilterByVersion;
  import org.apache.sis.xml.bind.metadata.MD_Identifier;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  import org.apache.sis.util.iso.Types;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.metadata.identification.AssociatedResource;
  import org.opengis.temporal.Duration;
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
index e90fc2754e,15b7bf2ff2..d4d70d26aa
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
@@@ -32,13 -32,9 +32,13 @@@ import org.apache.sis.xml.bind.FilterBy
  import org.apache.sis.xml.bind.lan.LocaleAndCharset;
  import org.apache.sis.xml.bind.lan.OtherLocales;
  import org.apache.sis.xml.bind.lan.PT_Locale;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  import org.apache.sis.metadata.internal.Dependencies;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import java.util.stream.Collectors;
 +import org.opengis.metadata.identification.CharacterSet;
 +
  
  /**
   * Information required to identify a dataset.
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
index adc675c94d,919e5fc947..1ecbfbe78f
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/identification/DefaultUsage.java
@@@ -28,11 -28,11 +28,11 @@@ import org.apache.sis.xml.bind.FilterBy
  import org.apache.sis.metadata.TitleProperty;
  import org.apache.sis.metadata.iso.ISOMetadata;
  import org.apache.sis.util.iso.Types;
- import static org.apache.sis.metadata.internal.ImplementationHelper.toDate;
- import static 
org.apache.sis.metadata.internal.ImplementationHelper.toMilliseconds;
+ import static org.apache.sis.metadata.privy.ImplementationHelper.toDate;
+ import static 
org.apache.sis.metadata.privy.ImplementationHelper.toMilliseconds;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.citation.Responsibility;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
index f1881f9296,523a18c87a..e37f63d6a9
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
@@@ -34,14 -34,11 +34,14 @@@ import org.apache.sis.metadata.TitlePro
  import org.apache.sis.metadata.iso.ISOMetadata;
  import org.apache.sis.util.iso.Types;
  import org.apache.sis.xml.bind.FilterByVersion;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  import org.apache.sis.xml.bind.gml.TM_Primitive;
  import org.apache.sis.xml.bind.metadata.MD_Scope;
- import org.apache.sis.metadata.internal.TemporalUtilities;
+ import org.apache.sis.metadata.privy.TemporalUtilities;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.metadata.maintenance.Scope;
  
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
index 32dd00fc96,b2b4cdf4d9..6a02bdfe2e
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/maintenance/DefaultMaintenanceInformation.java
@@@ -36,13 -36,10 +36,13 @@@ import org.apache.sis.metadata.iso.cita
  import org.apache.sis.metadata.iso.legacy.LegacyPropertyAdapter;
  import org.apache.sis.metadata.internal.Dependencies;
  import org.apache.sis.xml.bind.FilterByVersion;
- import org.apache.sis.xml.util.LegacyNamespaces;
- import org.apache.sis.util.internal.CollectionsExt;
- import static 
org.apache.sis.metadata.internal.ImplementationHelper.valueIfDefined;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
+ import org.apache.sis.util.privy.CollectionsExt;
+ import static 
org.apache.sis.metadata.privy.ImplementationHelper.valueIfDefined;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.ResponsibleParty;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.metadata.maintenance.Scope;
  
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
index 15d63d2be2,544eb2b925..9f8f254615
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/iso/quality/DefaultDataQuality.java
@@@ -25,11 -25,8 +25,11 @@@ import org.opengis.metadata.quality.Dat
  import org.opengis.metadata.quality.Element;
  import org.opengis.metadata.maintenance.ScopeCode;
  import org.apache.sis.xml.bind.FilterByVersion;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.quality.Scope;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.metadata.quality.StandaloneQualityReportInformation;
  
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/privy/NameToIdentifier.java
index 0000000000,d6be1ec48d..1fe8975835
mode 000000,100644..100644
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/privy/NameToIdentifier.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/privy/NameToIdentifier.java
@@@ -1,0 -1,310 +1,313 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one or more
+  * contributor license agreements.  See the NOTICE file distributed with
+  * this work for additional information regarding copyright ownership.
+  * The ASF licenses this file to You under the Apache License, Version 2.0
+  * (the "License"); you may not use this file except in compliance with
+  * the License.  You may obtain a copy of the License at
+  *
+  *     http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+ package org.apache.sis.metadata.privy;
+ 
+ import java.util.Locale;
+ import java.util.Objects;
+ import java.util.Collection;
+ import org.opengis.util.NameSpace;
+ import org.opengis.util.GenericName;
+ import org.opengis.util.InternationalString;
+ import org.opengis.referencing.IdentifiedObject;
+ import org.opengis.metadata.Identifier;
+ import org.opengis.metadata.citation.Citation;
+ import org.apache.sis.metadata.iso.citation.Citations;
+ import org.apache.sis.util.CharSequences;
+ import org.apache.sis.util.iso.DefaultNameSpace;
+ import static org.apache.sis.util.Characters.Filter.LETTERS_AND_DIGITS;
+ 
++// Specific to the main and geoapi-3.1 branches:
++import org.opengis.referencing.ReferenceIdentifier;
++
+ 
+ /**
+  * Does the unobvious mapping between {@link Identifier} properties and 
{@link GenericName} ones.
+  * This class also implements the {@link #isHeuristicMatchForName(Identifier, 
Collection, CharSequence, Simplifier)}
+  * method since that method involves a mix of names and identifiers.
+  *
+  * <h2>Limitations</h2>
+  * Current version does not yet work with URN or HTTP syntax.
+  *
+  * @author  Martin Desruisseaux (Geomatys)
+  */
 -public final class NameToIdentifier implements Identifier {
++public final class NameToIdentifier implements ReferenceIdentifier {
+     /**
+      * The name from which to infer the identifier attributes.
+      */
+     private final GenericName name;
+ 
+     /**
+      * Infers the attributes from the given name.
+      *
+      * @param  name  the name from which to infer the identifier properties.
+      */
+     public NameToIdentifier(final GenericName name) {
+         this.name = Objects.requireNonNull(name);
+     }
+ 
+     /**
+      * Returns the scope of the given name if it is not global.
+      * This method is null-safe, including paranoiac checks against null 
scope.
+      *
+      * @param  name  the name from which to get the scope, or {@code null}.
+      * @return the scope of the given name, or {@code null} if the given name 
was null or has a global scope.
+      */
+     private static GenericName scope(final GenericName name) {
+         if (name != null) {
+             final NameSpace scope = name.scope();
+             if (scope != null && !scope.isGlobal()) {
+                 return scope.name();
+             }
+         }
+         return null;
+     }
+ 
+     /**
+      * Infers the authority from the scope if any, or from the code space 
otherwise.
+      *
+      * @return the authority, or {@code null} if none.
+      */
+     @Override
+     public Citation getAuthority() {
+         GenericName scope = scope(name);
+         if (scope == null) {
+             scope = scope(name.tip());
+             if (scope == null) {
+                 return null;
+             }
+         }
+         return Citations.fromName(scope.head().toString());
+     }
+ 
+     /**
+      * Takes the element before the tip as the code space.
+      *
+      * @param  name    the name from which to get the code space, or {@code 
null}.
+      * @param  locale  the locale, or {@code null} for a call to {@code 
name.toString()}.
+      * @return the code space, or {@code null} if none.
+      */
+     public static String getCodeSpace(final GenericName name, final Locale 
locale) {
+         final GenericName scope = scope(name.tip());
+         return (scope != null) ? toString(scope.tip(), locale) : null;
+     }
+ 
+     /**
+      * Takes everything except the tip as the code space.
+      */
+     @Override
+     public String getCodeSpace() {
+         return getCodeSpace(name, null);
+     }
+ 
+     /**
+      * Takes the last element as the code.
+      */
+     @Override
+     public String getCode() {
+         return name.tip().toString();
+     }
+ 
+     /**
+      * Returns a hash code value for this object.
+      */
+     @Override
+     public int hashCode() {
+         return ~Objects.hashCode(name);
+     }
+ 
+     /**
+      * Compares this object with the given one for equality.
+      *
+      * @param  object  the object to compare with this identifier.
+      * @return {@code true} if both objects are equal.
+      */
+     @Override
+     public boolean equals(final Object object) {
+         if (object == this) {
+             return true;
+         }
+         if (object != null && object.getClass() == getClass()) {
+             return Objects.equals(name, ((NameToIdentifier) object).name);
+         }
+         return false;
+     }
+ 
+     /**
+      * Returns the string representation of this identifier.
+      *
+      * @return the string representation of this identifier.
+      */
+     @Override
+     public String toString() {
+         final String code = getCode();
+         final String cs = getCodeSpace();
+         if (cs != null && !cs.isEmpty()) {
+             return cs + DefaultNameSpace.DEFAULT_SEPARATOR + code;
+         }
+         return code;
+     }
+ 
+     /**
+      * Returns a string representation of the given name in the given locale, 
with paranoiac checks against null value.
+      * Such null values should never happen since the properties used here 
are mandatory, but we try to make this class
+      * robust to broken implementations.
+      *
+      * @param  name    the name from which to get the localized string, or 
{@code null}.
+      * @param  locale  the locale, or {@code null} for a call to {@code 
name.toString()}.
+      * @return the localized string representation, or {@code null} if the 
given name was null.
+      */
+     public static String toString(final GenericName name, final Locale 
locale) {
+         if (name != null) {
+             if (locale != null) {
+                 final InternationalString i18n = name.toInternationalString();
+                 if (i18n != null) {
+                     final String s = i18n.toString(locale);
+                     if (s != null) {
+                         return s;
+                     }
+                 }
+             }
+             return name.toString();
+         }
+         return null;
+     }
+ 
+     /**
+      * Returns {@code true} if the given identifier to search matches one of 
the object identifiers.
+      *
+      * @param  identifiers  the identifiers to compare against {@code 
toSearch}.
+      * @param  toSearch     the identifier to check for equality.
+      * @return {@code true} if the identifier to search is found in the given 
set of identifiers.
+      */
+     public static boolean isHeuristicMatchForIdentifier(final Iterable<? 
extends Identifier> identifiers, final String toSearch) {
+         if (toSearch != null && identifiers != null) {
+             int s = toSearch.indexOf(DefaultNameSpace.DEFAULT_SEPARATOR);
+             if (s < 0) {
+                 // no codespace in searched name
+                 for (final Identifier id : identifiers) {
+                     if (toSearch.equalsIgnoreCase(id.getCode())) {
+                         return true;
+                     }
+                 }
+                 return false;
+             }
+             do {
+                 final String codespace = toSearch.substring(0, s).trim();
+                 final String code = toSearch.substring(++s).trim();
+                 for (final Identifier id : identifiers) {
+                     if (codespace.equalsIgnoreCase(id.getCodeSpace()) && 
code.equalsIgnoreCase(id.getCode())) {
+                         return true;
+                     }
+                 }
+                 s = toSearch.indexOf(DefaultNameSpace.DEFAULT_SEPARATOR, s);
+             } while (s >= 0);
+         }
+         return false;
+     }
+ 
+     /**
+      * Returns {@code true} if the given {@linkplain 
org.apache.sis.referencing.AbstractIdentifiedObject#getName()
+      * primary name} or one of the given aliases matches the given name. The 
comparison ignores case, some Latin
+      * diacritical signs and any characters that are not letters or digits.
+      *
+      * @param  name        the name of the {@code IdentifiedObject} to check.
+      * @param  aliases     the list of aliases in the {@code 
IdentifiedObject} (may be {@code null}).
+      *                     This method will never modify that list, so the 
given list can be a direct
+      *                     reference to an internal list.
+      * @param  toSearch    the name for which to check for equality.
+      * @param  simplifier  a function for simplifying the names before 
comparison.
+      * @return {@code true} if the primary name or at least one alias matches 
the given {@code name}.
+      */
+     public static boolean isHeuristicMatchForName(final Identifier name, 
final Collection<GenericName> aliases,
+             CharSequence toSearch, final Simplifier simplifier)
+     {
+         if (toSearch != null) {
+             CharSequence code = (name != null) ? name.getCode() : null;
+             if (toSearch.equals(code)) {
+                 return true;                                                  
  // Optimization for a common case.
+             }
+             toSearch = simplifier.apply(toSearch);
+             code     = simplifier.apply(code);
+             if (CharSequences.equalsFiltered(toSearch, code, 
LETTERS_AND_DIGITS, true)) {
+                 return true;
+             }
+             if (aliases != null) {
+                 for (final GenericName alias : aliases) {
+                     if (alias != null) {                                      
                  // Paranoiac check.
+                         final CharSequence tip = 
simplifier.apply(alias.tip().toString());
+                         if (CharSequences.equalsFiltered(toSearch, tip, 
LETTERS_AND_DIGITS, true)) {
+                             return true;
+                         }
+                         /*
+                          * Note: a previous version compared also the scoped 
names. We removed that part,
+                          * because experience has shown that this method is 
used only for the "code" part
+                          * of an object name. If we really want to compare 
scoped name, it would probably
+                          * be better to take a GenericName argument instead 
of String.
+                          */
+                     }
+                 }
+             }
+         }
+         return false;
+     }
+ 
+     /**
+      * Returns {@code true} if the {@linkplain 
org.apache.sis.referencing.AbstractIdentifiedObject#getName()
+      * primary name} or an aliases of the given object matches the given 
name. The comparison ignores case,
+      * some Latin diacritical signs and any characters that are not letters 
or digits.
+      *
+      * @param  object  the object for which to check the name or alias.
+      * @param  name    the name to compare with the object name or aliases.
+      * @return {@code true} if the primary name of at least one alias matches 
the specified {@code name}.
+      */
+     public static boolean isHeuristicMatchForName(final IdentifiedObject 
object, final String name) {
+         return isHeuristicMatchForName(object.getName(), object.getAlias(), 
name, Simplifier.DEFAULT);
+     }
+ 
+     /**
+      * A function for simplifying an {@link 
org.opengis.referencing.IdentifiedObject} name before comparison with
+      * {@link NameToIdentifier#isHeuristicMatchForName(Identifier, 
Collection, CharSequence, Simplifier)}.
+      */
+     public static class Simplifier {
+         /**
+          * The prefix used by ESRI at the beginning of datum names.
+          * This prefix should be omitted when simplifying a datum name.
+          */
+         public static final String ESRI_DATUM_PREFIX = "D_";
+ 
+         /**
+          * The default instance, which replaces some non-ASCII characters by 
ASCII ones.
+          */
+         public static final Simplifier DEFAULT = new Simplifier();
+ 
+         /**
+          * For subclasses and default instance only.
+          */
+         protected Simplifier() {
+         }
+ 
+         /**
+          * Simplifies the given name.
+          *
+          * @param  name  the object name (may be {@code null}).
+          * @return the name to use for comparison purpose, or {@code null}.
+          */
+         protected CharSequence apply(final CharSequence name) {
+             return CharSequences.toASCII(name);
+         }
+     }
+ }
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifiedObject.java
index 43f02a91a8,5e1cad326c..130b5b62c8
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifiedObject.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifiedObject.java
@@@ -23,15 -23,12 +23,15 @@@ import org.opengis.metadata.Identifier
  import org.opengis.metadata.citation.Citation;
  import org.opengis.metadata.extent.Extent;
  import org.opengis.referencing.IdentifiedObject;
- import org.apache.sis.metadata.internal.Identifiers;
+ import org.apache.sis.metadata.privy.Identifiers;
  import org.apache.sis.util.LenientComparable;
  import org.apache.sis.util.ComparisonMode;
- import org.apache.sis.util.internal.Constants;
+ import org.apache.sis.util.privy.Constants;
  import static org.apache.sis.util.collection.Containers.isNullOrEmpty;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +
  
  /**
   * A trivial implementation of {@link IdentifiedObject} containing only a 
primary name.
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifier.java
index ce7f8e9b8a,37cd2a7336..c2b49c30d9
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifier.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/metadata/simple/SimpleIdentifier.java
@@@ -23,10 -23,10 +23,10 @@@ import org.opengis.metadata.citation.Ci
  import org.apache.sis.util.CharSequences;
  import org.apache.sis.util.Classes;
  import org.apache.sis.util.Deprecable;
- import org.apache.sis.util.internal.Constants;
+ import org.apache.sis.util.privy.Constants;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/code/MD_MediumNameCode.java
index af38608df5,71a73d4ce5..4c839f2c75
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/code/MD_MediumNameCode.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/code/MD_MediumNameCode.java
@@@ -19,10 -19,10 +19,10 @@@ package org.apache.sis.xml.bind.metadat
  import jakarta.xml.bind.annotation.XmlElement;
  import org.apache.sis.xml.bind.cat.CodeListAdapter;
  import org.apache.sis.xml.bind.cat.CodeListUID;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.apache.sis.metadata.iso.legacy.MediumName;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.distribution.MediumName;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/RS_Identifier.java
index 0e90b7aa2d,25904c5eff..b3f9f0c5ed
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/RS_Identifier.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/RS_Identifier.java
@@@ -21,12 -21,8 +21,12 @@@ import jakarta.xml.bind.annotation.XmlR
  import org.opengis.metadata.Identifier;
  import org.apache.sis.metadata.TitleProperty;
  import org.apache.sis.metadata.iso.*;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.metadata.citation.Citation;
 +import org.opengis.referencing.ReferenceIdentifier;
 +
  
  /**
   * Identifier using {@code <gmd:RS_Identifier>} XML element name.
diff --cc 
endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java
index 296979e762,91addb98ec..a6b2c50ba1
--- 
a/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java
+++ 
b/endorsed/src/org.apache.sis.metadata/main/org/apache/sis/xml/bind/metadata/replace/ServiceParameter.java
@@@ -27,16 -27,13 +27,16 @@@ import org.opengis.util.InternationalSt
  import org.opengis.parameter.ParameterDescriptor;
  import org.apache.sis.xml.Namespaces;
  import org.apache.sis.xml.bind.FilterByVersion;
- import org.apache.sis.xml.util.LegacyNamespaces;
+ import org.apache.sis.xml.privy.LegacyNamespaces;
  import org.apache.sis.xml.bind.gco.GO_GenericName;
- import org.apache.sis.metadata.internal.NameToIdentifier;
+ import org.apache.sis.metadata.privy.NameToIdentifier;
  import org.apache.sis.util.iso.DefaultMemberName;
  import org.apache.sis.util.iso.Names;
- import static org.apache.sis.util.internal.CollectionsExt.nonNull;
+ import static org.apache.sis.util.privy.CollectionsExt.nonNull;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.parameter.ParameterDirection;
  import org.opengis.metadata.Identifier;
diff --cc 
endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
index 2bbfbf665c,aeb0ae764c..6d3de36f04
--- 
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
+++ 
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/metadata/iso/citation/HardCodedCitations.java
@@@ -24,12 -24,9 +24,12 @@@ import org.opengis.metadata.citation.Pr
  import org.apache.sis.metadata.iso.DefaultIdentifier;
  import org.apache.sis.util.SimpleInternationalString;
  import org.apache.sis.util.Static;
- import org.apache.sis.util.internal.Constants;
- import org.apache.sis.util.internal.URLs;
+ import org.apache.sis.util.privy.Constants;
+ import org.apache.sis.util.privy.URLs;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import static java.util.Collections.singleton;
 +
  
  /**
   * Hard-coded citation constants used for testing purpose only.
diff --cc 
endorsed/src/org.apache.sis.metadata/test/org/apache/sis/test/mock/IdentifiedObjectMock.java
index f0dd480307,fba91a2b18..97211623d7
--- 
a/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/test/mock/IdentifiedObjectMock.java
+++ 
b/endorsed/src/org.apache.sis.metadata/test/org/apache/sis/test/mock/IdentifiedObjectMock.java
@@@ -24,12 -24,12 +24,12 @@@ import jakarta.xml.bind.annotation.XmlR
  import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
  import org.opengis.util.GenericName;
  import org.opengis.referencing.IdentifiedObject;
- import org.apache.sis.util.internal.Strings;
- import org.apache.sis.util.internal.CollectionsExt;
+ import org.apache.sis.util.privy.Strings;
+ import org.apache.sis.util.privy.CollectionsExt;
  import org.apache.sis.xml.bind.gco.GO_GenericName;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterFormat.java
index 0e609f7ac7,4192edc783..eeafaeebaf
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterFormat.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/parameter/ParameterFormat.java
@@@ -53,15 -53,12 +53,15 @@@ import org.apache.sis.util.ArgumentChec
  import org.apache.sis.util.iso.Types;
  import org.apache.sis.util.resources.Errors;
  import org.apache.sis.util.resources.Vocabulary;
- import org.apache.sis.util.internal.CollectionsExt;
- import org.apache.sis.util.internal.X364;
+ import org.apache.sis.util.privy.CollectionsExt;
+ import org.apache.sis.util.privy.X364;
  import org.apache.sis.referencing.IdentifiedObjects;
- import org.apache.sis.metadata.internal.NameToIdentifier;
+ import org.apache.sis.metadata.privy.NameToIdentifier;
  import org.apache.sis.pending.jdk.JDK19;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.util.ControlledVocabulary;
  
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
index 3a54bc2b82,d7d36f61ad..a6d82beba8
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/AbstractIdentifiedObject.java
@@@ -70,13 -70,10 +70,13 @@@ import org.apache.sis.util.iso.DefaultN
  import org.apache.sis.util.resources.Errors;
  import static org.apache.sis.util.ArgumentChecks.*;
  import static org.apache.sis.util.Utilities.deepEquals;
- import static org.apache.sis.util.internal.CollectionsExt.nonNull;
- import static org.apache.sis.util.internal.CollectionsExt.nonEmpty;
- import static org.apache.sis.util.internal.CollectionsExt.immutableSet;
+ import static org.apache.sis.util.privy.CollectionsExt.nonNull;
+ import static org.apache.sis.util.privy.CollectionsExt.nonEmpty;
+ import static org.apache.sis.util.privy.CollectionsExt.immutableSet;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.referencing.ObjectDomain;
  
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/NameIterator.java
index aa7ea43473,b29411d79f..72788ec16d
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/NameIterator.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/NameIterator.java
@@@ -22,12 -22,12 +22,12 @@@ import org.opengis.util.GenericName
  import org.opengis.referencing.IdentifiedObject;
  import org.apache.sis.xml.bind.Context;
  import org.apache.sis.util.resources.Errors;
- import org.apache.sis.metadata.internal.NameMeaning;
- import org.apache.sis.referencing.util.NilReferencingObject;
- import static org.apache.sis.util.internal.Strings.appendUnicodeIdentifier;
+ import org.apache.sis.metadata.privy.NameMeaning;
+ import org.apache.sis.referencing.privy.NilReferencingObject;
+ import static org.apache.sis.util.privy.Strings.appendUnicodeIdentifier;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Properties.java
index 621cdbf0e1,ec0283dfeb..0f479a50c9
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Properties.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/Properties.java
@@@ -30,12 -30,9 +30,12 @@@ import org.opengis.referencing.operatio
  import org.opengis.referencing.operation.SingleOperation;
  import org.opengis.metadata.quality.PositionalAccuracy;
  import org.apache.sis.util.Deprecable;
- import org.apache.sis.util.internal.AbstractMap;
- import org.apache.sis.referencing.util.CoordinateOperations;
+ import org.apache.sis.util.privy.AbstractMap;
+ import org.apache.sis.referencing.privy.CoordinateOperations;
  
 +// Specific to the main and geoapi-3.1 branches:
 +import org.opengis.referencing.ReferenceIdentifier;
 +
  // Specific to the geoapi-3.1 and geoapi-4.0 branches:
  import org.opengis.referencing.ObjectDomain;
  
diff --cc 
endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/NilReferencingObject.java
index 0000000000,5d3ef762d9..5c60061a72
mode 000000,100644..100644
--- 
a/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/NilReferencingObject.java
+++ 
b/endorsed/src/org.apache.sis.referencing/main/org/apache/sis/referencing/privy/NilReferencingObject.java
@@@ -1,0 -1,77 +1,77 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one or more
+  * contributor license agreements.  See the NOTICE file distributed with
+  * this work for additional information regarding copyright ownership.
+  * The ASF licenses this file to You under the Apache License, Version 2.0
+  * (the "License"); you may not use this file except in compliance with
+  * the License.  You may obtain a copy of the License at
+  *
+  *     http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+ package org.apache.sis.referencing.privy;
+ 
+ import org.opengis.util.InternationalString;
+ import org.opengis.referencing.ReferenceSystem;
+ import org.apache.sis.xml.NilReason;
+ import org.apache.sis.xml.NilObject;
+ import org.apache.sis.referencing.NamedIdentifier;
+ import org.apache.sis.util.resources.Vocabulary;
+ 
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.metadata.Identifier;
++// Specific to the main and geoapi-3.1 branches:
++import org.opengis.referencing.ReferenceIdentifier;
+ 
+ 
+ /**
+  * A referencing object for which every methods return {@code null} or a 
neutral value.
+  * <strong>This is not a valid object</strong>. It is used only for 
initialization of
+  * objects to be used by JAXB at unmarshalling time, as a way to simulate 
"no-argument"
+  * constructor required by JAXB.
+  *
+  * @author  Martin Desruisseaux (Geomatys)
+  */
+ public final class NilReferencingObject implements NilObject, ReferenceSystem 
{
+     /**
+      * The default name of {@code NilReferencingObject} instances.
+      * We use this value because {@link ReferenceSystem#getName()}
+      * is a mandatory property and not all code is tolerant to null name.
+      *
+      * <h4>Usage note</h4>
+      * In theory we do not need a default name because it will be replaced by
+      * the value of the {@code <gml:name>} element anyway at XML 
unmarshalling time.
+      * But not all XML documents are valid, so the {@code <gml:name>} may be 
missing.
+      */
 -    public static final Identifier UNNAMED = new NamedIdentifier(null, 
Vocabulary.format(Vocabulary.Keys.Unnamed));
++    public static final ReferenceIdentifier UNNAMED = new 
NamedIdentifier(null, Vocabulary.format(Vocabulary.Keys.Unnamed));
+ 
+     /**
+      * The unique instance.
+      */
+     public static final NilReferencingObject INSTANCE = new 
NilReferencingObject();
+ 
+     /**
+      * Do not allow other instantiation of {@link #INSTANCE}.
+      */
+     private NilReferencingObject() {
+     }
+ 
+     /**
+      * This object is empty because the value will be provided later.
+      */
+     @Override
+     public NilReason getNilReason() {
+         return NilReason.TEMPLATE;
+     }
+ 
+     /*
+      * Simple properties. Not all of them are optional, but SIS is tolerant 
to null values.
+      * Returning null for collection are okay in the particular case of SIS 
implementation,
+      * because the constructor will replace empty collections by null 
references anyway.
+      */
 -    @Override public Identifier          getName()  {return UNNAMED;}
++    @Override public ReferenceIdentifier getName()  {return UNNAMED;}
+     @Override public InternationalString getScope() {return null;}
+ }
diff --cc 
endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java
index 6636413810,7ead46568e..3ea5a57b36
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/LegalSymbols.java
@@@ -27,10 -27,10 +27,10 @@@ import org.apache.sis.metadata.iso.cita
  import org.apache.sis.metadata.iso.citation.DefaultCitation;
  import org.apache.sis.metadata.iso.citation.DefaultCitationDate;
  import org.apache.sis.metadata.iso.constraint.DefaultLegalConstraints;
- import static 
org.apache.sis.util.internal.StandardDateFormat.MILLISECONDS_PER_DAY;
+ import static 
org.apache.sis.util.privy.StandardDateFormat.MILLISECONDS_PER_DAY;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.apache.sis.metadata.iso.citation.DefaultResponsibility;
 +// Specific to the main and geoapi-3.1 branches:
 +import org.apache.sis.metadata.iso.citation.DefaultResponsibleParty;
  
  
  /**
diff --cc 
endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java
index fab9fe5034,538df66e92..be761aedba
--- 
a/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java
+++ 
b/endorsed/src/org.apache.sis.storage/main/org/apache/sis/storage/base/MetadataBuilder.java
@@@ -64,11 -64,11 +64,11 @@@ import org.apache.sis.util.Characters
  import org.apache.sis.util.iso.Names;
  import org.apache.sis.util.iso.Types;
  import org.apache.sis.util.logging.Logging;
- import org.apache.sis.util.internal.CollectionsExt;
- import org.apache.sis.util.internal.Strings;
+ import org.apache.sis.util.privy.CollectionsExt;
+ import org.apache.sis.util.privy.Strings;
  import org.apache.sis.util.resources.Vocabulary;
 -import org.apache.sis.metadata.ModifiableMetadata;
  import org.apache.sis.geometry.AbstractEnvelope;
 +import org.apache.sis.metadata.ModifiableMetadata;
  import org.apache.sis.metadata.iso.*;
  import org.apache.sis.metadata.iso.acquisition.*;
  import org.apache.sis.metadata.iso.citation.*;
diff --cc 
optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
index 854d7ecdbb,ddced309c6..08a6632288
--- 
a/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
+++ 
b/optional/src/org.apache.sis.gui/main/org/apache/sis/gui/metadata/IdentificationInfo.java
@@@ -57,8 -57,11 +57,8 @@@ import org.apache.sis.storage.DataStore
  import org.apache.sis.util.CharSequences;
  import org.apache.sis.util.Workaround;
  import org.apache.sis.util.resources.Vocabulary;
- import static org.apache.sis.util.internal.CollectionsExt.nonNull;
+ import static org.apache.sis.util.privy.CollectionsExt.nonNull;
  
 -// Specific to the geoapi-4.0 branch:
 -import org.opengis.util.InternationalString;
 -
  
  /**
   * The pane where to show the values of {@link Identification} objects.


Reply via email to