You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2022/11/22 10:04:29 UTC

[sis] 03/03: Minor fixes in English sentences, applying same corrections than the ones applied by reviewer on OGC TestBed 18 engineering report D025. This is mostly missing commas (added by search-and-replace) after "For example", "However", etc.

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

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

commit 854d9b68cf52c6cd6e301dc75dd9a508878cfd1c
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Mon Nov 21 14:29:31 2022 +0100

    Minor fixes in English sentences, applying same corrections than the ones applied by reviewer on OGC TestBed 18 engineering report D025.
    This is mostly missing commas (added by search-and-replace) after "For example", "However", etc.
---
 .../src/main/artifact/conf/logging.properties      |  2 +-
 .../main/java/org/apache/sis/console/Command.java  |  2 +-
 .../org/apache/sis/console/CRSCommandTest.java     |  2 +-
 .../main/java/org/apache/sis/gui/DataViewer.java   |  2 +-
 .../apache/sis/gui/coverage/CoverageExplorer.java  |  2 +-
 .../org/apache/sis/gui/coverage/GridRowSkin.java   |  4 +--
 .../sis/gui/coverage/ImagePropertyExplorer.java    |  6 ++--
 .../org/apache/sis/gui/dataset/ExpandableList.java |  2 +-
 .../org/apache/sis/gui/dataset/FeatureLoader.java  |  2 +-
 .../org/apache/sis/gui/dataset/ResourceCell.java   |  2 +-
 .../org/apache/sis/gui/dataset/ResourceTree.java   |  2 +-
 .../org/apache/sis/gui/dataset/WindowHandler.java  |  2 +-
 .../org/apache/sis/gui/map/OperationFinder.java    |  2 +-
 .../java/org/apache/sis/gui/map/StatusBar.java     |  8 ++---
 .../org/apache/sis/gui/map/ValuesFormatter.java    |  2 +-
 .../org/apache/sis/gui/map/ValuesUnderCursor.java  |  2 +-
 .../java/org/apache/sis/gui/referencing/Utils.java |  2 +-
 .../apache/sis/internal/gui/DataStoreOpener.java   |  6 ++--
 .../org/apache/sis/internal/setup/Inflater.java    |  2 +-
 .../java/org/apache/sis/openoffice/CalcAddins.java |  2 +-
 .../src/main/unopkg/build-instruction.html         |  2 +-
 .../apache/sis/cloud/aws/s3/CachedByteChannel.java |  2 +-
 .../org/apache/sis/cloud/aws/s3/DerivedList.java   |  2 +-
 .../java/org/apache/sis/cloud/aws/s3/KeyPath.java  |  8 ++---
 .../apache/sis/internal/maven/JarCollector.java    |  2 +-
 .../util/resources/IndexedResourceCompiler.java    |  6 ++--
 .../org/apache/sis/coverage/BandedCoverage.java    |  6 ++--
 .../java/org/apache/sis/coverage/CategoryList.java |  2 +-
 .../org/apache/sis/coverage/SampleDimension.java   |  6 ++--
 .../sis/coverage/grid/BufferedGridCoverage.java    |  2 +-
 .../coverage/grid/CoordinateOperationFinder.java   |  2 +-
 .../apache/sis/coverage/grid/DefaultEvaluator.java |  2 +-
 .../coverage/grid/FractionalGridCoordinates.java   |  2 +-
 .../org/apache/sis/coverage/grid/GridCoverage.java |  2 +-
 .../apache/sis/coverage/grid/GridCoverage2D.java   |  6 ++--
 .../sis/coverage/grid/GridCoverageBuilder.java     |  8 ++---
 .../sis/coverage/grid/GridCoverageProcessor.java   |  2 +-
 .../apache/sis/coverage/grid/GridDerivation.java   | 14 ++++-----
 .../org/apache/sis/coverage/grid/GridExtent.java   |  8 ++---
 .../org/apache/sis/coverage/grid/GridGeometry.java |  8 ++---
 .../apache/sis/coverage/grid/GridOrientation.java  | 10 +++----
 .../apache/sis/coverage/grid/GridRoundingMode.java |  2 +-
 .../apache/sis/coverage/grid/ImageRenderer.java    |  2 +-
 .../grid/IncompleteGridGeometryException.java      |  2 +-
 .../sis/coverage/grid/ResampledGridCoverage.java   |  6 ++--
 .../apache/sis/coverage/grid/ReshapedImage.java    |  2 +-
 .../apache/sis/feature/AbstractAssociation.java    |  4 +--
 .../org/apache/sis/feature/AbstractAttribute.java  |  8 ++---
 .../apache/sis/feature/AbstractIdentifiedType.java |  2 +-
 .../apache/sis/feature/CharacteristicTypeMap.java  |  2 +-
 .../apache/sis/feature/DefaultAssociationRole.java |  2 +-
 .../apache/sis/feature/DefaultAttributeType.java   |  6 ++--
 .../org/apache/sis/feature/DefaultFeatureType.java | 10 +++----
 .../java/org/apache/sis/feature/DenseFeature.java  |  2 +-
 .../org/apache/sis/feature/EnvelopeOperation.java  |  2 +-
 .../java/org/apache/sis/feature/FeatureFormat.java |  4 +--
 .../org/apache/sis/feature/FeatureOperations.java  |  2 +-
 .../main/java/org/apache/sis/feature/Features.java |  2 +-
 .../java/org/apache/sis/feature/SparseFeature.java |  2 +-
 .../java/org/apache/sis/feature/Validator.java     |  6 ++--
 .../java/org/apache/sis/feature/benchmarks.html    |  2 +-
 .../sis/feature/builder/AttributeTypeBuilder.java  |  2 +-
 .../feature/builder/CharacteristicTypeBuilder.java |  2 +-
 .../sis/feature/builder/FeatureTypeBuilder.java    |  6 ++--
 .../apache/sis/feature/builder/TypeBuilder.java    |  2 +-
 .../java/org/apache/sis/feature/package-info.java  |  2 +-
 .../org/apache/sis/filter/ComparisonFilter.java    |  2 +-
 .../java/org/apache/sis/filter/Optimization.java   |  2 +-
 .../src/main/java/org/apache/sis/filter/XPath.java |  2 +-
 .../java/org/apache/sis/image/AnnotatedImage.java  |  6 ++--
 .../java/org/apache/sis/image/BandSelectImage.java |  2 +-
 .../java/org/apache/sis/image/ComputedImage.java   |  6 ++--
 .../java/org/apache/sis/image/ComputedTiles.java   |  4 +--
 .../java/org/apache/sis/image/ErrorHandler.java    |  4 +--
 .../java/org/apache/sis/image/ImageCombiner.java   |  2 +-
 .../java/org/apache/sis/image/ImageProcessor.java  | 16 +++++-----
 .../java/org/apache/sis/image/Interpolation.java   |  2 +-
 .../java/org/apache/sis/image/PixelIterator.java   | 12 ++++----
 .../java/org/apache/sis/image/PlanarImage.java     |  4 +--
 .../java/org/apache/sis/image/ResampledImage.java  |  6 ++--
 .../java/org/apache/sis/image/ResamplingGrid.java  |  4 +--
 .../main/java/org/apache/sis/image/TileCache.java  |  4 +--
 .../java/org/apache/sis/image/Visualization.java   |  2 +-
 .../apache/sis/image/WritablePixelIterator.java    |  2 +-
 .../java/org/apache/sis/image/package-info.java    |  2 +-
 .../org/apache/sis/index/tree/NodeIterator.java    |  2 +-
 .../java/org/apache/sis/index/tree/PointTree.java  |  4 +--
 .../internal/coverage/j2d/BatchComputedImage.java  |  2 +-
 .../internal/coverage/j2d/ColorModelFactory.java   |  4 +--
 .../sis/internal/coverage/j2d/ColorModelPatch.java |  2 +-
 .../sis/internal/coverage/j2d/Colorizer.java       |  2 +-
 .../sis/internal/coverage/j2d/ImageUtilities.java  |  4 +--
 .../sis/internal/coverage/j2d/RasterFactory.java   |  4 +--
 .../internal/coverage/j2d/SampleModelFactory.java  |  2 +-
 .../internal/coverage/j2d/ScaledColorModel.java    |  2 +-
 .../apache/sis/internal/feature/Geometries.java    |  2 +-
 .../sis/internal/feature/MovingFeatures.java       |  2 +-
 .../internal/feature/SpatialOperationContext.java  |  2 +-
 .../apache/sis/internal/feature/j2d/FlatShape.java |  2 +-
 .../sis/internal/feature/j2d/PathBuilder.java      |  4 +--
 .../apache/sis/internal/feature/j2d/Polyline.java  |  2 +-
 .../org/apache/sis/internal/feature/jts/JTS.java   |  4 +--
 .../org/apache/sis/internal/filter/Visitor.java    |  6 ++--
 .../internal/processing/image/TiledProcess.java    |  2 +-
 .../sis/internal/processing/isoline/Isolines.java  |  2 +-
 .../processing/isoline/PolylineBuffer.java         |  2 +-
 .../sis/internal/processing/isoline/Tracer.java    |  4 +--
 .../sis/coverage/grid/GridCoverage2DTest.java      |  2 +-
 .../coverage/grid/ResampledGridCoverageTest.java   |  2 +-
 .../apache/sis/feature/AbstractFeatureTest.java    |  2 +-
 .../apache/sis/feature/FeatureOperationsTest.java  |  2 +-
 .../org/apache/sis/image/InterpolationTest.java    |  2 +-
 .../org/apache/sis/image/LinearIteratorTest.java   |  2 +-
 .../org/apache/sis/image/PixelIteratorTest.java    |  2 +-
 .../sis/internal/jaxb/AdapterReplacement.java      |  2 +-
 .../sis/internal/jaxb/IdentifierMapAdapter.java    |  4 +--
 .../sis/internal/jaxb/PrimitiveTypeProperties.java |  2 +-
 .../sis/internal/jaxb/cat/CodeListAdapter.java     |  4 +--
 .../apache/sis/internal/jaxb/cat/EnumAdapter.java  |  2 +-
 .../sis/internal/jaxb/gco/GO_CharacterString.java  |  4 +--
 .../internal/jaxb/gco/ObjectIdentification.html    |  4 +--
 .../sis/internal/jaxb/gco/ObjectReference.java     |  2 +-
 .../apache/sis/internal/jaxb/gco/package-info.java |  2 +-
 .../sis/internal/jaxb/geometry/ObjectFactory.java  |  4 +--
 .../sis/internal/jaxb/geometry/package-info.java   |  2 +-
 .../apache/sis/internal/jaxb/gml/package-info.java |  2 +-
 .../sis/internal/jaxb/gts/TM_PeriodDuration.java   |  2 +-
 .../sis/internal/jaxb/lan/LocaleAndCharset.java    |  2 +-
 .../apache/sis/internal/jaxb/lan/OtherLocales.java |  2 +-
 .../apache/sis/internal/jaxb/lan/PT_FreeText.java  |  2 +-
 .../apache/sis/internal/jaxb/lan/PT_Locale.java    |  2 +-
 .../apache/sis/internal/jaxb/lan/TextGroup.java    |  6 ++--
 .../jaxb/metadata/CI_ResponsibleParty.java         |  2 +-
 .../internal/jaxb/metadata/RS_ReferenceSystem.java |  2 +-
 .../jaxb/metadata/replace/QualityParameter.java    |  2 +-
 .../jaxb/metadata/replace/ServiceParameter.java    |  2 +-
 .../jaxb/metadata/replace/package-info.java        |  4 +--
 .../org/apache/sis/internal/metadata/Merger.java   |  2 +-
 .../sis/internal/metadata/MetadataTypes.java       |  2 +-
 .../apache/sis/internal/metadata/NameMeaning.java  |  2 +-
 .../sis/internal/metadata/sql/Initializer.java     |  2 +-
 .../org/apache/sis/metadata/AbstractMetadata.java  |  6 ++--
 .../org/apache/sis/metadata/MetadataFormat.java    |  2 +-
 .../org/apache/sis/metadata/MetadataStandard.java  | 24 +++++++--------
 .../org/apache/sis/metadata/MetadataVisitor.java   |  4 +--
 .../apache/sis/metadata/ModifiableMetadata.java    |  6 ++--
 .../org/apache/sis/metadata/PropertyAccessor.java  | 16 +++++-----
 .../apache/sis/metadata/PropertyComparator.java    |  4 +--
 .../org/apache/sis/metadata/TitleProperty.java     |  4 +--
 .../java/org/apache/sis/metadata/TreeNode.java     |  6 ++--
 .../org/apache/sis/metadata/TreeNodeChildren.java  |  4 +--
 .../apache/sis/metadata/iso/DefaultMetadata.java   |  6 ++--
 .../sis/metadata/iso/citation/Citations.java       |  8 ++---
 .../sis/metadata/iso/citation/DefaultCitation.java |  4 +--
 .../iso/citation/DefaultResponsibleParty.java      |  2 +-
 .../iso/content/DefaultSampleDimension.java        |  4 +--
 .../iso/extent/DefaultGeographicBoundingBox.java   |  6 ++--
 .../metadata/iso/extent/DefaultVerticalExtent.java |  2 +-
 .../apache/sis/metadata/iso/extent/Extents.java    |  4 +--
 .../java/org/apache/sis/metadata/package-info.java |  6 ++--
 .../apache/sis/metadata/sql/CachedStatement.java   |  2 +-
 .../org/apache/sis/metadata/sql/Dispatcher.java    |  2 +-
 .../sis/metadata/sql/IdentifierGenerator.java      |  2 +-
 .../org/apache/sis/metadata/sql/LookupInfo.java    |  2 +-
 .../apache/sis/metadata/sql/MetadataWriter.java    | 12 ++++----
 .../apache/sis/metadata/sql/TableHierarchy.java    |  4 +--
 .../java/org/apache/sis/util/iso/AbstractName.java |  6 ++--
 .../org/apache/sis/util/iso/DefaultLocalName.java  |  2 +-
 .../org/apache/sis/util/iso/DefaultNameSpace.java  |  8 ++---
 .../apache/sis/util/iso/DefaultRecordSchema.java   |  2 +-
 .../org/apache/sis/util/iso/RecordDefinition.java  |  2 +-
 .../main/java/org/apache/sis/util/iso/Types.java   |  6 ++--
 .../java/org/apache/sis/xml/IdentifiedObject.java  |  6 ++--
 .../java/org/apache/sis/xml/IdentifierSpace.java   | 10 +++----
 .../main/java/org/apache/sis/xml/NilObject.java    |  2 +-
 .../java/org/apache/sis/xml/PooledTemplate.java    |  2 +-
 .../java/org/apache/sis/xml/TransformVersion.java  |  4 +--
 .../main/java/org/apache/sis/xml/Transformer.java  | 12 ++++----
 .../org/apache/sis/xml/TransformingNamespaces.java |  6 ++--
 .../org/apache/sis/xml/TransformingReader.java     |  8 ++---
 .../org/apache/sis/xml/TransformingWriter.java     |  8 ++---
 .../java/org/apache/sis/xml/ValueConverter.java    |  6 ++--
 .../src/main/java/org/apache/sis/xml/XML.java      | 10 +++----
 .../src/main/java/org/apache/sis/xml/XPointer.java |  2 +-
 .../main/java/org/apache/sis/xml/package-info.java |  6 ++--
 .../src/main/java/org/apache/sis/xml/readme.html   |  2 +-
 .../sis/internal/metadata/IdentifiersTest.java     |  2 +-
 .../sis/metadata/PropertyConsistencyCheck.java     |  2 +-
 .../apache/sis/metadata/TreeNodeChildrenTest.java  |  4 +--
 .../org/apache/sis/metadata/iso/APIVerifier.java   |  2 +-
 .../sis/metadata/iso/extent/ExtentsTest.java       |  4 +--
 .../metadata/iso/lineage/DefaultLineageTest.java   |  8 ++---
 .../iso/quality/DefaultQuantitativeResultTest.java |  2 +-
 .../java/org/apache/sis/test/MetadataAssert.java   |  4 +--
 .../sis/test/xml/AnnotationConsistencyCheck.java   |  6 ++--
 .../apache/sis/test/xml/DocumentComparator.java    |  6 ++--
 .../org/apache/sis/test/xml/PackageVerifier.java   |  6 ++--
 .../org/apache/sis/test/xml/SchemaCompliance.java  |  2 +-
 .../java/org/apache/sis/test/xml/TestCase.java     |  6 ++--
 .../org/apache/sis/internal/map/Presentation.java  |  2 +-
 .../coverage/MultiResolutionCoverageLoader.java    |  2 +-
 .../sis/internal/map/coverage/RenderingData.java   |  2 +-
 .../main/java/org/apache/sis/portrayal/Canvas.java | 10 +++----
 .../org/apache/sis/portrayal/CanvasFollower.java   |  2 +-
 .../java/org/apache/sis/portrayal/MapItem.java     |  6 ++--
 .../java/org/apache/sis/portrayal/MapLayer.java    |  6 ++--
 .../org/apache/sis/portrayal/PlanarCanvas.java     |  4 +--
 .../referencing/gazetteer/FinalLocationType.java   |  2 +-
 .../gazetteer/MilitaryGridReferenceSystem.java     | 12 ++++----
 .../gazetteer/ModifiableLocationType.java          |  4 +--
 .../gazetteer/ReferenceVerifyException.java        |  2 +-
 .../sis/referencing/gazetteer/SimpleLocation.java  |  2 +-
 .../gazetteer/GeohashReferenceSystemTest.java      |  2 +-
 .../sis/geometry/AbstractDirectPosition.java       |  2 +-
 .../org/apache/sis/geometry/AbstractEnvelope.java  | 12 ++++----
 .../org/apache/sis/geometry/ArrayEnvelope.java     |  2 +-
 .../org/apache/sis/geometry/CoordinateFormat.java  |  6 ++--
 .../org/apache/sis/geometry/DirectPosition2D.java  |  2 +-
 .../java/org/apache/sis/geometry/Envelopes.java    | 20 ++++++-------
 .../apache/sis/geometry/GeneralDirectPosition.java |  6 ++--
 .../org/apache/sis/geometry/GeneralEnvelope.java   | 12 ++++----
 .../org/apache/sis/geometry/ImmutableEnvelope.java |  2 +-
 .../java/org/apache/sis/geometry/Shapes2D.java     |  6 ++--
 .../apache/sis/geometry/WraparoundAdjustment.java  |  4 +--
 .../apache/sis/geometry/WraparoundInEnvelope.java  |  2 +-
 .../org/apache/sis/geometry/WraparoundMethod.java  |  2 +-
 .../java/org/apache/sis/geometry/package-info.java |  2 +-
 .../internal/jaxb/referencing/CC_Conversion.java   |  2 +-
 .../referencing/CC_GeneralOperationParameter.java  |  4 +--
 .../jaxb/referencing/CC_OperationMethod.java       |  2 +-
 .../referencing/CC_OperationParameterGroup.java    |  2 +-
 .../apache/sis/internal/jaxb/referencing/Code.java |  4 +--
 .../sis/internal/referencing/AxisDirections.java   |  4 +--
 .../internal/referencing/CoordinateOperations.java |  6 ++--
 .../sis/internal/referencing/DatabaseListener.java |  2 +-
 .../apache/sis/internal/referencing/Formulas.java  |  4 +--
 .../referencing/GeodeticObjectBuilder.java         |  2 +-
 .../apache/sis/internal/referencing/LazySet.java   |  2 +-
 .../internal/referencing/PositionTransformer.java  |  2 +-
 .../apache/sis/internal/referencing/RTreeNode.java |  2 +-
 .../apache/sis/internal/referencing/Resources.java |  2 +-
 .../sis/internal/referencing/Resources.properties  |  2 +-
 .../referencing/j2d/AffineTransform2D.java         |  4 +--
 .../sis/internal/referencing/j2d/Bezier.java       |  8 ++---
 .../referencing/j2d/IntervalRectangle.java         |  2 +-
 .../referencing/j2d/ParameterizedAffine.java       |  6 ++--
 .../apache/sis/internal/referencing/j2d/Tile.java  |  8 ++---
 .../referencing/provider/DatumShiftGridFile.java   |  2 +-
 .../referencing/provider/DatumShiftGridGroup.java  |  2 +-
 .../internal/referencing/provider/EPSGName.java    |  4 +--
 .../referencing/provider/Equirectangular.java      |  2 +-
 .../provider/FranceGeocentricInterpolation.java    |  6 ++--
 .../referencing/provider/GeodeticOperation.java    |  2 +-
 .../provider/Geographic3DtoVertical.txt            |  2 +-
 .../referencing/provider/LambertConformalWest.java |  2 +-
 .../internal/referencing/provider/Mercator2SP.java |  2 +-
 .../referencing/provider/MillerCylindrical.java    |  2 +-
 .../provider/ModifiedAzimuthalEquidistant.java     |  2 +-
 .../provider/MolodenskyInterpolation.java          |  2 +-
 .../sis/internal/referencing/provider/NADCON.java  |  2 +-
 .../referencing/provider/PolarStereographicB.java  |  2 +-
 .../referencing/provider/VerticalOffset.java       |  4 +--
 .../java/org/apache/sis/io/wkt/Convention.java     |  6 ++--
 .../org/apache/sis/io/wkt/FormattableObject.java   |  2 +-
 .../main/java/org/apache/sis/io/wkt/Formatter.java |  4 +--
 .../apache/sis/io/wkt/GeodeticObjectParser.java    | 12 ++++----
 .../java/org/apache/sis/io/wkt/KeywordCase.java    |  2 +-
 .../org/apache/sis/io/wkt/MathTransformParser.java |  6 ++--
 .../main/java/org/apache/sis/io/wkt/Parser.java    |  2 +-
 .../java/org/apache/sis/io/wkt/StoredTree.java     | 10 +++----
 .../main/java/org/apache/sis/io/wkt/Symbols.java   |  2 +-
 .../java/org/apache/sis/io/wkt/Transliterator.java |  6 ++--
 .../sis/io/wkt/UnformattableObjectException.java   |  2 +-
 .../java/org/apache/sis/io/wkt/VerticalInfo.java   |  2 +-
 .../java/org/apache/sis/io/wkt/WKTDictionary.java  | 10 +++----
 .../main/java/org/apache/sis/io/wkt/WKTFormat.java |  2 +-
 .../main/java/org/apache/sis/io/wkt/Warnings.java  |  2 +-
 .../java/org/apache/sis/io/wkt/package-info.java   | 12 ++++----
 .../sis/parameter/DefaultParameterDescriptor.java  |  2 +-
 .../sis/parameter/DefaultParameterValue.java       |  2 +-
 .../sis/parameter/DefaultParameterValueGroup.java  |  2 +-
 .../org/apache/sis/parameter/MatrixParameters.java |  2 +-
 .../org/apache/sis/parameter/ParameterBuilder.java |  4 +--
 .../org/apache/sis/parameter/ParameterFormat.java  |  2 +-
 .../apache/sis/parameter/ParameterValueList.java   |  2 +-
 .../java/org/apache/sis/parameter/Parameters.java  |  6 ++--
 .../org/apache/sis/parameter/TensorParameters.java |  2 +-
 .../sis/parameter/UnmodifiableParameterValue.java  |  2 +-
 .../java/org/apache/sis/parameter/Verifier.java    |  2 +-
 .../sis/referencing/AbstractIdentifiedObject.java  | 22 +++++++-------
 .../sis/referencing/AbstractReferenceSystem.java   |  2 +-
 .../java/org/apache/sis/referencing/Builder.java   |  6 ++--
 .../main/java/org/apache/sis/referencing/CRS.java  | 16 +++++-----
 .../java/org/apache/sis/referencing/CommonCRS.java |  2 +-
 .../sis/referencing/EPSGFactoryFallback.java       |  2 +-
 .../sis/referencing/GeodesicsOnEllipsoid.java      | 10 +++----
 .../apache/sis/referencing/GeodeticCalculator.java | 12 ++++----
 .../apache/sis/referencing/IdentifiedObjects.java  |  8 ++---
 .../sis/referencing/ImmutableIdentifier.java       |  2 +-
 .../org/apache/sis/referencing/NameIterator.java   |  2 +-
 .../apache/sis/referencing/crs/AbstractCRS.java    |  4 +--
 .../sis/referencing/crs/AbstractDerivedCRS.java    |  4 +--
 .../sis/referencing/crs/DefaultCompoundCRS.java    |  4 +--
 .../sis/referencing/crs/DefaultDerivedCRS.java     |  6 ++--
 .../sis/referencing/crs/DefaultEngineeringCRS.java |  2 +-
 .../sis/referencing/crs/DefaultGeodeticCRS.java    |  4 +--
 .../sis/referencing/crs/DefaultImageCRS.java       |  2 +-
 .../org/apache/sis/referencing/crs/SubTypes.java   |  2 +-
 .../org/apache/sis/referencing/cs/AbstractCS.java  |  6 ++--
 .../apache/sis/referencing/cs/AxesConvention.java  | 10 +++----
 .../org/apache/sis/referencing/cs/AxisFilter.java  |  2 +-
 .../sis/referencing/cs/CoordinateSystems.java      |  2 +-
 .../cs/DefaultCoordinateSystemAxis.java            |  8 ++---
 .../org/apache/sis/referencing/cs/Normalizer.java  |  2 +-
 .../sis/referencing/datum/BursaWolfParameters.java |  2 +-
 .../sis/referencing/datum/DatumShiftGrid.java      | 10 +++----
 .../referencing/datum/DefaultGeodeticDatum.java    |  4 +--
 .../referencing/datum/DefaultPrimeMeridian.java    |  6 ++--
 .../referencing/datum/DefaultVerticalDatum.java    |  2 +-
 .../referencing/factory/AuthorityFactoryProxy.java |  2 +-
 .../factory/CommonAuthorityFactory.java            |  4 +--
 .../factory/ConcurrentAuthorityFactory.java        |  8 ++---
 .../referencing/factory/GeodeticObjectFactory.java |  6 ++--
 .../factory/IdentifiedObjectFinder.java            |  4 +--
 .../referencing/factory/IdentifiedObjectSet.java   |  6 ++--
 .../factory/LazySynchronizedIterator.java          |  2 +-
 .../factory/MissingFactoryResourceException.java   |  2 +-
 .../factory/MultiAuthoritiesFactory.java           | 12 ++++----
 .../sis/referencing/factory/ReferenceKeeper.java   |  2 +-
 .../referencing/factory/sql/AuthorityCodes.java    |  2 +-
 .../sis/referencing/factory/sql/BursaWolfInfo.java |  2 +-
 .../referencing/factory/sql/EPSGCodeFinder.java    |  2 +-
 .../referencing/factory/sql/EPSGDataAccess.java    | 20 ++++++-------
 .../sis/referencing/factory/sql/SQLTranslator.java |  6 ++--
 .../sis/referencing/factory/sql/TableInfo.java     |  4 +--
 .../sis/referencing/factory/sql/package-info.java  |  4 +--
 .../operation/AbstractCoordinateOperation.java     |  4 +--
 .../operation/AbstractSingleOperation.java         | 10 +++----
 .../operation/CoordinateOperationContext.java      |  2 +-
 .../operation/CoordinateOperationFinder.java       |  8 ++---
 .../operation/CoordinateOperationRegistry.java     |  8 ++---
 .../operation/DefaultConcatenatedOperation.java    |  6 ++--
 .../referencing/operation/DefaultConversion.java   | 10 +++----
 .../operation/DefaultOperationMethod.java          | 14 ++++-----
 .../operation/DefaultPassThroughOperation.java     |  2 +-
 .../operation/InverseOperationMethod.java          |  4 +--
 .../operation/LooselyDefinedMethod.java            |  4 +--
 .../operation/MismatchedDatumException.java        |  2 +-
 .../referencing/operation/SubOperationInfo.java    |  8 ++---
 .../operation/builder/LinearTransformBuilder.java  | 12 ++++----
 .../operation/builder/LocalizationGridBuilder.java |  4 +--
 .../builder/LocalizationGridException.java         |  2 +-
 .../operation/builder/ProjectedTransformTry.java   |  2 +-
 .../operation/builder/ResidualGrid.java            |  4 +--
 .../sis/referencing/operation/builder/readme.html  |  2 +-
 .../operation/matrix/GeneralMatrix.java            |  2 +-
 .../sis/referencing/operation/matrix/Matrices.java |  8 ++---
 .../operation/matrix/NonSquareMatrix.java          |  2 +-
 .../referencing/operation/matrix/package-info.java |  2 +-
 .../sis/referencing/operation/package-info.java    |  4 +--
 .../operation/projection/AlbersEqualArea.java      |  4 +--
 .../operation/projection/AuthalicConversion.java   | 10 +++----
 .../operation/projection/ConformalProjection.java  | 12 ++++----
 .../operation/projection/CylindricalEqualArea.java |  6 ++--
 .../operation/projection/Initializer.java          |  2 +-
 .../projection/LambertAzimuthalEqualArea.java      |  2 +-
 .../projection/LambertConicConformal.java          |  6 ++--
 .../operation/projection/LongitudeWraparound.java  |  2 +-
 .../referencing/operation/projection/Mercator.java | 10 +++----
 .../operation/projection/MeridianArcBased.java     |  6 ++--
 .../projection/ModifiedAzimuthalEquidistant.java   |  2 +-
 .../operation/projection/Mollweide.java            |  2 +-
 .../operation/projection/NormalizedProjection.java |  8 ++---
 .../operation/projection/ObliqueStereographic.java |  6 ++--
 .../operation/projection/SatelliteTracking.java    |  2 +-
 .../operation/projection/Sinusoidal.java           |  4 +--
 .../operation/projection/TransverseMercator.java   |  8 ++---
 .../operation/projection/package-info.java         |  4 +--
 .../transform/AbstractLinearTransform.java         |  4 +--
 .../operation/transform/AbstractMathTransform.java | 10 +++----
 .../transform/AbstractMathTransform2D.java         |  2 +-
 .../operation/transform/ConcatenatedTransform.java | 10 +++----
 .../operation/transform/ContextualParameter.java   |  2 +-
 .../operation/transform/ContextualParameters.java  | 14 ++++-----
 .../operation/transform/DatumShiftTransform.java   |  2 +-
 .../transform/DefaultMathTransformFactory.java     | 18 ++++++------
 .../operation/transform/DomainDefinition.java      |  2 +-
 .../transform/ExponentialTransform1D.java          |  4 +--
 .../operation/transform/InterpolatedTransform.java | 10 +++----
 .../operation/transform/LinearTransform.java       |  4 +--
 .../transform/LogarithmicTransform1D.java          |  4 +--
 .../operation/transform/MathTransforms.java        |  4 +--
 .../operation/transform/MolodenskyFormula.java     |  2 +-
 .../operation/transform/OperationMethodSet.java    |  6 ++--
 .../operation/transform/PassThroughTransform.java  |  4 +--
 .../operation/transform/PoleRotation.java          |  2 +-
 .../operation/transform/TransformSeparator.java    |  4 +--
 .../operation/transform/WraparoundTransform.java   | 12 ++++----
 .../operation/transform/package-info.java          |  4 +--
 .../org/apache/sis/referencing/package-info.java   |  2 +-
 .../org/apache/sis/geometry/TransformTestCase.java |  4 +--
 .../provider/GeographicOffsetsTest.java            |  2 +-
 .../internal/referencing/provider/NTv2Test.java    |  2 +-
 .../sis/io/wkt/GeodeticObjectParserTest.java       |  4 +--
 .../apache/sis/referencing/ClenshawSummation.java  |  4 +--
 .../sis/referencing/EPSGFactoryFallbackTest.java   |  2 +-
 .../sis/referencing/GeodeticCalculatorTest.java    |  2 +-
 .../apache/sis/referencing/cs/HardCodedAxes.java   |  2 +-
 .../apache/sis/referencing/cs/NormalizerTest.java  |  2 +-
 .../datum/DefaultGeodeticDatumTest.java            |  2 +-
 .../factory/ConcurrentAuthorityFactoryTest.java    |  2 +-
 .../referencing/factory/sql/EPSGFactoryTest.java   |  4 +--
 .../factory/sql/epsg/DataScriptFormatter.java      |  2 +-
 .../sis/referencing/factory/sql/epsg/package.html  |  2 +-
 .../operation/CoordinateOperationFinderTest.java   |  4 +--
 .../operation/CoordinateOperationRegistryTest.java |  2 +-
 .../operation/DefaultConversionTest.java           |  2 +-
 .../operation/builder/ResidualGridTest.java        |  2 +-
 .../referencing/operation/matrix/MatricesTest.java |  2 +-
 .../operation/matrix/MatrixTestCase.java           | 12 ++++----
 .../operation/matrix/NonSquareMatrixTest.java      |  2 +-
 .../operation/projection/AlbersEqualAreaTest.java  |  2 +-
 .../projection/ConformalProjectionTest.java        |  4 +--
 .../operation/projection/InitializerTest.java      |  2 +-
 .../projection/LambertConicConformalTest.java      |  2 +-
 .../projection/MapProjectionTestCase.java          |  2 +-
 .../projection/MercatorMethodComparison.java       |  2 +-
 .../projection/ObliqueStereographicTest.java       |  2 +-
 .../projection/TransverseMercatorTest.java         |  2 +-
 .../transform/DefaultMathTransformFactoryTest.java |  2 +-
 .../transform/ProjectiveTransformTest.java         |  2 +-
 .../report/CoordinateReferenceSystems.java         |  4 +--
 .../sis/test/integration/ConsistencyTest.java      |  4 +--
 .../apache/sis/test/integration/MetadataTest.java  |  2 +-
 .../referencing/datum/VerticalDatum (GML 3.1).xml  |  2 +-
 .../sis/internal/converter/ArrayConverter.java     |  2 +-
 .../apache/sis/internal/converter/ClassPair.java   |  2 +-
 .../sis/internal/converter/ConverterRegistry.java  | 12 ++++----
 .../sis/internal/converter/FallbackConverter.java  |  6 ++--
 .../sis/internal/converter/NumberConverter.java    |  4 +--
 .../sis/internal/converter/StringConverter.java    |  2 +-
 .../internal/converter/SurjectiveConverter.java    |  2 +-
 .../sis/internal/converter/SystemRegistry.java     |  2 +-
 .../apache/sis/internal/system/CommonExecutor.java |  2 +-
 .../sis/internal/system/DelayedExecutor.java       |  2 +-
 .../sis/internal/system/LocalizedStaticObject.java |  2 +-
 .../org/apache/sis/internal/system/Loggers.java    |  2 +-
 .../internal/system/ReferenceQueueConsumer.java    |  2 +-
 .../org/apache/sis/internal/system/Threads.java    |  2 +-
 .../apache/sis/internal/util/CollectionsExt.java   | 10 +++----
 .../org/apache/sis/internal/util/Constants.java    |  4 +--
 .../apache/sis/internal/util/DefinitionURI.java    |  4 +--
 .../org/apache/sis/internal/util/DoubleDouble.java |  4 +--
 .../apache/sis/internal/util/SetOfUnknownSize.java |  4 +--
 .../sis/internal/util/StandardDateFormat.java      |  2 +-
 .../java/org/apache/sis/internal/util/Strings.java |  2 +-
 .../sis/internal/util/UnmodifiableArrayList.java   |  6 ++--
 .../java/org/apache/sis/internal/util/X364.java    |  2 +-
 .../java/org/apache/sis/io/CompoundFormat.java     | 10 +++----
 .../main/java/org/apache/sis/io/package-info.java  |  2 +-
 .../main/java/org/apache/sis/math/ArrayVector.java |  4 +--
 .../apache/sis/math/CompoundDirectPositions.java   |  2 +-
 .../java/org/apache/sis/math/DecimalFunctions.java | 34 +++++++++++-----------
 .../main/java/org/apache/sis/math/Fraction.java    |  6 ++--
 .../java/org/apache/sis/math/FunctionProperty.java |  4 +--
 .../java/org/apache/sis/math/MathFunctions.java    |  6 ++--
 .../src/main/java/org/apache/sis/math/Vector.java  | 14 ++++-----
 .../java/org/apache/sis/math/package-info.java     |  2 +-
 .../java/org/apache/sis/measure/AbstractUnit.java  | 18 ++++++------
 .../java/org/apache/sis/measure/AngleFormat.java   | 14 ++++-----
 .../org/apache/sis/measure/ConventionalUnit.java   |  8 ++---
 .../java/org/apache/sis/measure/DerivedScalar.java |  4 +--
 .../org/apache/sis/measure/LinearConverter.java    |  2 +-
 .../java/org/apache/sis/measure/NumberRange.java   |  2 +-
 .../java/org/apache/sis/measure/Quantities.java    |  4 +--
 .../main/java/org/apache/sis/measure/Range.java    | 10 +++----
 .../java/org/apache/sis/measure/RangeFormat.java   |  2 +-
 .../main/java/org/apache/sis/measure/Salinity.java |  2 +-
 .../main/java/org/apache/sis/measure/Scalar.java   |  2 +-
 .../java/org/apache/sis/measure/UnitFormat.java    | 22 +++++++-------
 .../main/java/org/apache/sis/measure/Units.java    |  6 ++--
 .../java/org/apache/sis/measure/package-info.java  |  2 +-
 .../src/main/java/org/apache/sis/setup/About.java  |  2 +-
 .../apache/sis/setup/InstallationResources.java    |  2 +-
 .../main/java/org/apache/sis/setup/OptionKey.java  | 10 +++----
 .../sis/util/AbstractInternationalString.java      |  2 +-
 .../java/org/apache/sis/util/CharSequences.java    | 22 +++++++-------
 .../src/main/java/org/apache/sis/util/Classes.java |  6 ++--
 .../java/org/apache/sis/util/ComparisonMode.java   |  2 +-
 .../apache/sis/util/CorruptedObjectException.java  |  4 +--
 .../sis/util/DefaultInternationalString.java       |  2 +-
 .../main/java/org/apache/sis/util/Disposable.java  |  2 +-
 .../main/java/org/apache/sis/util/Emptiable.java   |  2 +-
 .../main/java/org/apache/sis/util/Exceptions.java  |  4 +--
 .../org/apache/sis/util/LenientComparable.java     |  4 +--
 .../src/main/java/org/apache/sis/util/Locales.java |  4 +--
 .../main/java/org/apache/sis/util/Localized.java   |  2 +-
 .../org/apache/sis/util/LocalizedException.java    |  4 +--
 .../org/apache/sis/util/NullArgumentException.java |  2 +-
 .../sis/util/ResourceInternationalString.java      |  2 +-
 .../java/org/apache/sis/util/StringBuilders.java   |  4 +--
 .../util/UnsupportedImplementationException.java   |  2 +-
 .../main/java/org/apache/sis/util/Utilities.java   |  2 +-
 .../src/main/java/org/apache/sis/util/Version.java |  4 +--
 .../java/org/apache/sis/util/collection/Cache.java |  6 ++--
 .../apache/sis/util/collection/CodeListSet.java    |  2 +-
 .../org/apache/sis/util/collection/Containers.java |  8 ++---
 .../sis/util/collection/DefaultTreeTable.java      |  4 +--
 .../sis/util/collection/DerivedIterator.java       |  2 +-
 .../org/apache/sis/util/collection/TreeTable.java  |  6 ++--
 .../sis/util/collection/TreeTableFormat.java       |  2 +-
 .../org/apache/sis/util/collection/TreeTables.java |  2 +-
 .../sis/util/collection/WeakValueHashMap.java      |  2 +-
 .../java/org/apache/sis/util/logging/Logging.java  |  2 +-
 .../apache/sis/util/logging/MonolineFormatter.java |  4 +--
 .../apache/sis/util/logging/PerformanceLevel.java  |  8 ++---
 .../org/apache/sis/util/logging/package-info.java  |  2 +-
 .../sis/util/resources/IndexedResourceBundle.java  |  2 +-
 .../apache/sis/util/resources/package-info.java    |  2 +-
 core/sis-utility/src/main/javadoc/overview.html    |  4 +--
 .../java/org/apache/sis/measure/DateRangeTest.java |  2 +-
 .../apache/sis/measure/LinearConverterTest.java    |  2 +-
 .../org/apache/sis/measure/UnitFormatTest.java     |  2 +-
 .../java/org/apache/sis/setup/OptionKeyTest.java   |  2 +-
 .../test/java/org/apache/sis/test/TestStep.java    |  2 +-
 .../test/java/org/apache/sis/test/TestSuite.java   |  2 +-
 .../java/org/apache/sis/test/TestUtilities.java    |  6 ++--
 .../java/org/apache/sis/test/package-info.java     |  2 +-
 .../sis/util/collection/WeakHashSetTest.java       |  2 +-
 .../sis/util/collection/WeakValueHashMapTest.java  |  2 +-
 ide-project/README.txt                             |  2 +-
 .../apache/sis/internal/earth/netcdf/GCOM_C.java   |  6 ++--
 .../sis/storage/landsat/LandsatStoreProvider.java  |  2 +-
 .../apache/sis/storage/landsat/MetadataReader.java |  4 +--
 .../storage/landsat/doc-files/MetadataMapping.html |  2 +-
 .../sis/internal/geotiff/SchemaModifier.java       |  2 +-
 .../sis/internal/storage/inflater/CCITTRLE.java    |  4 +--
 .../sis/internal/storage/inflater/Inflater.java    |  2 +-
 .../apache/sis/internal/storage/inflater/LZW.java  |  4 +--
 .../internal/storage/inflater/package-info.java    |  2 +-
 .../org/apache/sis/storage/geotiff/CRSBuilder.java |  2 +-
 .../org/apache/sis/storage/geotiff/DataCube.java   |  2 +-
 .../org/apache/sis/storage/geotiff/DataSubset.java |  2 +-
 .../sis/storage/geotiff/GeoTiffStoreProvider.java  |  2 +-
 .../sis/storage/geotiff/ImageFileDirectory.java    |  6 ++--
 .../apache/sis/storage/geotiff/Localization.java   |  2 +-
 .../apache/sis/storage/geotiff/NativeMetadata.java |  2 +-
 .../sis/storage/geotiff/ReversedBitsChannel.java   |  2 +-
 .../apache/sis/storage/geotiff/GeoIdentifiers.java |  2 +-
 .../apache/sis/storage/geotiff/GeoKeysTest.java    |  2 +-
 .../sis/storage/geotiff/XMLMetadataTest.java       |  4 +--
 .../java/org/apache/sis/internal/netcdf/Axis.java  | 14 ++++-----
 .../org/apache/sis/internal/netcdf/CRSBuilder.java |  2 +-
 .../org/apache/sis/internal/netcdf/Convention.java |  6 ++--
 .../org/apache/sis/internal/netcdf/DataType.java   |  8 ++---
 .../org/apache/sis/internal/netcdf/Decoder.java    |  4 +--
 .../java/org/apache/sis/internal/netcdf/Grid.java  |  2 +-
 .../apache/sis/internal/netcdf/GridAdjustment.java |  4 +--
 .../apache/sis/internal/netcdf/GridCacheKey.java   |  2 +-
 .../apache/sis/internal/netcdf/GridMapping.java    |  2 +-
 .../org/apache/sis/internal/netcdf/Linearizer.java |  8 ++---
 .../apache/sis/internal/netcdf/RasterResource.java |  8 ++---
 .../org/apache/sis/internal/netcdf/Variable.java   | 14 ++++-----
 .../apache/sis/internal/netcdf/VariableRole.java   |  2 +-
 .../sis/internal/netcdf/impl/ChannelDecoder.java   |  2 +-
 .../apache/sis/internal/netcdf/impl/GridInfo.java  |  2 +-
 .../sis/internal/netcdf/impl/VariableInfo.java     |  4 +--
 .../apache/sis/internal/netcdf/package-info.java   |  4 +--
 .../sis/internal/netcdf/ucar/DecoderWrapper.java   |  2 +-
 .../sis/internal/netcdf/ucar/DimensionWrapper.java |  4 +--
 .../sis/internal/netcdf/ucar/GridWrapper.java      |  4 +--
 .../sis/internal/netcdf/ucar/LogAdapter.java       |  2 +-
 .../sis/internal/netcdf/ucar/VariableWrapper.java  |  2 +-
 .../apache/sis/storage/netcdf/AttributeNames.java  | 12 ++++----
 .../apache/sis/storage/netcdf/MetadataReader.java  |  6 ++--
 .../sis/storage/netcdf/NetcdfStoreProvider.java    |  2 +-
 .../apache/sis/internal/netcdf/DecoderTest.java    |  2 +-
 .../org/apache/sis/internal/netcdf/GridTest.java   |  2 +-
 .../apache/sis/internal/netcdf/VariableTest.java   |  2 +-
 .../apache/sis/internal/sql/feature/Column.java    |  2 +-
 .../apache/sis/internal/sql/feature/Database.java  |  6 ++--
 .../sis/internal/sql/feature/FeatureAnalyzer.java  |  2 +-
 .../sis/internal/sql/feature/FeatureIterator.java  |  2 +-
 .../sis/internal/sql/feature/FeatureStream.java    |  2 +-
 .../sis/internal/sql/feature/InfoStatements.java   |  2 +-
 .../apache/sis/internal/sql/feature/Relation.java  |  4 +--
 .../org/apache/sis/internal/sql/feature/Table.java |  2 +-
 .../sis/internal/sql/postgis/RasterFormat.java     |  2 +-
 .../sis/internal/sql/postgis/RasterReader.java     |  2 +-
 .../sis/internal/sql/postgis/RasterWriter.java     |  2 +-
 .../apache/sis/internal/stream/DeferredStream.java |  2 +-
 .../sis/internal/storage/MetadataBuilder.java      |  4 +--
 .../apache/sis/internal/storage/PRJDataStore.java  |  4 +--
 .../apache/sis/internal/storage/StoreMetadata.java |  4 +--
 .../sis/internal/storage/StoreUtilities.java       |  2 +-
 .../sis/internal/storage/TiledGridCoverage.java    |  6 ++--
 .../sis/internal/storage/TiledGridResource.java    |  4 +--
 .../sis/internal/storage/csv/FeatureIterator.java  |  4 +--
 .../storage/csv/MovingFeatureIterator.java         |  2 +-
 .../sis/internal/storage/csv/StoreProvider.java    |  2 +-
 .../storage/esri/AsciiGridStoreProvider.java       |  2 +-
 .../sis/internal/storage/esri/RawRasterStore.java  |  2 +-
 .../storage/esri/RawRasterStoreProvider.java       |  2 +-
 .../sis/internal/storage/image/FormatFilter.java   |  2 +-
 .../sis/internal/storage/image/WorldFileStore.java |  2 +-
 .../storage/image/WorldFileStoreProvider.java      |  2 +-
 .../sis/internal/storage/image/WritableStore.java  |  2 +-
 .../sis/internal/storage/io/ChannelData.java       |  2 +-
 .../sis/internal/storage/io/ChannelDataInput.java  |  2 +-
 .../sis/internal/storage/io/ChannelDataOutput.java |  2 +-
 .../storage/io/ChannelImageInputStream.java        |  2 +-
 .../internal/storage/io/HyperRectangleReader.java  |  2 +-
 .../sis/internal/storage/io/IOUtilities.java       |  2 +-
 .../sis/internal/storage/wkt/StoreFormat.java      |  2 +-
 .../sis/internal/storage/xml/package-info.java     |  2 +-
 .../java/org/apache/sis/storage/Aggregate.java     |  2 +-
 .../java/org/apache/sis/storage/CoverageQuery.java |  2 +-
 .../java/org/apache/sis/storage/DataOptionKey.java |  2 +-
 .../java/org/apache/sis/storage/DataStore.java     |  6 ++--
 .../org/apache/sis/storage/DataStoreException.java |  2 +-
 .../org/apache/sis/storage/DataStoreProvider.java  |  6 ++--
 .../java/org/apache/sis/storage/FeatureNaming.java |  4 +--
 .../java/org/apache/sis/storage/FeatureSet.java    |  2 +-
 .../sis/storage/ForwardOnlyStorageException.java   |  2 +-
 .../apache/sis/storage/GridCoverageResource.java   |  8 ++---
 .../java/org/apache/sis/storage/ProbeResult.java   |  4 +--
 .../main/java/org/apache/sis/storage/Resource.java |  2 +-
 .../org/apache/sis/storage/StorageConnector.java   | 12 ++++----
 .../sis/storage/UnsupportedEncodingException.java  |  2 +-
 .../aggregate/ConcatenatedGridCoverage.java        |  2 +-
 .../sis/storage/aggregate/CoverageAggregator.java  |  4 +--
 .../sis/storage/aggregate/JoinFeatureSet.java      |  4 +--
 .../sis/storage/event/CascadedStoreEvent.java      |  6 ++--
 .../apache/sis/storage/event/StoreListeners.java   |  2 +-
 .../java/org/apache/sis/storage/tiling/Tile.java   |  2 +-
 .../apache/sis/storage/tiling/TileMatrixSet.java   |  4 +--
 .../org/apache/sis/storage/tiling/TileStatus.java  |  4 +--
 .../apache/sis/storage/tiling/TiledResource.java   |  2 +-
 .../sis/storage/tiling/WritableTileMatrixSet.java  |  2 +-
 .../internal/storage/io/ChannelDataOutputTest.java |  2 +-
 .../storage/io/HyperRectangleReaderTest.java       |  4 +--
 .../storage/io/ImageInputStreamComparator.java     |  2 +-
 .../storage/io/RewindableLineReaderTest.java       |  2 +-
 .../apache/sis/storage/StorageConnectorTest.java   |  2 +-
 .../sis/test/storage/CoverageReadConsistency.java  |  2 +-
 .../apache/sis/test/storage/SubsampledImage.java   |  4 +--
 .../apache/sis/internal/storage/gpx/Metadata.java  |  2 +-
 .../apache/sis/internal/storage/gpx/Person.java    |  2 +-
 .../apache/sis/internal/storage/gpx/Reader.java    |  4 +--
 .../storage/xml/stream/FormattedWriter.java        |  2 +-
 .../internal/storage/xml/stream/StaxDataStore.java |  2 +-
 .../storage/xml/stream/StaxStreamWriter.java       |  2 +-
 652 files changed, 1333 insertions(+), 1333 deletions(-)

diff --git a/application/sis-console/src/main/artifact/conf/logging.properties b/application/sis-console/src/main/artifact/conf/logging.properties
index 9ecda65622..95c0f0dee3 100644
--- a/application/sis-console/src/main/artifact/conf/logging.properties
+++ b/application/sis-console/src/main/artifact/conf/logging.properties
@@ -31,7 +31,7 @@ handlers = java.util.logging.ConsoleHandler
 # Each package can have its logs filtered at a different level.
 # By default Apache SIS logs at levels CONFIG and above will be
 # shown, while only levels INFO and above will be shown for other
-# packages. Furthermore the ConsoleHandler also has a separate level
+# packages. Furthermore, the ConsoleHandler also has a separate level
 # setting to limit messages printed to the console.
 
 .level = INFO
diff --git a/application/sis-console/src/main/java/org/apache/sis/console/Command.java b/application/sis-console/src/main/java/org/apache/sis/console/Command.java
index 75758ec294..8c78513fdf 100644
--- a/application/sis-console/src/main/java/org/apache/sis/console/Command.java
+++ b/application/sis-console/src/main/java/org/apache/sis/console/Command.java
@@ -249,7 +249,7 @@ public final class Command {
          *
          *     java.util.logging.ConsoleHandler.formatter = org.apache.sis.util.logging.MonolineFormatter
          *
-         * However this configuration is silently ignored by LogManager at JVM startup time, probably
+         * However, this configuration is silently ignored by LogManager at JVM startup time, probably
          * because the Apache SIS class is not on the system classpath. So we check again for this
          * configuration line here, and manually install our log formatter only if the above-cited
          * line is present.
diff --git a/application/sis-console/src/test/java/org/apache/sis/console/CRSCommandTest.java b/application/sis-console/src/test/java/org/apache/sis/console/CRSCommandTest.java
index 3acf13b386..afc92ed5ce 100644
--- a/application/sis-console/src/test/java/org/apache/sis/console/CRSCommandTest.java
+++ b/application/sis-console/src/test/java/org/apache/sis/console/CRSCommandTest.java
@@ -37,7 +37,7 @@ import static org.junit.Assert.*;
 public final strictfp class CRSCommandTest extends TestCase {
     /**
      * The Well Known Text for EPSG:4326 as a regular expression.
-     * This string uses the native line separator. Consequently test cases comparing
+     * This string uses the native line separator. Consequently, test cases comparing
      * against this pattern are expected to use that line separator for every lines.
      */
     private String WGS84;
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java
index d48ff2497f..286ae234c7 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/DataViewer.java
@@ -203,7 +203,7 @@ public class DataViewer extends Application {
         window.show();
         /*
          * Hide splash screen when the application it ready to show. Despite above call to `window.show()`,
-         * the window will become really visible only after this method returned. Consequently the splash
+         * the window will become really visible only after this method returned. Consequently, the splash
          * screen will be hidden before the main window become visible.
          */
         final SplashScreen sp = SplashScreen.getSplashScreen();
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageExplorer.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageExplorer.java
index 3c3e3e9f6f..2d693eb37d 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageExplorer.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/CoverageExplorer.java
@@ -364,7 +364,7 @@ public class CoverageExplorer extends Widget {
         assert Platform.isFxApplicationThread();
         /*
          * We build when first requested because `ResourceExplorer` for example will never request this view.
-         * Instead it will invoke `getDataView(View)` or `getControls(View)` and layout those regions itself.
+         * Instead, it will invoke `getDataView(View)` or `getControls(View)` and layout those regions itself.
          */
         if (content == null) {
             /*
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java
index 372d7b1de5..ae4d22b024 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/GridRowSkin.java
@@ -58,7 +58,7 @@ final class GridRowSkin extends CellSkinBase<GridRow> {
      * This method also sets the content of the cell.
      *
      * <div class="note"><b>Note:</b> I'm not sure it is a good practice to add/remove children
-     * and to modify text values here, but I have not identified another place yet. However the
+     * and to modify text values here, but I have not identified another place yet. However, the
      * JavaFX implementation of table skin seems to do the same, so I presume it is okay.</div>
      *
      * The {@code width} argument can be a large number (for example 24000) because it includes
@@ -91,7 +91,7 @@ final class GridRowSkin extends CellSkinBase<GridRow> {
         /*
          * Get the beginning (pos) and end (limit) of the region to render. We create only the amount
          * of GridCell instances needed for rendering this region. We should not create cells for the
-         * whole row since it would be too many cells (can be millions). Instead we recycle the cells
+         * whole row since it would be too many cells (can be millions). Instead, we recycle the cells
          * in a list of children that we try to keep small. All children starting at index 1 shall be
          * GridCell instances created in this method.
          */
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/ImagePropertyExplorer.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/ImagePropertyExplorer.java
index 83bdb43bce..a892225845 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/ImagePropertyExplorer.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage/ImagePropertyExplorer.java
@@ -391,8 +391,8 @@ public class ImagePropertyExplorer extends Widget {
         }
         /*
          * Table of image layout built with a fixed set of rows: no row will be added or removed after
-         * construction. Instead property values of existing rows will be modified when a new image is
-         * selected. Row selection are not allowed since we have nothing to do with selected rows.
+         * construction. Instead, property values of existing rows will be modified when a new image
+         * is selected. Row selection are not allowed since we have nothing to do with selected rows.
          */
         {
             final FilteredList<LayoutRow> filtered;
@@ -641,7 +641,7 @@ public class ImagePropertyExplorer extends Widget {
                 /*
                  * Gets a simple top-level class name for an image class. If the image is an enclosed class,
                  * searches for a parent class because enclosed class names are often not very informative.
-                 * For example `ImageRenderer.Untitled` is a `BufferedImage` subclass.
+                 * For example, `ImageRenderer.Untitled` is a `BufferedImage` subclass.
                  */
                 Class<?> type = image.getClass();
                 while (type.getEnclosingClass() != null) {
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ExpandableList.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ExpandableList.java
index 791b2164ee..8b41ab071f 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ExpandableList.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ExpandableList.java
@@ -86,7 +86,7 @@ final class ExpandableList extends TransformationList<Feature,Feature>
     /**
      * The rows of the expanded feature, or {@code null} if none. If non-null, this array shall never be empty.
      * The reason why we do not allow empty arrays is because we will insert {@code expansion.length - 1} rows
-     * below the expanded feature. Consequently empty arrays cause negative indices that are more difficult to
+     * below the expanded feature. Consequently, empty arrays cause negative indices that are more difficult to
      * debug than {@link NullPointerException}, because they happen later.
      *
      * <p>If non-null, they array should have at least 2 elements. An array of only 1 element is not wrong,
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/FeatureLoader.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/FeatureLoader.java
index 0c21329d1c..59d9ff909c 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/FeatureLoader.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/FeatureLoader.java
@@ -308,7 +308,7 @@ final class FeatureLoader extends Task<Boolean> implements Consumer<Feature> {
      * the JavaFX thread. This will erase the previous content and prepare new columns.
      *
      * <p>This method is invoked, directly or indirectly, only from the {@link #call()}
-     * method with non-null {@link #initializer}. Consequently the new rows have not yet
+     * method with non-null {@link #initializer}. Consequently, the new rows have not yet
      * been added at this time.</p>
      *
      * @param  type  the feature type, or {@code null}.
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceCell.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceCell.java
index 3d7f4d4fb9..0fbd45a098 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceCell.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceCell.java
@@ -189,7 +189,7 @@ final class ResourceCell extends TreeCell<Resource> {
 
     /**
      * Sets the view of the resource to show in this node.
-     * For example instead of showing the components as given by the data store,
+     * For example, instead of showing the components as given by the data store,
      * we can create an aggregated view of all components.
      */
     private void setView(final TreeViewType type) {
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java
index 1f3362d9ba..b47fa88dad 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/ResourceTree.java
@@ -110,7 +110,7 @@ public class ResourceTree extends TreeView<Resource> {
      * <h4>Design note</h4>
      * We use a list instead of creating a {@link Task} for each item because the latter can create a lot
      * of threads, which are likely to be blocked anyway because of {@link DataStore} synchronization.
-     * Furthermore those threads of overkill in the common case where labels are very quick to fetch.
+     * Furthermore, those threads of overkill in the common case where labels are very quick to fetch.
      *
      * @see #fetchLabel(ResourceItem.Completer)
      */
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/WindowHandler.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/WindowHandler.java
index 2a7765fbe6..3ccc4ed658 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/WindowHandler.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/dataset/WindowHandler.java
@@ -176,7 +176,7 @@ public abstract class WindowHandler {
     /**
      * Returns the canvas (if any) where the resource is shown.
      * Canvas exists for some kinds of view such as {@link CoverageExplorer}, but not for every kinds.
-     * For example tabular data such as {@link FeatureTable} have no canvas.
+     * For example, tabular data such as {@link FeatureTable} have no canvas.
      *
      * @return the canvas where the resource is shown.
      *
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/OperationFinder.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/OperationFinder.java
index ca524dd072..c3c814f148 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/OperationFinder.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/OperationFinder.java
@@ -58,7 +58,7 @@ abstract class OperationFinder extends Task<MathTransform> {
      *
      * Actually this information is rarely needed. It is needed only if there is no known affine transform from grid
      * coordinates to some geospatial coordinates that we can use as a starting point (before to apply map projection
-     * to other CRSs if desired). For example some netCDF files provides the coordinates of each pixel in data arrays.
+     * to other CRSs if desired). For example, some netCDF files provides the coordinates of each pixel in data arrays.
      * Those data arrays can be stored (indirectly) in this {@code dataGeometry} object.
      */
     private final GridGeometry dataGeometry;
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java
index 9c6daf0c75..f1cb16d175 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/StatusBar.java
@@ -120,7 +120,7 @@ import org.apache.sis.referencing.gazetteer.ReferencingByIdentifiers;
  *     when the mouse moves inside the region of interest.</li>
  * </ul>
  *
- * Alternatively users can omit some or all above listener registrations and invoke
+ * Alternatively, users can omit some or all above listener registrations and invoke
  * {@link #setLocalCoordinates(double, double)} explicitly instead.
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -702,7 +702,7 @@ public class StatusBar extends Widget implements EventHandler<MouseEvent> {
      * This method is useful for tracking the pixel coordinates of an image obtained by
      * a call to {@link GridCoverage#render(GridExtent)}.
      * By {@code render(GridExtent)} contract, the {@link RenderedImage} pixel coordinates
-     * are relative to the requested {@link GridExtent}. Consequently we need to translate
+     * are relative to the requested {@link GridExtent}. Consequently, we need to translate
      * the grid coordinates so that the request coordinates start at zero.
      * This method handles that translation.
      *
@@ -743,7 +743,7 @@ public class StatusBar extends Widget implements EventHandler<MouseEvent> {
      * Implementation of {@link #applyCanvasGeometry(GridGeometry)} without changing {@link #position} visibility state.
      * Invoking this method usually invalidate the coordinates shown in this status bar. The new coordinates cannot be
      * easily recomputed because the {@link #lastX} and {@link #lastY} values may not be valid anymore, as a result of
-     * possible changes in JavaFX local coordinate system. Consequently the coordinates should be temporarily hidden
+     * possible changes in JavaFX local coordinate system. Consequently, the coordinates should be temporarily hidden
      * until a new {@link MouseEvent} gives us the new local coordinates, unless this method is invoked in a context
      * where we know that the "real world" coordinates should be the same even if local coordinates changed.
      *
@@ -821,7 +821,7 @@ public class StatusBar extends Widget implements EventHandler<MouseEvent> {
          * JavaFX view and considered invalid  because they depend on the transforms applied
          * on JavaFX node, which may have changed together with `localToObjectiveCRS` change.
          * So we cannot use those values for updating the coordinates shown in status bar.
-         * Instead we will wait for the next mouse event to provide new local coordinates.
+         * Instead, we will wait for the next mouse event to provide new local coordinates.
          */
         ((LocalToObjective) localToObjectiveCRS).setNoCheck(localToCRS);
         sourceCoordinates   = Arrays.copyOf(pointOfInterest, srcDim);
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesFormatter.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesFormatter.java
index 254b8c1225..efb9599825 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesFormatter.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesFormatter.java
@@ -276,7 +276,7 @@ final class ValuesFormatter extends ValuesUnderCursor.Formatter {
      * (produce 0 values) if invoked before {@link StatusBar#sampleValues} label is added in the scene graph.</p>
      *
      * <p>This method uses the same synchronization lock than {@link #evaluate(DirectPosition)}.
-     * Consequently this method may block if data loading are in progress in another thread.</p>
+     * Consequently, this method may block if data loading are in progress in another thread.</p>
      *
      * @param  selection  copy of {@link ValuesFromCoverage#selectedBands} made by the caller in JavaFX thread.
      * @param  labels     labels of {@link ValuesFromCoverage#valueChoices} menu items computed by caller in JavaFX thread.
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesUnderCursor.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesUnderCursor.java
index 84c178f0fd..70b923313a 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesUnderCursor.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/map/ValuesUnderCursor.java
@@ -35,7 +35,7 @@ import org.apache.sis.internal.gui.BackgroundThreads;
  * <h2>Multi-threading</h2>
  * Instances of {@code ValueUnderCursor} do not need to be thread-safe, because
  * all {@code ValuesUnderCursor} methods will be invoked from JavaFX thread.
- * However the actual fetching and formatting of values will be done in a background
+ * However, the actual fetching and formatting of values will be done in a background
  * thread using the {@link Formatter} inner class, which needs to be thread-safe.
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/gui/referencing/Utils.java b/application/sis-javafx/src/main/java/org/apache/sis/gui/referencing/Utils.java
index d5301cfeee..69f0ea51b7 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/gui/referencing/Utils.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/gui/referencing/Utils.java
@@ -59,7 +59,7 @@ final class Utils {
      *
      * <p>If a future version uses more than one authority factory, note that it would have the side effect
      * of making authority namespaces visible in the {@link CRSChooser} "Code" column, requiring more space.
-     * For example "4326" would become "EPSG:4326". We may need to revisit the widget layout in such case.</p>
+     * For example, "4326" would become "EPSG:4326". We may need to revisit the widget layout in such case.</p>
      */
     static CRSAuthorityFactory getDefaultFactory() throws FactoryException {
         return CRS.getAuthorityFactory(Constants.EPSG);
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/DataStoreOpener.java b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/DataStoreOpener.java
index b9e283b369..5eee24824c 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/DataStoreOpener.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/DataStoreOpener.java
@@ -232,9 +232,9 @@ public final class DataStoreOpener extends Task<DataStore> {
      * Generally {@code qualified} should be {@code false} if the label will be a node in a tree having the
      * filename as parent, and {@code true} if the label will be used outside the context of a tree.</p>
      *
-     * <p>This operation may be costly. For example the call to {@link Resource#getMetadata()}
+     * <p>This operation may be costly. For example, the call to {@link Resource#getMetadata()}
      * may cause the resource to open a connection to the EPSG database.
-     * Consequently his method should be invoked in a background thread.</p>
+     * Consequently, this method should be invoked in a background thread.</p>
      *
      * @param  resource   the resource for which to get a label, or {@code null}.
      * @param  locale     the locale to use for localizing international strings.
@@ -313,7 +313,7 @@ public final class DataStoreOpener extends Task<DataStore> {
      * Removes the given data store from cache and closes it. It is caller's responsibility
      * to ensure that the given data store is not used anymore before to invoke this method.
      * This method should be invoked from JavaFX thread for making sure there is no new usage
-     * of the given data store starting while we are closing it. However after the data store
+     * of the given data store starting while we are closing it. However, after the data store
      * has been removed from the cache, the close action is performed in a background thread.
      *
      * @param  toClose  the data store to remove from the cache and to close.
diff --git a/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/Inflater.java b/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/Inflater.java
index a77865a4ef..fde9acb696 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/Inflater.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/internal/setup/Inflater.java
@@ -32,7 +32,7 @@ import javax.swing.JProgressBar;
  * Decompress the ZIP file for JavaFX in a background thread.
  *
  * <p><b>Design note:</b> we do not use {@link javax.swing.SwingWorker} because that classes
- * is more expansive than what we need. For example it creates a pool of 10 threads while we
+ * is more expansive than what we need. For example, it creates a pool of 10 threads while we
  * need only one.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java b/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java
index 5fc9ebbda5..c0975c19df 100644
--- a/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java
+++ b/application/sis-openoffice/src/main/java/org/apache/sis/openoffice/CalcAddins.java
@@ -43,7 +43,7 @@ import org.apache.sis.util.resources.Vocabulary;
 public abstract class CalcAddins extends WeakBase implements XServiceName, XServiceInfo, XLocalizable {
     /**
      * Indirectly provides access to the service manager.
-     * For example {@code com.sun.star.sdb.DatabaseContext} holds databases registered with OpenOffice.
+     * For example, {@code com.sun.star.sdb.DatabaseContext} holds databases registered with OpenOffice.
      */
     protected final XComponentContext context;
 
diff --git a/application/sis-openoffice/src/main/unopkg/build-instruction.html b/application/sis-openoffice/src/main/unopkg/build-instruction.html
index 1bfbd75202..2ebc99958a 100644
--- a/application/sis-openoffice/src/main/unopkg/build-instruction.html
+++ b/application/sis-openoffice/src/main/unopkg/build-instruction.html
@@ -111,7 +111,7 @@ scalc -env:RTL_LOGFILE=log.txt</pre></blockquote>
 
 <p>
   It allows to attach the IDE debugger to the Java virtual machine running in LibreOffice.
-  For example with NetBeans, use <i>Debug</i> → <i>Attach debugger…</i>,
+  For example, with NetBeans, use <i>Debug</i> → <i>Attach debugger…</i>,
   select "Socket attach" as the transport and 8000 as the port number.
 </p>
 
diff --git a/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/CachedByteChannel.java b/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/CachedByteChannel.java
index 53d86814c0..8ca227467a 100644
--- a/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/CachedByteChannel.java
+++ b/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/CachedByteChannel.java
@@ -69,7 +69,7 @@ final class CachedByteChannel implements SeekableByteChannel {
      * Number of bytes in the temporary file.
      *
      * In current implementation this value shall be identical to {@code file.position()}.
-     * However in a future implementation it will become different if we allow some parts
+     * However, in a future implementation it will become different if we allow some parts
      * of the file to be without data (sparse file), with data fetched using HTTP ranges.
      */
     private long validLength;
diff --git a/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/DerivedList.java b/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/DerivedList.java
index b6e3529f2d..fe36bfd395 100644
--- a/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/DerivedList.java
+++ b/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/DerivedList.java
@@ -27,7 +27,7 @@ import java.util.function.Consumer;
 /**
  * A list in which values are derived from another list using a given function.
  * The conversion is done the fly every times an element is accessed.
- * Consequently this wrapper should be used only for elements that are cheap to wrap.
+ * Consequently, this wrapper should be used only for elements that are cheap to wrap.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.2
diff --git a/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/KeyPath.java b/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/KeyPath.java
index b27625aa0f..87e10e774e 100644
--- a/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/KeyPath.java
+++ b/cloud/sis-cloud-aws/src/main/java/org/apache/sis/cloud/aws/s3/KeyPath.java
@@ -87,7 +87,7 @@ final class KeyPath implements Path {
     /**
      * The key for locating the S3 object (shall not be empty), or {@code null} if this path is the root.
      * If the key contains {@link ClientFileSystem#separator}, it will be interpreted as a list of path components.
-     * However the separator characters have no special meaning for S3; this is an interpretation added by this wrapper.
+     * However, the separator characters have no special meaning for S3; this is an interpretation added by this wrapper.
      */
     final String key;
 
@@ -374,7 +374,7 @@ final class KeyPath implements Path {
 
     /**
      * Creates a builder for a request to be sent to AWS S3 server. AWS limits the response to 1000 elements.
-     * Consequently this method may need to be invoked more than once in order to get the next elements.
+     * Consequently, this method may need to be invoked more than once in order to get the next elements.
      * For all continuation requests, {@code request.continuationToken(String)} needs to be invoked.
      */
     final ListObjectsV2Request.Builder request() {
@@ -577,7 +577,7 @@ search:     if (key != null) {
     /**
      * Returns {@code true} if the given path has the same file system than this path, the same root (possibly none),
      * and a key which is a prefix of this path key. The prefix must be complete component name.
-     * For example {@code "foo/b"} is <em>not</em> a prefix of {@code "foo/bar"}.
+     * For example, {@code "foo/b"} is <em>not</em> a prefix of {@code "foo/bar"}.
      */
     @Override
     public boolean startsWith(final Path other) {
@@ -594,7 +594,7 @@ search:     if (key != null) {
 
     /**
      * Returns {@code true} if the given path has the same file system than this path and a key which is
-     * a suffix of this path key. The suffix must be complete component name. For example {@code "oo/bar"}
+     * a suffix of this path key. The suffix must be complete component name. For example, {@code "oo/bar"}
      * is <em>not</em> a suffix of {@code "foo/bar"}.
      */
     @Override
diff --git a/core/sis-build-helper/src/main/java/org/apache/sis/internal/maven/JarCollector.java b/core/sis-build-helper/src/main/java/org/apache/sis/internal/maven/JarCollector.java
index b4b14887fe..e964c7bb34 100644
--- a/core/sis-build-helper/src/main/java/org/apache/sis/internal/maven/JarCollector.java
+++ b/core/sis-build-helper/src/main/java/org/apache/sis/internal/maven/JarCollector.java
@@ -172,7 +172,7 @@ public final class JarCollector extends AbstractMojo implements FileFilter {
      * the actual file name, because a classifier may have been added to the name.
      *
      * <p>The {@code .jar} extension is not quite appropriate for source and Javadoc files;
-     * a better extension would be {@code .zip}. Unfortunately the {@code .jar} extension
+     * a better extension would be {@code .zip}. Unfortunately, the {@code .jar} extension
      * for those content is a very common practice, so we have to filter them.</p>
      */
     @Override
diff --git a/core/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java b/core/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java
index 4bd8f6558d..d2084f9c90 100644
--- a/core/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java
+++ b/core/sis-build-helper/src/main/java/org/apache/sis/util/resources/IndexedResourceCompiler.java
@@ -404,8 +404,8 @@ search: for (int i=0; i<buffer.length(); i++) {                 // Length of `bu
                         continue;
                     }
                     /*
-                     * If we find ourselves between braces, we don't normally need to double
-                     * our quotes.  However, the format {0,choice,...} is an exception.
+                     * If we find ourselves between braces, we don't normally need to double our quotes.
+                     * However, the format {0,choice,...} is an exception.
                      */
                     if (last >= 0  &&  buffer.charAt(last) == '{') {
                         int scan = last;
@@ -537,7 +537,7 @@ search: for (int i=0; i<buffer.length(); i++) {                 // Length of `bu
             }
             /*
              * At this point, all key values have been written in the buffer. Skip the corresponding
-             * lines from the files without adding them to the buffer.  However we will compare them
+             * lines from the files without adding them to the buffer. However, we will compare them
              * to the buffer content in order to detect if we really need to write the file.
              *
              * This operation will stop when we reach the closing bracket. Note that opening brackets
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java
index 941e9f23e7..0694dd35ac 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/BandedCoverage.java
@@ -83,7 +83,7 @@ public abstract class BandedCoverage {
      *   </li><li>
      *     Computational cost: if obtaining the overall envelope is too costly,
      *     an implementation might decide to leave the result empty instead of returning a too approximate envelope.
-     *     For example, if a coverage aggregates a lot of data (by dynamically choosing data in a catalog upon evaluation),
+     *     For example if a coverage aggregates a lot of data (by dynamically choosing data in a catalog upon evaluation),
      *     it might rather not compute envelope union for the entire catalog.
      *   </li><li>
      *     When the function does not have a clear boundary for its domain of validity,
@@ -181,7 +181,7 @@ public abstract class BandedCoverage {
         /**
          * Specifies whether this evaluator is allowed to wraparound coordinates that are outside the coverage.
          * If {@code true} and if a given coordinate is outside the coverage, then this evaluator may translate
-         * the point along a wraparound axis in an attempt to get the point inside the coverage. For example if
+         * the point along a wraparound axis in an attempt to get the point inside the coverage. For example, if
          * the coverage CRS has a longitude axis, then the evaluator may translate the longitude value by a
          * multiple of 360°.
          *
@@ -206,7 +206,7 @@ public abstract class BandedCoverage {
          * @throws PointOutsideCoverageException if the evaluation failed because the input point
          *         has invalid coordinates and the {@link #isNullIfOutside()} flag is {@code false}.
          * @throws CannotEvaluateException if the values cannot be computed at the specified coordinates
-         *         for another reason. For example this exception may be thrown if the coverage data type
+         *         for another reason. For example, this exception may be thrown if the coverage data type
          *         cannot be converted to {@code double} by an identity or widening conversion.
          */
         @Override
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/CategoryList.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/CategoryList.java
index c399ce344d..3a19370ebd 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/CategoryList.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/CategoryList.java
@@ -478,7 +478,7 @@ final class CategoryList extends AbstractList<Category> implements MathTransform
          * If we reach this point and the sample is NaN, then it is not one of the NaN values known
          * to CategoryList constructor and cannot be mapped to a category.  Otherwise we found the
          * index of "insertion point" (~i). This means that `sample` is lower than category minimum
-         * at that index. Consequently if the sample value is inside the range of some category, it
+         * at that index. Consequently, if the sample value is inside the range of some category, it
          * can only be the previous category (~i-1).
          */
         return sampleIsNaN ? -1 : low - 1;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java
index 63a984ab26..f53b080120 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/SampleDimension.java
@@ -233,7 +233,7 @@ public class SampleDimension implements Serializable {
      * Returns the background value. This is the value used for filling empty spaces (e.g. in image corners)
      * after a {@linkplain org.apache.sis.image.ImageProcessor#resample resampling operation}.
      * If this sample dimensions has quantitative categories, then the background value should be
-     * one of the value returned by {@link #getNoDataValues()}. However this is not mandatory.
+     * one of the value returned by {@link #getNoDataValues()}. However, this is not mandatory.
      *
      * @return the background value, typically (but not necessarily) one of {@link #getNoDataValues()}.
      */
@@ -512,14 +512,14 @@ public class SampleDimension implements Serializable {
      * </ul>
      *
      * <p>A <cite>qualitative category</cite> is a range of sample values associated to a label.
-     * For example 0 = no data, 1 = cloud, 2 = sea, 3 = land, <i>etc</i>.
+     * For example, 0 = no data, 1 = cloud, 2 = sea, 3 = land, <i>etc</i>.
      * Missing values are also considered as a qualitative category and should be declared.
      * If the missing value can be used as a background value for filling empty spaces in
      * {@linkplain org.apache.sis.image.ImageProcessor#resample image resampling operations},
      * then it should be declared using {@code setBackground(…)} method instead of {@code addQualitative(…)}.</p>
      *
      * <p>A <cite>quantitative category</cite> is a range of sample values associated to numbers with units of measurement.
-     * For example 10 = 1.0°C, 11 = 1.1°C, 12 = 1.2°C, <i>etc</i>. A quantitative category has a
+     * For example, 10 = 1.0°C, 11 = 1.1°C, 12 = 1.2°C, <i>etc</i>. A quantitative category has a
      * {@linkplain org.opengis.metadata.content.SampleDimension#getTransferFunctionType() transfer function}
      * (typically a scale factor and an offset) for converting sample values to values expressed
      * in the unit of measurement.</p>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java
index 1894fb3ea9..f966cc1a1f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/BufferedGridCoverage.java
@@ -136,7 +136,7 @@ public class BufferedGridCoverage extends GridCoverage {
      * (see class javadoc for more information).
      *
      * <p>Note that {@link DataBuffer} does not contain any information about image size.
-     * Consequently {@link #render(GridExtent)} depends on the domain {@link GridExtent},
+     * Consequently, {@link #render(GridExtent)} depends on the domain {@link GridExtent},
      * which must be accurate. If the extent size does not reflect accurately the image size,
      * then the image will not be rendered properly.</p>
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/CoordinateOperationFinder.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/CoordinateOperationFinder.java
index c594cec076..e1deb3f3a0 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/CoordinateOperationFinder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/CoordinateOperationFinder.java
@@ -672,7 +672,7 @@ apply:          if (forwardChangeOfCRS == null) {
 
     /**
      * Invoked when the target CRS has some dimensions that the source CRS does not have.
-     * For example this is invoked during the conversion from (<var>x</var>, <var>y</var>)
+     * For example, this is invoked during the conversion from (<var>x</var>, <var>y</var>)
      * coordinates to (<var>x</var>, <var>y</var>, <var>t</var>). If constant values can
      * be given to the missing dimensions, than those values are returned. Otherwise this
      * method returns {@code null}.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DefaultEvaluator.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DefaultEvaluator.java
index dd609051ba..47ecfee4dc 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DefaultEvaluator.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/DefaultEvaluator.java
@@ -254,7 +254,7 @@ class DefaultEvaluator implements GridCoverage.Evaluator {
     /**
      * Specifies whether this evaluator is allowed to wraparound coordinates that are outside the grid.
      * If {@code true} and if a given coordinate is outside the grid, then this evaluator may translate
-     * the point along a wraparound axis in an attempt to get the point inside the grid. For example if
+     * the point along a wraparound axis in an attempt to get the point inside the grid. For example, if
      * the coverage CRS has a longitude axis, then the evaluator may translate the longitude value by a
      * multiple of 360°.
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/FractionalGridCoordinates.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/FractionalGridCoordinates.java
index 8928acb5fc..0fb8dfad26 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/FractionalGridCoordinates.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/FractionalGridCoordinates.java
@@ -269,7 +269,7 @@ public class FractionalGridCoordinates implements GridCoordinates, Serializable
             }
             /*
              * The lower/upper values are given by Math.floor/ceil respectively (may be equal).
-             * However we do an exception to this rule if user asked explicitly for a size of 1.
+             * However, we do an exception to this rule if user asked explicitly for a size of 1.
              * In such case we can no longer enforce the `lower ≤ value ≤ upper` rule. The best
              * we can do is to take the nearest neighbor.
              */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage.java
index 78d3f2499e..39ba19be94 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage.java
@@ -452,7 +452,7 @@ public abstract class GridCoverage extends BandedCoverage {
      * The coordinates given by {@link RenderedImage#getMinX()} and {@link RenderedImage#getMinY() getMinY()}
      * will be the image location <em>relative to</em> the location specified in {@code sliceExtent}
      * {@linkplain GridExtent#getLow(int) low coordinates}.
-     * For example in the case of image {@linkplain RenderedImage#getMinX() minimum X coordinate}:
+     * For example, in the case of image {@linkplain RenderedImage#getMinX() minimum X coordinate}:
      *
      * <ul class="verbose">
      *   <li>A value of 0 means that the image left border is exactly where requested by {@code sliceExtent.getLow(xDimension)}.</li>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage2D.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage2D.java
index a9878fe14d..c0c4b1d9ca 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage2D.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverage2D.java
@@ -84,7 +84,7 @@ import org.opengis.coverage.PointOutsideCoverageException;
  * <h2>Image size and location</h2>
  * The {@linkplain RenderedImage#getWidth() image width} and {@linkplain RenderedImage#getHeight() height}
  * must be equal to the {@linkplain GridExtent#getSize(int) grid extent size} in the two dimensions of the slice.
- * However the image origin ({@linkplain RenderedImage#getMinX() minimal x} and {@linkplain RenderedImage#getMinY() y}
+ * However, the image origin ({@linkplain RenderedImage#getMinX() minimal x} and {@linkplain RenderedImage#getMinY() y}
  * values) does not need to be equal to the {@linkplain GridExtent#getLow(int) grid extent low values};
  * a translation will be applied as needed.
  *
@@ -422,8 +422,8 @@ public class GridCoverage2D extends GridCoverage {
     /**
      * Verifies that the number of bands in the image is equal to the number of sample dimensions.
      * The number of bands is fetched from the sample model, which in theory shall never be null.
-     * However this class has a little bit of tolerance to missing sample model; it may happen
-     * when the image is used only as a matrix storage.
+     * However, this class has a little bit of tolerance to missing sample model.
+     * It may happen when the image is used only as a matrix storage.
      */
     private static void verifyBandCount(final List<? extends SampleDimension> range, final RenderedImage data) {
         if (range != null) {
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java
index 8484d49e02..1e6e80f0e3 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageBuilder.java
@@ -57,7 +57,7 @@ import org.apache.sis.util.resources.Errors;
  * </ul>
  *
  * Each of those parts can be set by a {@code setDomain(…)}, {@code setRanges(…)} or {@code setValues(…)} method.
- * Those methods are overloaded with many variants accepting different kind of arguments. For example values can
+ * Those methods are overloaded with many variants accepting different kind of arguments. For example, values can
  * be specified as a {@link RenderedImage}, a {@link Raster} or some other types.
  *
  * <div class="note"><b>Example:</b>
@@ -193,7 +193,7 @@ public class GridCoverageBuilder {
 
     /**
      * Sets the domain as an enclosing envelope (including its CRS).
-     * The given envelope should contain all pixel area. For example the
+     * The given envelope should contain all pixel area. For example, the
      * {@linkplain Envelope#getLowerCorner() envelope lower corner} should locate the lower-left
      * (or upper-left, depending on <var>y</var> axis orientation) pixel corner, not pixel center.
      * If the given envelope contains a CRS, then that CRS will be the coverage CRS.
@@ -310,7 +310,7 @@ public class GridCoverageBuilder {
      * must be equal to the number of sample dimensions.
      *
      * <p><b>Note:</b> row indices in an image are usually increasing down, while geographic coordinates
-     * are usually increasing up. Consequently the <code>{@linkplain #flipGridAxis(int) flipGridAxis}(1)</code>
+     * are usually increasing up. Consequently, the <code>{@linkplain #flipGridAxis(int) flipGridAxis}(1)</code>
      * method may need to be invoked after this method.</p>
      *
      * @param  data  the rendered image to be wrapped in a {@code GridCoverage}. Cannot be {@code null}.
@@ -334,7 +334,7 @@ public class GridCoverageBuilder {
      * number of sample dimensions.
      *
      * <p><b>Note:</b> row indices in a raster are usually increasing down, while geographic coordinates
-     * are usually increasing up. Consequently the <code>{@linkplain #flipGridAxis(int) flipGridAxis}(1)</code>
+     * are usually increasing up. Consequently, the <code>{@linkplain #flipGridAxis(int) flipGridAxis}(1)</code>
      * method may need to be invoked after this method.</p>
      *
      * @param  data  the raster to be wrapped in a {@code GridCoverage}. Cannot be {@code null}.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java
index c5868b1808..9e207ab329 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridCoverageProcessor.java
@@ -161,7 +161,7 @@ public class GridCoverageProcessor implements Cloneable {
 
     /**
      * Types of changes that a coverage processor can do for executing an operation more efficiently.
-     * For example the processor may, in some cases, replace an operation by a more efficient one.
+     * For example, the processor may, in some cases, replace an operation by a more efficient one.
      * Those optimizations should not change significantly the sample values at any given location,
      * but may change other aspects (in a compatible way) such as the {@link GridCoverage} subclass
      * returned or the size of the underlying rendered images.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java
index 32032974ed..26ab0221c2 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridDerivation.java
@@ -72,7 +72,7 @@ import org.opengis.coverage.PointOutsideCoverageException;
  * Then the grid geometry is created by a call to {@link #build()}.
  * The {@link #getIntersection()} method can also be invoked for the {@link GridExtent} part without subsampling.
  *
- * <p>All methods in this class preserve the number of dimensions. For example the {@link #slice(DirectPosition)} method sets
+ * <p>All methods in this class preserve the number of dimensions. For example, the {@link #slice(DirectPosition)} method sets
  * the {@linkplain GridExtent#getSize(int) grid size} to 1 in all dimensions specified by the <cite>slice point</cite>,
  * but does not remove those dimensions from the grid geometry.
  * For dimensionality reduction, see {@link GridGeometry#selectDimensions(int[])}.</p>
@@ -488,7 +488,7 @@ public class GridDerivation {
             scales = areaOfInterest.resolution;
             /*
              * In principle `resolution` is always null here because it is computed from `gridToCRS`,
-             * which is null (otherwise `isExtentOnly()` would have been false). However an exception
+             * which is null (otherwise `isExtentOnly()` would have been false). However, an exception
              * to this rule happens if `areaOfInterest` has been computed by another `GridDerivation`,
              * in which case the resolution requested by user is saved even when `gridToCRS` is null.
              * In that case the resolution is relative to the base grid of the other `GridDerivation`.
@@ -530,7 +530,7 @@ public class GridDerivation {
         }
         /*
          * The subsampling will determine the scale factors in the transform from the given desired grid geometry
-         * to the `base` grid geometry. For example a scale of 10 means that every time we advance by one pixel in
+         * to the `base` grid geometry. For example, a scale of 10 means that every time we advance by one pixel in
          * `areaOfInterest`, we will advance by 10 pixels in `base`.  We compute the scales (indirectly because of
          * the way transforms are concatenated) as the ratio between the resolutions of the `areaOfInterest` and
          * `base` grid geometries, computed in the center of the area of interest.
@@ -570,7 +570,7 @@ public class GridDerivation {
      *       then the {@linkplain Envelope#getCoordinateReferenceSystem() CRS of the envelope}
      *       can be left unspecified ({@code null}). It may give a slight performance improvement
      *       by avoiding the check for coordinate transformation.</li>
-     *   <li>Subsampling computed by this method may be fractional. Consequently calls to {@link #getSubsampling()} and
+     *   <li>Subsampling computed by this method may be fractional. Consequently, calls to {@link #getSubsampling()} and
      *       {@link #getSubsamplingOffsets()} after this method may cause an {@link IllegalStateException} to be thrown.</li>
      * </ul>
      *
@@ -1002,7 +1002,7 @@ public class GridDerivation {
             /*
              * We will try to find a path between grid coordinate reference system (CRS) and given point CRS. Note that we
              * allow unknown CRS on the slice point, in which case we consider it to be expressed in grid reference system.
-             * However, if the point CRS is specified while the base grid CRS is unknown, we are at risk of ambiguity,
+             * However if the point CRS is specified while the base grid CRS is unknown, we are at risk of ambiguity,
              * in which case we throw (indirectly) an IncompleteGridGeometryException.
              */
             final CoordinateReferenceSystem sliceCRS = slicePoint.getCoordinateReferenceSystem();
@@ -1089,7 +1089,7 @@ public class GridDerivation {
      * RATIONAL FOR NOT PROVIDING reduce(int... dimensions) METHOD HERE: that method would need to be the last method invoked,
      * otherwise it makes more complicated to implement other methods in this class.  Forcing users to invoke `build()` before
      * (s)he can invoke GridGeometry.reduce(…) makes that clear and avoid the need for more flags in this GridDerivation class.
-     * Furthermore declaring the `reduce(…)` method in GridGeometry is more consistent with `GridExtent.reduce(…)`.
+     * Furthermore, declaring the `reduce(…)` method in GridGeometry is more consistent with `GridExtent.reduce(…)`.
      */
 
     /**
@@ -1314,7 +1314,7 @@ public class GridDerivation {
                 final int i = ~Arrays.binarySearch(divisors, r);
                 /*
                  * `binarySearch(…)` should never find an exact match, otherwise (size % r) would have been zero.
-                 * Furthermore `i` should never be 0 because divisors[0] = 1, which cannot be selected if r > 1.
+                 * Furthermore, `i` should never be 0 because divisors[0] = 1, which cannot be selected if r > 1.
                  * We do not check `if (i > 0)` "as a safety" because client code such as `TiledGridCoverage`
                  * will behave erratically if this method does not fulfill its contract (i.e. find a divisor).
                  * It is better to know now if there is any problem here.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java
index 01d5e937cc..62ab58b1a0 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridExtent.java
@@ -80,7 +80,7 @@ import org.opengis.coverage.PointOutsideCoverageException;
  * A range of grid coverage coordinates, also known as "grid envelope".
  * {@code GridExtent} are defined by {@linkplain #getLow() low} coordinates (often all zeros)
  * and {@linkplain #getHigh() high} coordinates, <strong>inclusive</strong>.
- * For example a grid with a width of 512 cells can have a low coordinate of 0 and high coordinate of 511.
+ * For example, a grid with a width of 512 cells can have a low coordinate of 0 and high coordinate of 511.
  *
  * <div class="note"><b>Note:</b>
  * The inclusiveness of {@linkplain #getHigh() high} coordinates come from ISO 19123.
@@ -186,7 +186,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable
 
     /**
      * Verifies that the given array (if non-null) contains no duplicated values, then returns a copy of that array.
-     * The returned copy may be shared by many {@code GridExtent} instances. Consequently it shall not be modified.
+     * The returned copy may be shared by many {@code GridExtent} instances. Consequently, it shall not be modified.
      *
      * @throws IllegalArgumentException if the given array contains duplicated elements.
      */
@@ -471,7 +471,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable
                         upper--;                                                // For making the coordinate inclusive.
                         /*
                          * The [lower … upper] range may be slightly larger than desired in some rounding error situations.
-                         * For example if `min` was 1.49999 and `max` was 2.50001,  the rounding will create a [1…3] range
+                         * For example if `min` was 1.49999 and `max` was 2.50001, the rounding will create a [1…3] range
                          * while there is actually only 2 pixels. We detect those rounding problems by comparing the spans
                          * before and after rounding.  We attempt an adjustment only if the span mismatch is ±1, otherwise
                          * the difference is assumed to be caused by overflow. On the three values that can be affected by
@@ -1488,7 +1488,7 @@ public class GridExtent implements GridEnvelope, LenientComparable, Serializable
      * If the "real world" envelope computed from grid extent needs to stay approximately the same, then the
      * {@linkplain GridGeometry#getGridToCRS grid to CRS} transform needs to compensate the subsampling with
      * a pre-multiplication of each grid coordinates by {@code periods}.
-     * However the envelope computed that way may become <em>larger</em> after subsampling, not smaller.
+     * However, the envelope computed that way may become <em>larger</em> after subsampling, not smaller.
      * This effect can be understood intuitively if we consider that cells become larger after subsampling,
      * which implies that accurate representation of the same envelope may require fractional cells on some
      * grid borders.</div>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java
index ae57aa5e90..81bbfd9a4e 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridGeometry.java
@@ -110,7 +110,7 @@ import static org.apache.sis.referencing.CRS.findOperation;
  * The first three properties should be mandatory,
  * but are allowed to be temporarily absent during grid coverage construction.
  * Temporarily absent properties are allowed because they may be inferred from a wider context.
- * For example a {@code GridGeometry} knows nothing about {@link RenderedImage},
+ * For example, a {@code GridGeometry} knows nothing about {@link RenderedImage},
  * but {@code GridCoverage2D} has this information and may use it for providing a missing grid extent.
  * By default, any request for an undefined property will throw an {@link IncompleteGridGeometryException}.
  * In order to check if a property is defined, use {@link #isDefined(int)}.
@@ -125,7 +125,7 @@ import static org.apache.sis.referencing.CRS.findOperation;
  * in the {@linkplain #getCoordinateReferenceSystem() Coordinate Reference System} (CRS) instead).
  *
  * <p>Some applications cannot handle non-linear "grid to CRS" conversions.
- * For example encoding an image in a GeoTIFF file is much simpler if the "grid to CRS" conversion is linear.
+ * For example, encoding an image in a GeoTIFF file is much simpler if the "grid to CRS" conversion is linear.
  * The {@link DomainLinearizer} class can be used for replacing non-linear conversions by linear approximations.</p>
  *
  * <h2>Multi-threading</h2>
@@ -1224,7 +1224,7 @@ public class GridGeometry implements LenientComparable, Serializable {
                 /*
                  * The mask we just computed identifies non-linear source dimensions, but we need target
                  * dimensions. They are usually the same (the pass-through coordinate values do not have
-                 * their order changed). However we have a difficulty if the number of dimensions changes.
+                 * their order changed). However, we have a difficulty if the number of dimensions changes.
                  * We know that the change happen in the sub-transform, but we do not know where exactly.
                  * For example if the mask is 001010 and the number of dimensions increases by 1, we know
                  * that we still have "00" at the beginning and "0" at the end of the mask, but we don't
@@ -1370,7 +1370,7 @@ public class GridGeometry implements LenientComparable, Serializable {
      * </div>
      *
      * Each {@code GridDerivation} instance can be used only once and should be used in a single thread.
-     * {@code GridDerivation} preserves the number of dimensions. For example {@linkplain GridDerivation#slice slicing}
+     * {@code GridDerivation} preserves the number of dimensions. For example, {@linkplain GridDerivation#slice slicing}
      * sets the {@linkplain GridExtent#getSize(int) grid size} to 1 in all dimensions specified by a <cite>slice point</cite>,
      * but does not remove those dimensions from the grid geometry. For dimensionality reduction, see {@link #selectDimensions(int[])}.
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java
index 5bf5ec34d5..4ac0554189 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridOrientation.java
@@ -28,7 +28,7 @@ import org.apache.sis.util.resources.Errors;
 /**
  * High-level description about how a grid is orientated relative to the CRS axes. The orientation of a grid
  * is closely related to the {@linkplain GridGeometry#getGridToCRS(PixelInCell) grid to CRS} transform.
- * For example the conversion from grid coordinates to CRS coordinates may flip the <var>y</var> axis
+ * For example, the conversion from grid coordinates to CRS coordinates may flip the <var>y</var> axis
  * (grid coordinates increasing toward down on screen), or may swap <var>x</var> and <var>y</var> axes, <i>etc.</i>
  * The constants enumerated in this class cover only a few common cases where the grid is
  * <a href="https://en.wikipedia.org/wiki/Axis-aligned_object">axis-aligned</a> with the CRS.
@@ -52,7 +52,7 @@ public final class GridOrientation implements Serializable {
      * Moving along the grid axis in dimension <var>i</var> causes a displacement along the CRS axis
      * in the same dimension <var>i</var>.
      * In matrix terms all non-zero coefficients are on the diagonal or in the translation column.
-     * For example in the three-dimensional case:
+     * For example, in the three-dimensional case:
      *
      * {@preformat math
      *   ┌                ┐
@@ -136,7 +136,7 @@ public final class GridOrientation implements Serializable {
      *
      * <h4>Alternative</h4>
      * {@code DISPLAY.canReorderGridAxis(true)} is an alternative where grid axes get the same reordering than CRS axes.
-     * Consequently the {@link GridExtent} may be different then the specified extent
+     * Consequently, the {@link GridExtent} may be different then the specified extent
      * but the {@code gridToCRS} transform always has the form shown in {@link #REFLECTION_Y}.
      * This alternative can be used for deriving a coordinate reference system with the
      * <i>(<var>longitude</var>, <var>latitude</var>)</i> or <i>(<var>x</var>,<var>y</var>)</i> axis order,
@@ -213,7 +213,7 @@ public final class GridOrientation implements Serializable {
      *   <li>CRS axis order change is mapped to the grid in one of the following ways:
      *     <ul>
      *       <li>If {@code canReorderGridAxis(true)} has been invoked, then the same change is applied
-     *           on grid axis order. Consequently grid axes and CRS axes stay in the same order,
+     *           on grid axis order. Consequently, grid axes and CRS axes stay in the same order,
      *           but the resulting {@link GridExtent} may be different than the specified one.</li>
      *       <li>Otherwise {@link GridExtent} stay unchanged and axis order change is handled in the
      *           {@code gridToCRS} transform instead.</li>
@@ -224,7 +224,7 @@ public final class GridOrientation implements Serializable {
      * <h4>Limitations</h4>
      * Current implementation accepts only axis order changes and direction changes.
      * The units of measurement changes are not yet supported.
-     * Consequently {@link AxesConvention#NORMALIZED} is not accepted.
+     * Consequently, {@link AxesConvention#NORMALIZED} is not accepted.
      *
      * @param  variant  the kind of substitution to apply on CRS, or {@code null} if none.
      * @return a grid orientation equals to this one except that it uses the specified CRS variant.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridRoundingMode.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridRoundingMode.java
index 8afa993a3c..805a89f78c 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridRoundingMode.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/GridRoundingMode.java
@@ -46,7 +46,7 @@ public enum GridRoundingMode {
      * range after rounding will be [1…3] while the expected size is actually only 2 pixels. This {@code NEAREST} rounding
      * mode detects those rounding issues by comparing the <var>size</var> before and after rounding. In this example, the
      * size is 2.00002 pixels, which is closer to an integer value than the <var>low</var> and <var>high</var> values.
-     * Consequently this {@code NEAREST} mode will rather adjust <var>low</var> or <var>high</var> (depending which one is
+     * Consequently, this {@code NEAREST} mode will rather adjust <var>low</var> or <var>high</var> (depending which one is
      * farthest from integer values) in order to keep <var>size</var> at its closest integer value, which is 2.</div>
      */
     NEAREST,
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ImageRenderer.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ImageRenderer.java
index 9cf3aec29a..4b2073b4cf 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ImageRenderer.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ImageRenderer.java
@@ -395,7 +395,7 @@ public class ImageRenderer {
     /**
      * Returns the location of the image upper-left corner together with the image size. The image coordinate system
      * is relative to the {@code sliceExtent} specified at construction time: the (0,0) pixel coordinates correspond
-     * to the {@code sliceExtent} {@linkplain GridExtent#getLow(int) low coordinates}. Consequently the rectangle
+     * to the {@code sliceExtent} {@linkplain GridExtent#getLow(int) low coordinates}. Consequently, the rectangle
      * {@linkplain Rectangle#x <var>x</var>} and {@linkplain Rectangle#y <var>y</var>} coordinates are (0,0) if
      * the image is located exactly in the area requested by {@code sliceExtent}, or is shifted as below otherwise:
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/IncompleteGridGeometryException.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/IncompleteGridGeometryException.java
index d53fd25168..b7b856035f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/IncompleteGridGeometryException.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/IncompleteGridGeometryException.java
@@ -19,7 +19,7 @@ package org.apache.sis.coverage.grid;
 
 /**
  * Thrown by {@link GridGeometry} when a grid geometry cannot provide the requested information.
- * For example this exception is thrown when {@link GridGeometry#getEnvelope()} is invoked while
+ * For example, this exception is thrown when {@link GridGeometry#getEnvelope()} is invoked while
  * the grid geometry has been built with a null envelope.
  *
  * <p>The {@link GridGeometry#isDefined(int)} can be used for avoiding this exception.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ResampledGridCoverage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ResampledGridCoverage.java
index a82a401319..4e9b20e3eb 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ResampledGridCoverage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ResampledGridCoverage.java
@@ -494,9 +494,9 @@ final class ResampledGridCoverage extends DerivedGridCoverage {
      * <div class="note"><b>Note on rounding mode:</b>
      * calculation of source envelope should use {@link GridRoundingMode#ENCLOSING} for making sure that we include
      * all needed data. On the opposite, calculation of target envelope should use {@link GridRoundingMode#CONTAINED}
-     * for making sure that we interpolate only values where data are available. However such "fully contained" mode
+     * for making sure that we interpolate only values where data are available. However, such "fully contained" mode
      * is often overly strict because a very small rounding error can cause the lost of an image row or column,
-     * while using extrapolations for those values produce no perceptible errors. Consequently this method uses
+     * while using extrapolations for those values produce no perceptible errors. Consequently, this method uses
      * {@link GridRoundingMode#NEAREST} as a compromise.</div>
      *
      * @param  source       the source grid extent to transform.
@@ -666,7 +666,7 @@ final class ResampledGridCoverage extends DerivedGridCoverage {
         }
         /*
          * Following call is potentially costly, depending on `source` implementation.
-         * For example it may cause loading of tiles from a file. For this reason we
+         * For example, it may cause loading of tiles from a file. For this reason we
          * call this method only here, when remaining operations are unlikely to fail.
          */
         final RenderedImage values = source.render(sourceExtent);
diff --git a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ReshapedImage.java b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ReshapedImage.java
index 0a7efb56ff..7a5f02ea12 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ReshapedImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/coverage/grid/ReshapedImage.java
@@ -38,7 +38,7 @@ import static java.lang.Math.toIntExact;
 /**
  * A view over another image with the origin relocated to a new position.
  * Only the pixel coordinates are changed; the tile indices stay the same.
- * However the image view may expose less tiles than the wrapped image.
+ * However, the image view may expose less tiles than the wrapped image.
  * This wrapper does not change image size otherwise than by an integer amount of tiles.
  *
  * @author  Johann Sorel (Geomatys)
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java
index 209f027898..cbd018b621 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java
@@ -245,11 +245,11 @@ public abstract class AbstractAssociation extends Field<Feature> implements Feat
      * Returns a copy of this association.
      * The default implementation returns a <em>shallow</em> copy:
      * the association {@linkplain #getValue() value} is <strong>not</strong> cloned.
-     * However subclasses may choose to do otherwise.
+     * However, subclasses may choose to do otherwise.
      *
      * @return a clone of this association.
      * @throws CloneNotSupportedException if this association cannot be cloned.
-     *         The default implementation never throw this exception. However subclasses may throw it.
+     *         The default implementation never throw this exception. However, subclasses may throw it.
      */
     @Override
     public AbstractAssociation clone() throws CloneNotSupportedException {
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
index d97931e8a7..731e7bdd35 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAttribute.java
@@ -96,7 +96,7 @@ public abstract class AbstractAttribute<V> extends Field<V> implements Attribute
      * We could question if it is a good idea to put this field here, given that this field add a slight cost
      * to all attribute implementations while only a small fraction of them will want attribute characteristics.
      * Since attributes may exist in a very large amount, that question may be significant.
-     * However {@link AbstractFeature} tries hard to not create {@code Attribute} instances at all (it tries to
+     * However, {@link AbstractFeature} tries hard to not create {@code Attribute} instances at all (it tries to
      * store only their value instead), so we presume that peoples who ask for {@code Attribute} instances are
      * willing to accept their cost.</div>
      *
@@ -280,7 +280,7 @@ public abstract class AbstractAttribute<V> extends Field<V> implements Attribute
      *
      * <div class="note"><b>Rational:</b>
      * Very often, all attributes of a given type in the same dataset have the same characteristics.
-     * For example it is very common that all temperature measurements in a dataset have the same accuracy,
+     * For example, it is very common that all temperature measurements in a dataset have the same accuracy,
      * and setting a different accuracy for a single measurement is relatively rare.
      * Consequently, {@code characteristics.isEmpty()} is a convenient way to check that an attribute have
      * all the "standard" characteristics and need no special processing.</div>
@@ -402,7 +402,7 @@ public abstract class AbstractAttribute<V> extends Field<V> implements Attribute
      *         measure identification}.</p>
      *
      *         <div class="note"><b>Note:</b> strictly speaking, {@code measureIdentification} identifies the
-     *         <em>quality measurement</em>, not the “real” measurement itself. However this implementation
+     *         <em>quality measurement</em>, not the “real” measurement itself. However, this implementation
      *         uses the same set of identifiers for both for simplicity.</div>
      *       </li><li>
      *         <p>If the attribute {@linkplain #getValue() value} is not an {@linkplain Class#isInstance instance}
@@ -487,7 +487,7 @@ public abstract class AbstractAttribute<V> extends Field<V> implements Attribute
      * Otherwise the default implementation returns a <em>shallow</em> copy of this {@code Attribute}:
      * the attribute {@linkplain #getValue() value} and {@linkplain #characteristics() characteristics}
      * are <strong>not</strong> cloned.
-     * However subclasses may choose to do otherwise.
+     * However, subclasses may choose to do otherwise.
      *
      * @return a clone of this attribute.
      * @throws CloneNotSupportedException if this attribute, the {@linkplain #getValue() value}
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
index 608d7044dd..d3c20b4925 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractIdentifiedType.java
@@ -180,7 +180,7 @@ public class AbstractIdentifiedType implements IdentifiedType, Deprecable, Seria
      *
      * <h4>Localization</h4>
      * All localizable attributes like {@code "definition"} may have a language and country code suffix.
-     * For example the {@code "definition_fr"} property stands for remarks in {@linkplain Locale#FRENCH French} and
+     * For example, the {@code "definition_fr"} property stands for remarks in {@linkplain Locale#FRENCH French} and
      * the {@code "definition_fr_CA"} property stands for remarks in {@linkplain Locale#CANADA_FRENCH French Canadian}.
      * They are convenience properties for building the {@code InternationalString} value.
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/CharacteristicTypeMap.java b/core/sis-feature/src/main/java/org/apache/sis/feature/CharacteristicTypeMap.java
index 74b5159106..bbcafabc97 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/CharacteristicTypeMap.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/CharacteristicTypeMap.java
@@ -40,7 +40,7 @@ import org.opengis.feature.AttributeType;
  * The straightforward approach would be to store the attributes directly as values in a standard {@code HashMap}.
  * But instead of that, we store attributes in an array and the array indices in a {@code HashMap}. This level of
  * indirection is useless if we consider only the {@link DefaultAttributeType#characteristics()} method, since a
- * standard {@code HashMap<String,AttributeType>} would work as well or better. However this level of indirection
+ * standard {@code HashMap<String,AttributeType>} would work as well or better. However, this level of indirection
  * become useful for {@link CharacteristicMap} (the map returned by {@link AbstractAttribute#characteristics()}),
  * since it allows a more efficient storage. We do this effort because some applications may create a very large
  * amount of attribute instances.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java
index 80acca8f8f..7b3589b78f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAssociationRole.java
@@ -352,7 +352,7 @@ public class DefaultAssociationRole extends FieldType implements FeatureAssociat
      * Returns the type of feature values.
      *
      * <p>This method cannot be invoked if {@link #isResolved()} returns {@code false}.
-     * However it is still possible to {@linkplain Features#getValueTypeName(PropertyType)
+     * However, it is still possible to {@linkplain Features#getValueTypeName(PropertyType)
      * get the associated feature type name}.</p>
      *
      * @return the type of feature values.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java
index 3f0cedf616..f7df7ea21a 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultAttributeType.java
@@ -60,7 +60,7 @@ import org.opengis.feature.AttributeType;
  * </table>
  *
  * <h2>Attribute characterization</h2>
- * An {@code Attribute} can be characterized by other attributes. For example an attribute that carries a measurement
+ * An {@code Attribute} can be characterized by other attributes. For example, an attribute that carries a measurement
  * (e.g. air temperature) may have another attribute that holds the measurement accuracy (e.g. ±0.1°C).
  * The accuracy value is often constant for all instances of that attribute
  * (e.g. for all temperature measurements in the same dataset), but this is not mandatory.
@@ -73,7 +73,7 @@ import org.opengis.feature.AttributeType;
  * <ul>
  *   <li>The same characteristic name (e.g. “accuracy”) can be used for different attributes
  *       (e.g. “temperature”, “humidity”, <i>etc.</i>) since all characteristics are local to their attribute.</li>
- *   <li>A reference to an attribute gives also access to its characteristics. For example any method expecting
+ *   <li>A reference to an attribute gives also access to its characteristics. For example, any method expecting
  *       an {@code Attribute} argument, when given a measurement, can also get its accuracy at the same time.</li>
  *   <li>In the common case of a {@linkplain DefaultFeatureType#isSimple() simple feature} with characteristics
  *       that are constants, declaring them as attribute characteristics allows to specify the constants only once.</li>
@@ -91,7 +91,7 @@ import org.opengis.feature.AttributeType;
  *
  * <p>In particular, the {@link #getDefaultValue()} method does <strong>not</strong> clone the returned value.
  * This means that the same {@code defaultValue} instance may be shared by many {@link AbstractAttribute} instances.
- * Consequently the default value should be immutable for avoiding unexpected behavior.</p>
+ * Consequently, the default value should be immutable for avoiding unexpected behavior.</p>
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
index 21113eed26..3ada174a79 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DefaultFeatureType.java
@@ -139,14 +139,14 @@ public class DefaultFeatureType extends AbstractIdentifiedType implements Featur
      * {@code true} if we determined that this feature type does not have, directly or indirectly,
      * any unresolved name (i.e. a {@link DefaultAssociationRole#valueType} specified only be the
      * feature type name instead of its actual instance). A value of {@code true} means that all
-     * names have been resolved. However a value of {@code false} only means that we are not sure,
+     * names have been resolved. However, a value of {@code false} only means that we are not sure,
      * and that {@link #resolve(FeatureType, Map)} should check again.
      *
      * <div class="note"><b>Note:</b>
      * Strictly speaking, this field should be declared {@code volatile} since the names could
      * be resolved late after construction, after the {@code DefaultFeatureType} instance became
-     * used by different threads. However this is not the intended usage of deferred associations.
-     * Furthermore a wrong value ({@code false} when it should be {@code true}) should only cause
+     * used by different threads. However, this is not the intended usage of deferred associations.
+     * Furthermore, a wrong value ({@code false} when it should be {@code true}) should only cause
      * more computation than needed, without changing the result.
      * </div>
      */
@@ -429,7 +429,7 @@ public class DefaultFeatureType extends AbstractIdentifiedType implements Featur
         /*
          * Rational for choosing whether the feature is sparse: By default, java.util.HashMap implementation creates
          * an internal array of length 16 (see HashMap.DEFAULT_INITIAL_CAPACITY).  In addition, the HashMap instance
-         * itself consumes approximately 8 "words" in memory.  Consequently there is no advantage in using HashMap
+         * itself consumes approximately 8 "words" in memory.  Consequently, there is no advantage in using HashMap
          * unless the number of properties is greater than 16 + 8 (note: we could specify a smaller initial capacity,
          * but the memory consumed by each internal Map.Entry quickly exceed the few saved words). Next, the default
          * HashMap threshold is 0.75, so there is again no advantage in using HashMap if we do not expect at least 25%
@@ -662,7 +662,7 @@ public class DefaultFeatureType extends AbstractIdentifiedType implements Featur
     /**
      * Returns {@code true} if this type is same or a super-type of the given type.
      * The check is based mainly on the feature type {@linkplain #getName() name}, which should be unique.
-     * However as a safety, this method also checks that all properties in this feature type is assignable
+     * However, as a safety, this method also checks that all properties in this feature type is assignable
      * from a property of the same name in the given type.
      *
      * <h4>Constraints</h4>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/DenseFeature.java b/core/sis-feature/src/main/java/org/apache/sis/feature/DenseFeature.java
index cac80b8a99..56b0a3b901 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/DenseFeature.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/DenseFeature.java
@@ -61,7 +61,7 @@ final class DenseFeature extends AbstractFeature implements Cloneable {
     /**
      * The properties (attributes or feature associations) in this feature.
      *
-     * Conceptually, values in this array are {@link Property} instances. However at first we will store only
+     * Conceptually, values in this array are {@link Property} instances. However, at first we will store only
      * the property <em>values</em>, and convert to an array of type {@code Property[]} only when at least one
      * property is requested. The intent is to reduce the amount of allocated objects as much as possible,
      * because typical SIS applications may create a very large amount of features.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java b/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java
index dbcf83a5b7..b6dacc794a 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/EnvelopeOperation.java
@@ -110,7 +110,7 @@ final class EnvelopeOperation extends AbstractOperation {
      * <h4>Performance note</h4>
      * If this array is {@code null}, then {@link Feature#getProperty(String)} does not need to be invoked at all.
      * A null array is a signal that invoking only the cheaper {@link Feature#getPropertyValue(String)} method is
-     * sufficient. However this array become non-null as soon as there is at least one CRS characteristic to check.
+     * sufficient. However, this array become non-null as soon as there is at least one CRS characteristic to check.
      * We do not distinguish which particular property may have a CRS characteristic because as of Apache SIS 1.0,
      * implementations of {@link DenseFeature} and {@link SparseFeature} have a "all of nothing" behavior anyway.
      * So there is no performance gain to expect from a fine-grained knowledge of which properties declare a CRS.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java b/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
index 6f9126e5da..acb97ae2dc 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureFormat.java
@@ -191,7 +191,7 @@ public class FeatureFormat extends TabularFormat<Object> {
      * Returns all columns that may be shown in the tables to format.
      * The columns included in the set may be shown, but not necessarily;
      * some columns will still be omitted if they are completely empty.
-     * However columns <em>not</em> included in the set are guaranteed to be omitted.
+     * However, columns <em>not</em> included in the set are guaranteed to be omitted.
      *
      * @return all columns that may be shown in the tables to format.
      *
@@ -329,7 +329,7 @@ public class FeatureFormat extends TabularFormat<Object> {
         }
         /*
          * Computes the columns to show. We start with the set of columns specified by setAllowedColumns(Set),
-         * then we check if some of those columns are empty. For example in many cases there are no attributes
+         * then we check if some of those columns are empty. For example, in many cases there are no attributes
          * with characteritic, in which case we will ommit the whole "characteristics" column. We perform such
          * check only for optional information, not for mandatory information like property names.
          */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureOperations.java b/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureOperations.java
index 932f84b002..8b61282c57 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureOperations.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/FeatureOperations.java
@@ -129,7 +129,7 @@ public final class FeatureOperations extends Static {
      * <div class="note"><b>Example:</b>
      * features often have a property that can be used as identifier or primary key.
      * But the name of that property may vary between features of different types.
-     * For example features of type <b>Country</b> may have identifiers named “ISO country code”
+     * For example, features of type <b>Country</b> may have identifiers named “ISO country code”
      * while features of type <b>Car</b> may have identifiers named “license plate number”.
      * In order to simplify identifier usages regardless of their name,
      * an application could choose to add in all features a virtual property named {@code "identifier"}
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java b/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java
index f81a829936..17f2fce254 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/Features.java
@@ -151,7 +151,7 @@ public final class Features extends Static {
                 }
                 /*
                  * Operation returns another operation. This case should be rare and should never
-                 * contain a cycle. However given that the consequence of an infinite cycle here
+                 * contain a cycle. However, given that the consequence of an infinite cycle here
                  * would be thread freeze, we check as a safety.
                  */
                 final Map<IdentifiedType,Boolean> done = new IdentityHashMap<>(4);
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/SparseFeature.java b/core/sis-feature/src/main/java/org/apache/sis/feature/SparseFeature.java
index ec2ab6d08a..8b650fe3c6 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/SparseFeature.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/SparseFeature.java
@@ -83,7 +83,7 @@ final class SparseFeature extends AbstractFeature implements Cloneable {
     /**
      * The properties (attributes or feature associations) in this feature.
      *
-     * Conceptually, values in this map are {@link Property} instances. However at first we will store
+     * Conceptually, values in this map are {@link Property} instances. However, at first we will store
      * only the property <em>values</em>, and build the full {@code Property} objects only if they are
      * requested. The intent is to reduce the amount of allocated objects as much as possible, because
      * typical SIS applications may create a very large amount of features.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java b/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
index a9a95b5752..92bb8ea354 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/Validator.java
@@ -78,9 +78,9 @@ final class Validator {
      * setting {@code measureIdentification} to the property name may look like a departure from ISO intent,
      * since the former should be an identification of the <em>quality measurement</em> rather than the measure itself.
      * (setting {@code measureDescription} to {@code type.getDescription()} would probably be wrong for that reason).
-     * However {@code measureIdentification} is only an identifier, not a full description of the quality measurement
+     * However, {@code measureIdentification} is only an identifier, not a full description of the quality measurement
      * We are not strictly forbidden to use the same identifier for both the quality measurement than the measurement
-     * itself. However strictly speaking, maybe we should use a different scope.</div>
+     * itself. However, strictly speaking, maybe we should use a different scope.</div>
      *
      * @param  report       where to add the result, or {@code null} if not yet created.
      * @param  type         description of the property for which a constraint violation has been found.
@@ -165,7 +165,7 @@ final class Validator {
         for (final Object value : values) {
             /*
              * In theory, the following check is unnecessary since the type was constrained by the Attribute.setValue(V)
-             * method signature. However in practice the call to Attribute.setValue(…) is sometimes done after type erasure,
+             * method signature. However, in practice the call to Attribute.setValue(…) is sometimes done after type erasure,
              * so we are better to check.
              */
             final Class<?> valueClass = type.getValueClass();
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/benchmarks.html b/core/sis-feature/src/main/java/org/apache/sis/feature/benchmarks.html
index 2af772bb3f..83fca069c0 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/benchmarks.html
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/benchmarks.html
@@ -109,6 +109,6 @@ class Property {
     <p>The speed comparisons are subject to more cautions, in part because each run has created a different amount
     of instances before the test stopped. So even the slowest SIS case would be almost twice faster than
     <code>SimpleFeature</code> because it created two times more instances in an equivalent amount of time.
-    However this may be highly dependent on garbage collector activities (it has not been verified).</p>
+    However, this may be highly dependent on garbage collector activities (it has not been verified).</p>
   </body>
 </html>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/AttributeTypeBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/AttributeTypeBuilder.java
index 628eb533f9..b3d2aca0d7 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/AttributeTypeBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/AttributeTypeBuilder.java
@@ -536,7 +536,7 @@ public final class AttributeTypeBuilder<V> extends PropertyTypeBuilder {
     /**
      * Returns a view of all characteristics added to the {@code AttributeType} to build.
      * The returned list is <cite>live</cite>: changes in this builder are reflected in that list and conversely.
-     * However the returned list allows only {@linkplain List#remove(Object) remove} operations;
+     * However, the returned list allows only {@linkplain List#remove(Object) remove} operations;
      * new characteristics can be added only by calls to one of the {@code set/addCharacteristic(…)} methods.
      *
      * @return a live list over the characteristics declared to this builder.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/CharacteristicTypeBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/CharacteristicTypeBuilder.java
index bf7053e6bb..c80030d212 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/CharacteristicTypeBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/CharacteristicTypeBuilder.java
@@ -34,7 +34,7 @@ import org.opengis.feature.AttributeType;
  * (CRS) of a geometry.
  *
  * <p>In many cases, all instances of the same {@code AttributeType} have the same characteristics.
- * For example all values of the "temperature" attribute typically have the same units of measurement.
+ * For example, all values of the "temperature" attribute typically have the same units of measurement.
  * Such common value can be specified as the characteristic {@linkplain #setDefaultValue(Object) default value}.</p>
  *
  * @author  Johann Sorel (Geomatys)
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
index 3061acf27f..84ceae4ef9 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/FeatureTypeBuilder.java
@@ -487,7 +487,7 @@ public class FeatureTypeBuilder extends TypeBuilder {
      *
      * <div class="note"><b>Note for subclasses:</b>
      * all {@code setName(…)} convenience methods in this builder delegate to this method.
-     * Consequently this method can be used as a central place where to control the creation of all names.</div>
+     * Consequently, this method can be used as a central place where to control the creation of all names.</div>
      *
      * @return {@code this} for allowing method calls chaining.
      */
@@ -613,7 +613,7 @@ public class FeatureTypeBuilder extends TypeBuilder {
      * This list contains only properties declared explicitly to this builder;
      * it does not include properties inherited from {@linkplain #getSuperTypes() super-types}.
      * The returned list is <cite>live</cite>: changes in this builder are reflected in that list and conversely.
-     * However the returned list allows only {@linkplain List#remove(Object) remove} operations;
+     * However, the returned list allows only {@linkplain List#remove(Object) remove} operations;
      * new attributes or associations can be added only by calls to one of the {@code addAttribute(…)}
      * or {@code addAssociation(…)} methods. Removal operations never affect the super-types.
      *
@@ -723,7 +723,7 @@ public class FeatureTypeBuilder extends TypeBuilder {
      * </ul>
      *
      * Geometric objects outside the above list can still be used by declaring their type explicitly.
-     * However in this case there is no isolation level between the geometry types and the library that implement them.
+     * However, in this case there is no isolation level between the geometry types and the library that implement them.
      *
      * <div class="note"><b>Example:</b>
      * the following code creates an attribute named "MyPoint" with values of class
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java
index 9fe6fbceaf..ae51b5abbf 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/builder/TypeBuilder.java
@@ -222,7 +222,7 @@ public abstract class TypeBuilder implements Localized {
      *
      * <div class="note"><b>Note for subclasses:</b>
      * all {@code setName(…)} convenience methods in this builder delegate to this method.
-     * Consequently this method can be used as a central place where to control the creation of all names.</div>
+     * Consequently, this method can be used as a central place where to control the creation of all names.</div>
      *
      * @param  name  the generic name (cannot be {@code null}).
      * @return {@code this} for allowing method calls chaining.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java b/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java
index 8bf008b93e..ff3cd92088 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/package-info.java
@@ -81,7 +81,7 @@
  *
  * <h2>Instantiation</h2>
  * Classes defined in this package are rarely instantiated directly (by a {@code new} statement).
- * Instead those classes are instantiated indirectly by invoking a method on a parent container,
+ * Instead, those classes are instantiated indirectly by invoking a method on a parent container,
  * or by using a builder. The starting point is {@code FeatureType}, which may be created by a
  * {@link org.apache.sis.feature.builder.FeatureTypeBuilder} or may be provided by a
  * {@link org.apache.sis.storage.DataStore} reading a data file.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFilter.java b/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFilter.java
index 59f89d4dc8..12dfd23243 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFilter.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/ComparisonFilter.java
@@ -59,7 +59,7 @@ import org.opengis.filter.BetweenComparisonOperator;
  *
  * <p>Comparisons between temporal objects are done with {@code isBefore(…)} or {@code isAfter(…)} methods when they
  * have a different semantic than the {@code compareTo(…)} methods. If the two temporal objects are not of the same
- * type, only the fields that are common two both types are compared. For example comparison between {@code LocalDate}
+ * type, only the fields that are common two both types are compared. For example, comparison between {@code LocalDate}
  * and {@code LocalDateTime} ignores the time fields.</p>
  *
  * <p>Comparisons of numerical types shall be done by overriding one of the {@code applyAs…} methods and
diff --git a/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java b/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java
index bcf2fd0524..c94c745a30 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/Optimization.java
@@ -394,7 +394,7 @@ public class Optimization {
      * This method tries to transform a filter into a {@code F₀ AND F₁ AND F₂ AND F₃ AND ...} sequence.
      * This transformation is useful when some operands can be handled by the storage engine
      * (for example a SQL database) and other operands cannot.
-     * For example when reading features from a relational database,
+     * For example, when reading features from a relational database,
      * the implementation may choose to express the F₁ and F₃ operands as SQL statements
      * and apply the other operands in Java code.
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/filter/XPath.java b/core/sis-feature/src/main/java/org/apache/sis/filter/XPath.java
index cd86706a01..9cf413a7d4 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/XPath.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/XPath.java
@@ -48,7 +48,7 @@ final class XPath extends Static {
     /**
      * Splits the given URL around the {@code '/'} separator, or returns {@code null} if there is no separator.
      * By convention if the URL is absolute, then the leading {@code '/'} character is kept in the first element.
-     * For example {@code "/∗/property"} is splitted as two elements: {@code "/∗"} and {@code "property"}.
+     * For example, {@code "/∗/property"} is splitted as two elements: {@code "/∗"} and {@code "property"}.
      *
      * <p>This method trims the whitespaces of components except the last one (the tip),
      * for consistency with the case where this method returns {@code null}.</p>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/AnnotatedImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/AnnotatedImage.java
index ba7bac5091..99e12cdaa0 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/AnnotatedImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/AnnotatedImage.java
@@ -158,7 +158,7 @@ abstract class AnnotatedImage extends ImageAdapter {
      * the {@link #parallel} argument specified to the constructor was {@code false}.</p>
      *
      * <p>If {@code areaOfInterest} is {@code null}, then {@link #boundsOfInterest} is always {@code null}.
-     * However the converse is not necessarily true.</p>
+     * However, the converse is not necessarily true.</p>
      */
     protected final Shape areaOfInterest;
 
@@ -169,7 +169,7 @@ abstract class AnnotatedImage extends ImageAdapter {
      * for quickly testing if the area of interest is rectangular.
      *
      * <p>If {@link #areaOfInterest} is {@code null}, then {@code boundsOfInterest} is always {@code null}.
-     * However the converse is not necessarily true.</p>
+     * However, the converse is not necessarily true.</p>
      */
     protected final Rectangle boundsOfInterest;
 
@@ -236,7 +236,7 @@ abstract class AnnotatedImage extends ImageAdapter {
         this.failOnException  = failOnException;
         /*
          * The `this.source` field should be as specified, even if it is another `AnnotatedImage`,
-         * for allowing computation of properties managed by those other instances. However we try
+         * for allowing computation of properties managed by those other instances. However, we try
          * to apply the cache on a deeper source if possible, for increasing the chances that the
          * cache is shared by all images using the same data. This is okay if calculation depends
          * only on sample value, not on other data.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java
index c3dfe1db09..6d07a4e589 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/BandSelectImage.java
@@ -170,7 +170,7 @@ final class BandSelectImage extends SourceAlignedImage {
          * and all those sample models are identical to the one we created at `BandSelectImage` construction time.
          * But it does not seem possible to tell `Raster` to share the existing `SampleModel` instance.
          *
-         * Alternatively we could have tried to do the work of `Raster.createChild(…)` method ourselves.
+         * Alternatively, we could have tried to do the work of `Raster.createChild(…)` method ourselves.
          * But we don't because that method is overridden in various Java2D `SunWritableRaster` classes.
          */
         return parent.createChild(x, y, parent.getWidth(), parent.getHeight(), x, y, bands);
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java
index 3c33727ee0..4b85bad9e9 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ComputedImage.java
@@ -66,7 +66,7 @@ import org.apache.sis.internal.feature.Resources;
  * Default implementation assumes that the pixel in upper-left left corner is located at coordinates (0,0).
  * This assumption is consistent with {@link org.apache.sis.coverage.grid.GridCoverage#render(GridExtent)}
  * contract, which produces an image located at (0,0) when the image region matches the {@code GridExtent}.
- * However subclasses can use a non-zero origin by overriding the methods documented in the
+ * However, subclasses can use a non-zero origin by overriding the methods documented in the
  * <cite>Sub-classing</cite> section below.
  *
  * <p>If this {@code ComputedImage} does not have any {@link WritableRenderedImage} source, then there is
@@ -185,7 +185,7 @@ public abstract class ComputedImage extends PlanarImage implements Disposable {
      * <div class="note"><b>Note on interaction with tile cache</b><br>
      * The use of a destination image may produce unexpected result if {@link #computeTile(int, int, WritableRaster)}
      * is invoked two times or more for the same destination tile. It may look like a problem because computed tiles
-     * can be discarded and recomputed at any time. However this problem should not happen because tiles computed by
+     * can be discarded and recomputed at any time. However, this problem should not happen because tiles computed by
      * this {@code ComputedImage} will not be discarded as long as {@code destination} has a reference to that tile.
      * If a {@code ComputedImage} tile has been discarded, then it implies that the corresponding {@code destination}
      * tile has been discarded as well, in which case the tile computation will restart from scratch; it will not be
@@ -270,7 +270,7 @@ public abstract class ComputedImage extends PlanarImage implements Disposable {
     /**
      * Sets an existing image where to write the computation result. The sample model of specified image shall
      * be equal to {@link #sampleModel} and the tile indices &amp; pixel coordinate systems shall be aligned.
-     * However the target image may be larger or smaller than this {@code ComputedImage}, by containing more
+     * However, the target image may be larger or smaller than this {@code ComputedImage}, by containing more
      * or less tiles (the presence or absence of a tile is a "all or nothing" decision). When this class needs
      * to compute a tile, one of the following choices is executed:
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ComputedTiles.java b/core/sis-feature/src/main/java/org/apache/sis/image/ComputedTiles.java
index f9ac169e03..45244a1c86 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ComputedTiles.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ComputedTiles.java
@@ -35,8 +35,8 @@ import org.apache.sis.util.Disposable;
  * This class shall not contain any strong reference to the {@link ComputedImage}.
  *
  * <p>Despite the {@code ComputedTiles} class name, this class does not contain any reference
- * to the tiles. Instead it contains keys for getting the tiles from {@link TileCache#GLOBAL}.
- * Consequently this class "contains" the tiles only indirectly.</p>
+ * to the tiles. Instead, it contains keys for getting the tiles from {@link TileCache#GLOBAL}.
+ * Consequently, this class "contains" the tiles only indirectly.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ErrorHandler.java b/core/sis-feature/src/main/java/org/apache/sis/image/ErrorHandler.java
index 297a7c295b..337d8dc873 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ErrorHandler.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ErrorHandler.java
@@ -59,7 +59,7 @@ public interface ErrorHandler {
      *
      * <h4>Multi-threading</h4>
      * If the image processing was splitted between many worker threads, this method may be invoked
-     * from any of those threads. However the invocation should happen after all threads terminated,
+     * from any of those threads. However, the invocation should happen after all threads terminated,
      * either successfully or with an error reported in {@code details}.
      *
      * @param  details  information about the first error. If more than one error occurred, the other
@@ -73,7 +73,7 @@ public interface ErrorHandler {
      *
      * <h2>Multi-threading</h2>
      * This class is safe for use in multi-threading. The synchronization lock is {@code this}.
-     * However the {@link LogRecord} instance returned by {@link #getDescription()} is not thread-safe.
+     * However, the {@link LogRecord} instance returned by {@link #getDescription()} is not thread-safe.
      * Operations applied on the {@code LogRecord} should be inside a block synchronized on the
      * {@code Report.this} lock.
      */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ImageCombiner.java b/core/sis-feature/src/main/java/org/apache/sis/image/ImageCombiner.java
index 46d1a4f365..2f711ad60e 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ImageCombiner.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ImageCombiner.java
@@ -54,7 +54,7 @@ import org.apache.sis.measure.Units;
  *
  * <h2>Limitations</h2>
  * Current implementation does not try to map source bands to target bands for the same colors.
- * For example it does not verify if band order needs to be reversed because an image is RGB and
+ * For example, it does not verify if band order needs to be reversed because an image is RGB and
  * the other image is BVR. It is caller responsibility to ensure that bands are in the same order.
  *
  * <p>Current implementation does not expand the destination image for accommodating
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
index 9034123902..67396be6cc 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ImageProcessor.java
@@ -101,16 +101,16 @@ import org.apache.sis.coverage.grid.GridCoverageProcessor;
  *
  * <div class="note"><b>API design:</b>
  * properties (setter methods) are used for values that can be applied unchanged on many different images.
- * For example the {@linkplain #getInterpolation() interpolation method} can be specified once and used
+ * For example, the {@linkplain #getInterpolation() interpolation method} can be specified once and used
  * unchanged for many {@link #resample resample(…)} operations.
  * On the other hand, method arguments are used for values that are usually specific to the image to process.
- * For example the {@link MathTransform} argument given to the {@link #resample resample(…)} operation depends
+ * For example, the {@link MathTransform} argument given to the {@link #resample resample(…)} operation depends
  * tightly on the source image and destination bounds (also given in arguments); those information usually need
  * to be recomputed for each image.</div>
  *
  * <h2>Deferred calculations</h2>
  * Methods in this class may compute the result at some later time after the method returned, instead of computing
- * the result immediately on method call. Consequently unless otherwise specified, {@link RenderedImage} arguments
+ * the result immediately on method call. Consequently, unless otherwise specified, {@link RenderedImage} arguments
  * should be <em>stable</em>, i.e. pixel values should not be modified after method return.
  *
  * <h2>Area of interest</h2>
@@ -373,7 +373,7 @@ public class ImageProcessor implements Cloneable {
     /**
      * Sets the colors to use for given categories in image, or {@code null} is unspecified.
      * This function provides a way to colorize images without knowing in advance the numerical values of pixels.
-     * For example instead of specifying <cite>"pixel value 0 in blue, 1 in green, 2 in yellow"</cite>,
+     * For example, instead of specifying <cite>"pixel value 0 in blue, 1 in green, 2 in yellow"</cite>,
      * this function allows to specify <cite>"Lakes in blue, Forests in green, Sand in yellow"</cite>.
      * It is still possible however to use numerical values if the function desires to do so,
      * since this information is available with {@link Category#getSampleRange()}.
@@ -423,7 +423,7 @@ public class ImageProcessor implements Cloneable {
     /**
      * Sets hints about desired positional accuracy, in "real world" units or in pixel units.
      * More than one hint can be specified for allowing the use of different units.
-     * For example the given array can contain an accuracy in metres and an accuracy in seconds,
+     * For example, the given array can contain an accuracy in metres and an accuracy in seconds,
      * for specifying desired accuracies in both spatial dimensions and in the temporal dimension.
      * Accuracy can also be specified in both real world units such as {@linkplain Units#METRE metres}
      * and in {@linkplain Units#PIXEL pixel units}, which are converted to real world units depending
@@ -710,7 +710,7 @@ public class ImageProcessor implements Cloneable {
 
     /**
      * Returns an image with the same sample values than the given image, but with its color ramp stretched between
-     * specified or inferred bounds. For example in a gray scale image, pixels with the minimum value will be black
+     * specified or inferred bounds. For example, in a gray scale image, pixels with the minimum value will be black
      * and pixels with the maximum value will be white. This operation is a kind of <cite>tone mapping</cite>,
      * a technique used in image processing to map one set of colors to another. The mapping applied by this method
      * is conceptually a simple linear transform (a scale and an offset) applied on sample values before they are
@@ -798,7 +798,7 @@ public class ImageProcessor implements Cloneable {
      * the source image bands in the same order, then {@code source} is returned directly.
      *
      * <p>This method returns an image sharing the same data buffer than the source image;
-     * pixel values are not copied. Consequently changes in the source image are reflected
+     * pixel values are not copied. Consequently, changes in the source image are reflected
      * immediately in the returned image.</p>
      *
      * <h4>Properties used</h4>
@@ -1083,7 +1083,7 @@ public class ImageProcessor implements Cloneable {
      * {@linkplain SampleDimension#getCategories() encapsulated in <code>SampleDimension</code>} objects.
      * The colors (map values) are determined by a function receiving {@link Category} inputs.
      * This separation makes easier to apply colors based on criterion other than numerical values.
-     * For example colors could be determined from {@linkplain Category#getName() category name} such as "Temperature",
+     * For example, colors could be determined from {@linkplain Category#getName() category name} such as "Temperature",
      * or {@linkplain org.apache.sis.measure.MeasurementRange#unit() units of measurement}.
      * The {@link Color} arrays may have any length; colors will be interpolated as needed for fitting
      * the ranges of values in the destination image.</p>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/Interpolation.java b/core/sis-feature/src/main/java/org/apache/sis/image/Interpolation.java
index df5ee0795e..f7d25c4601 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/Interpolation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/Interpolation.java
@@ -28,7 +28,7 @@ import java.nio.DoubleBuffer;
  * gives the sample values to the {@code interpolate(…)} method of this interpolation.
  *
  * <p>All methods in this class shall be safe for concurrent use in multi-threading context.
- * For example interpolations may be executed in a different thread for each tile in an image.</p>
+ * For example, interpolations may be executed in a different thread for each tile in an image.</p>
  *
  * <p>This class is designed for interpolations in a two-dimensional space only.</p>
  *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java b/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java
index d6c4177a4e..ab37935343 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/PixelIterator.java
@@ -169,7 +169,7 @@ public class PixelIterator {
      * <p>This is initialized by {@link #fetchTile()} to the same values than {@link #currentUpperX} and
      * {@link #currentUpperY} but without clipping to the area of interest. We want to keep the flexibility
      * to overwrite with other coordinate system in future versions, if useful for {@link Window} performance.
-     * Consequently hose values should not be used in other context than {@link #fetchValues(Window, Object)}.</p>
+     * Consequently, those values should not be used in other context than {@link #fetchValues(Window, Object)}.</p>
      */
     private int windowLimitX, windowLimitY;
 
@@ -570,7 +570,7 @@ public class PixelIterator {
     /**
      * Returns the most efficient type ({@code int}, {@code float} or {@code double}) for transferring data between the
      * underlying rasters and this iterator. The transfer type is not necessarily the storage type used by the rasters.
-     * For example {@code int} values will be used for transferring data even if the underlying rasters store all sample
+     * For example, {@code int} values will be used for transferring data even if the underlying rasters store all sample
      * values as {@code byte}s.
      *
      * <p>The transfer type is only a hint since all iterator methods work for any type (conversions are applied as needed).
@@ -878,7 +878,7 @@ public class PixelIterator {
      * for updating the {@link #x} and {@link #y} fields.
      *
      * <p>Note 1: {@link #releaseTile()} is always invoked before this method.
-     * Consequently {@link #currentRaster} is already {@code null}.</p>
+     * Consequently, {@link #currentRaster} is already {@code null}.</p>
      *
      * <p>Note 2: there is no {@code currentLowerY} field in this {@code PixelIterator} class.
      * Instead, that value is returned by this method.</p>
@@ -945,7 +945,7 @@ public class PixelIterator {
      * that will allow {@link #moveTo(int,int)} and {@link #next()} to detect that we already finished iteration.
      *
      * <p>Note: {@link #releaseTile()} is always invoked before this method.
-     * Consequently {@link #currentRaster} is already {@code null}.</p>
+     * Consequently, {@link #currentRaster} is already {@code null}.</p>
      */
     private void endOfIteration() {
         /*
@@ -1371,8 +1371,8 @@ public class PixelIterator {
      *
      * <div class="note"><b>Performance note</b>
      * Java2D has numerous optimizations for the integer cases, with no equivalent for the floating point cases.
-     * Consequently if the data buffer is known to use some integer type, it is faster to get integer values and
-     * convert them to {@code double} values instead of to request directly floating-point values. However the
+     * Consequently, if the data buffer is known to use some integer type, it is faster to get integer values and
+     * convert them to {@code double} values instead of to request directly floating-point values. However, the
      * improvement is not as much as using {@link BandedIterator} as least for small windows. For that reason,
      * we do not provide the "integers converted to doubles" performance workaround for now. Even if we provided
      * it, this {@code DoubleWindow} would still be necessary for the general case (non-integer data buffers).
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java
index 81481d741f..805a8e1dcf 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/PlanarImage.java
@@ -546,7 +546,7 @@ public abstract class PlanarImage implements RenderedImage {
      *   <tr><td>{@code "height"}</td>      <td>Image height is not an integer multiple of tile height.</td></tr>
      * </table>
      *
-     * Subclasses may perform additional checks. For example some subclasses have specialized checks
+     * Subclasses may perform additional checks. For example, some subclasses have specialized checks
      * for {@code "minX"}, {@code "minY"}, {@code "tileGridXOffset"} and {@code "tileGridYOffset"}
      * values before to fallback on the more generic {@code "tileX"} and {@code "tileY"} above checks.
      *
@@ -651,7 +651,7 @@ colors: if (cm != null) {
      * Note on `equals(Object)` and `hashCode()` methods:
      *
      * Do not provide base implementation for those methods, because they can only be incomplete and it is too easy
-     * to forget to override those methods in subclasses. Furthermore we should override those methods only in final
+     * to forget to override those methods in subclasses. Furthermore, we should override those methods only in final
      * classes that are read-only images. Base classes of potentially writable images should continue to use identity
      * comparisons, especially when some tiles have been acquired for writing and not yet released at the time the
      * `equals(Object)` method is invoked.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ResampledImage.java b/core/sis-feature/src/main/java/org/apache/sis/image/ResampledImage.java
index 5b2db9aeef..5dd6999a83 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ResampledImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ResampledImage.java
@@ -126,7 +126,7 @@ public class ResampledImage extends ComputedImage {
      * for interpolation support.
      *
      * <p>This transform may be an instance of {@link ResamplingGrid} if the usage of such grid has been authorized.
-     * That transform may be non-invertible. Consequently this transform should not be used for inverse operations
+     * That transform may be non-invertible. Consequently, this transform should not be used for inverse operations
      * and should not be made accessible to the user.</p>
      *
      * <p>This transform maps pixel centers of both images, except in the case of nearest-neighbor interpolation.
@@ -345,7 +345,7 @@ public class ResampledImage extends ComputedImage {
      *
      * <p>Since interpolator will receive data at coordinates {@code max} to {@code max + span - 1} inclusive
      * and since those coordinates are pixel centers, the points to interpolate are on the surface of a valid
-     * pixel until {@code (max + span - 1) + 0.5}. Consequently this method computes {@code max + span - 0.5}.
+     * pixel until {@code (max + span - 1) + 0.5}. Consequently, this method computes {@code max + span - 0.5}.
      * An additional 0.5 offset is added in the special case of nearest-neighbor interpolation for consistency
      * with {@link #interpolationSupportOffset(int)}.</p>
      *
@@ -738,7 +738,7 @@ public class ResampledImage extends ComputedImage {
             /*
              * Pixel coordinate along X axis where to start writing the `values` or `intValues` array.
              * This is usually the first column of the tile, and the number of pixels to write is the
-             * tile width (i.e. we write a full tile row). However those values may be modified below
+             * tile width (i.e. we write a full tile row). However, those values may be modified below
              * if we avoid writing pixels that are outside the source image.
              */
             int posX = tileMinX;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java b/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java
index 7c4b008fdd..71962b90a5 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/ResamplingGrid.java
@@ -48,7 +48,7 @@ import static java.lang.Math.abs;
  * All coordinates inside the same tile are interpolated using the same coefficients.</p>
  *
  * <p>{@link ResampledImage} implements {@link MathTransform2D} for allowing usage by {@link ResampledImage}
- * but is not a full featured transform. For example it does not support the {@link #inverse()} operation.
+ * but is not a full featured transform. For example, it does not support the {@link #inverse()} operation.
  * For this reason this class should not be public and instance of this class should not be accessible
  * outside {@link ResampledImage}.</p>
  *
@@ -550,7 +550,7 @@ affine: if (depth.width == 0 && depth.height == 0) {
      * {@link Matrix2} instance.
      *
      * <p>In Apache SIS implementations, matrices returned by {@code derivative(Point2D)} methods are already
-     * instances of {@link Matrix2}. Consequently in most cases this method will just cast the result.</p>
+     * instances of {@link Matrix2}. Consequently, in most cases this method will just cast the result.</p>
      *
      * @param  toSourceCenter  the transform for which to compute the derivative.
      * @param  point           the location where to compute the derivative.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/TileCache.java b/core/sis-feature/src/main/java/org/apache/sis/image/TileCache.java
index fdb2bc5d2c..d009045eef 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/TileCache.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/TileCache.java
@@ -54,7 +54,7 @@ final class TileCache extends Cache<TileCache.Key, Raster> {
      * Creates a new tile cache. We put an arbitrary limit of 25% of available memory.
      * If more tiles are created, some strong references will become soft references.
      * Because strong references may be kept by the JVM, the amount of memory actually
-     * used may be greater than this limit. However those references are cleaned when the
+     * used may be greater than this limit. However, those references are cleaned when the
      * image owning those tiles is {@linkplain ComputedTiles#dispose() garbage collected}.
      */
     private TileCache() {
@@ -99,7 +99,7 @@ final class TileCache extends Cache<TileCache.Key, Raster> {
     static final class Key {
         /**
          * The image which own the tile as a weak reference. All {@code TileCache.Key} instances
-         * for the same image will share the same reference.  Consequently it is okay to compare
+         * for the same image will share the same reference.  Consequently, it is okay to compare
          * {@code image} fields directly instead of {@code image.get()}.
          */
         private final ComputedTiles image;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/Visualization.java b/core/sis-feature/src/main/java/org/apache/sis/image/Visualization.java
index c2c2616012..152b7309ed 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/Visualization.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/Visualization.java
@@ -217,7 +217,7 @@ final class Visualization extends ResampledImage {
                 initialized = true;
             } else {
                 /*
-                 * Ranges of sample values were not specified explicitly. Instead we will try to infer them
+                 * Ranges of sample values were not specified explicitly. Instead, we will try to infer them
                  * in various ways: sample dimensions, scaled color model, statistics in last resort.
                  */
                 colorizer = new Colorizer(categoryColors);
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/WritablePixelIterator.java b/core/sis-feature/src/main/java/org/apache/sis/image/WritablePixelIterator.java
index 986c3540e6..b68b8b18d7 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/WritablePixelIterator.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/WritablePixelIterator.java
@@ -60,7 +60,7 @@ public class WritablePixelIterator extends PixelIterator implements Closeable {
     /**
      * The image where pixels will be written, or {@code null} if the image is read-only.
      * The destination image may or may not be the same instance than the source {@link #image}.
-     * However the sample model, the minimal X and Y values and the tile grid must be the same.
+     * However, the sample model, the minimal X and Y values and the tile grid must be the same.
      */
     private final WritableRenderedImage destination;
 
diff --git a/core/sis-feature/src/main/java/org/apache/sis/image/package-info.java b/core/sis-feature/src/main/java/org/apache/sis/image/package-info.java
index 234e989c43..738f5b4d4b 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/image/package-info.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/image/package-info.java
@@ -37,7 +37,7 @@
  * and {@code releaseWritableTile(…)} methods of {@link java.awt.image.WritableRenderedImage} interface.
  * Do not cast directly a {@link java.awt.image.Raster} to {@link java.awt.image.WritableRaster}
  * even when the cast is safe, because some raster data may be shared by many tiles having identical content.
- * Furthermore changes in pixel values may be lost if {@code releaseWritableTile(…)} is not invoked.
+ * Furthermore, changes in pixel values may be lost if {@code releaseWritableTile(…)} is not invoked.
  *
  * @author  Rémi Maréchal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-feature/src/main/java/org/apache/sis/index/tree/NodeIterator.java b/core/sis-feature/src/main/java/org/apache/sis/index/tree/NodeIterator.java
index 73197c16bb..c380226ec4 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/index/tree/NodeIterator.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/index/tree/NodeIterator.java
@@ -232,7 +232,7 @@ class NodeIterator<E> implements Spliterator<E>, Cloneable {
 
         /**
          * Masks for clearing the bits of all quadrants that do not intersect the search region on the left side.
-         * For example for <var>x</var> dimension, this is the mask to apply if the {@code xmin <= cx} condition
+         * For example, for <var>x</var> dimension, this is the mask to apply if the {@code xmin <= cx} condition
          * is false. In this example {@code CLEAR_MASKS[0]} clears the bits of all quadrants on the West side,
          * which are quadrants 1, 3, 5, <i>etc.</i>
          *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java b/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java
index 55a6bcefdf..a5e38ef641 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/index/tree/PointTree.java
@@ -61,7 +61,7 @@ import org.apache.sis.util.collection.CheckedContainer;
  *
  * <h2>Serialization</h2>
  * This tree is serializable if the {@code locator} function and all elements in the tree are also serializable.
- * However the serialization details is implementation specific and may change in any future Apache SIS version.
+ * However, the serialization details is implementation specific and may change in any future Apache SIS version.
  *
  * <h2>Limitations</h2>
  * Current implementation does not yet support removal of elements.
@@ -196,7 +196,7 @@ public class PointTree<E> extends AbstractSet<E> implements CheckedContainer<E>,
      *
      * <p>The {@code bounds} argument specifies the expected region of points to be added in this {@code PointTree}.
      * Those bounds do not need to be exact; {@code PointTree} will work even if some points are located outside
-     * those bounds. However performances will be better if the {@linkplain Envelope#getMedian(int) envelope center}
+     * those bounds. However, performances will be better if the {@linkplain Envelope#getMedian(int) envelope center}
      * is close to the median of the points to be inserted in the {@code PointTree}, and if the majority of points
      * are inside those bounds.</p>
      *
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java
index 77e816be56..616affc40f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/BatchComputedImage.java
@@ -135,7 +135,7 @@ public abstract class BatchComputedImage extends ComputedImage {
      * @todo The return type should be changed to something more reactive, maybe {@link java.util.concurrent.Flow}.
      *       It would allow processing (e.g. map reprojection) of some tiles as soon as they become available,
      *       without waiting for all tiles to be available. Note that the tiles can be returned in any order.
-     *       For example the TIFF reader is reading tiles in arbitrary order, then rearranges them in the array.
+     *       For example, the TIFF reader is reading tiles in arbitrary order, then rearranges them in the array.
      *       So the "row-major" order in above javadoc could not apply anymore.
      *
      * @param  tiles  range of tile indices for which to precompute tiles.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java
index fc1bc0aa4e..9b4e076afc 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelFactory.java
@@ -451,7 +451,7 @@ public final class ColorModelFactory {
      * acceleration in Java2D rendering pipe.
      *
      * <p>This method does not clamp the given values to the maximum range supported by the given type.
-     * For example even if {@code TYPE_BYTE} cannot represent values outside the [0 … 255] range,
+     * For example, even if {@code TYPE_BYTE} cannot represent values outside the [0 … 255] range,
      * we do not clamp the minimum and maximum values to that range because it would change the visual
      * appearance (because of different color scale).</p>
      *
@@ -487,7 +487,7 @@ public final class ColorModelFactory {
         /*
          * Since sample values are integers, take a tolerance of 1. But for the upper bounds,
          * we take a slightly larger tolerance in case the caller confused "inclusive" versus
-         * "exclusive" values. For example 255.5 ± 1.5 accepts the |254.001 … 256.999] range.
+         * "exclusive" values. For example, 255.5 ± 1.5 accepts the |254.001 … 256.999] range.
          */
         return Math.abs(minimum) < 1 && Math.abs(maximum - (upper - 0.5)) < 1.5;
     }
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelPatch.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelPatch.java
index 0d4952553b..8fecb2a314 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelPatch.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ColorModelPatch.java
@@ -50,7 +50,7 @@ final class ColorModelPatch<T extends ColorModel> {
     /**
      * Returns {@code true} if the given color models are equal. The {@link ColorModel} class
      * defines an {@code equals} method, but as of Java 6 that method does not compare every
-     * attributes. For example it does not compare the color space and the transfer type, so
+     * attributes. For example, it does not compare the color space and the transfer type, so
      * we have to compare them here.
      *
      * @param cm1  the first color model.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/Colorizer.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/Colorizer.java
index 9e9ff96ba0..d8af94c8f8 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/Colorizer.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/Colorizer.java
@@ -137,7 +137,7 @@ public final class Colorizer {
      * of those values is suitable, or a new sample dimension created by {@link #compact()}.
      *
      * <p>This sample dimension should not be returned to the user because it may not contain meaningful values.
-     * For example it may contain an "artificial" transfer function for computing a {@link MathTransform1D} from
+     * For example, it may contain an "artificial" transfer function for computing a {@link MathTransform1D} from
      * source range to the [0 … 255] value range.</p>
      */
     private SampleDimension target;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ImageUtilities.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ImageUtilities.java
index 6a50cc9bad..a1c1f60632 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ImageUtilities.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ImageUtilities.java
@@ -100,7 +100,7 @@ public final class ImageUtilities extends Static {
     /**
      * Clips the given rectangle to the bounds of the given image.
      * Note that {@link Rectangle#width} and/or {@link Rectangle#width} results may be negative.
-     * Consequently the caller should test {@link Rectangle#isEmpty()} on the returned value.
+     * Consequently, the caller should test {@link Rectangle#isEmpty()} on the returned value.
      *
      * @param  image  the image.
      * @param  aoi    a region of interest to clip to the image bounds.
@@ -357,7 +357,7 @@ public final class ImageUtilities extends Static {
                  *
                  * So it looks like that SampleModel already normalizes the color components
                  * to (Red, Green, Blue) order, at least when the image has been created with
-                 * a standard constructor. However we do not know yet what would be the behavior
+                 * a standard constructor. However, we do not know yet what would be the behavior
                  * if masks are not the same. For now we just log a warning.
                  */
                 int[] m1 = null;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/RasterFactory.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/RasterFactory.java
index 0afb1a42e6..71462c4cd4 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/RasterFactory.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/RasterFactory.java
@@ -137,7 +137,7 @@ public final class RasterFactory extends Static {
     {
         /*
          * We do not verify the argument validity. Since this class is internal, caller should have done verification
-         * itself. Furthermore those arguments are verified by WritableRaster constructors anyway.
+         * itself. Furthermore, those arguments are verified by WritableRaster constructors anyway.
          */
         final int dataType = buffer.getDataType();
         /*
@@ -164,7 +164,7 @@ public final class RasterFactory extends Static {
                     if (bandOffsets.length == 1 && pixelStride == 1) {
                         /*
                          * From JDK javadoc: "To create a 1-band Raster of type TYPE_INT, use createPackedRaster()".
-                         * However this would require the creation of a PackedColorModel subclass. For SIS purposes,
+                         * However, this would require the creation of a PackedColorModel subclass. For SIS purposes,
                          * it is easier to create a banded sample model.
                          */
                         return WritableRaster.createBandedRaster(buffer, width, height, scanlineStride, new int[1], bandOffsets, location);
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/SampleModelFactory.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/SampleModelFactory.java
index 02f16d8df4..90603cd556 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/SampleModelFactory.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/SampleModelFactory.java
@@ -201,7 +201,7 @@ public final class SampleModelFactory {
      *
      * <h4>Comparison with standard method</h4>
      * The standard {@link SampleModel#createSubsetSampleModel(int[])} method also selects a subset of the bands.
-     * However that standard method creates a sample model accepting the same {@link java.awt.image.DataBuffer}
+     * However, that standard method creates a sample model accepting the same {@link java.awt.image.DataBuffer}
      * than the original {@link SampleModel}, which is useful for creating a <em>view</em> of image data that are
      * already in memory. By contrast, this {@code BandSelector} <em>compresses</em> bank indices or pixel masks
      * for leaving no empty space between them. This is useful when done <em>before</em> loading data from a file
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java
index 082535be1c..46a3f1f5e5 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/ScaledColorModel.java
@@ -144,7 +144,7 @@ final class ScaledColorModel extends ComponentColorModel {
      *
      * <div class="note"><b>Note:</b>
      * we have to override this method because the {@link ComponentColorModel#equals(Object)} implementation
-     * is confused by our overriding of {@link #getTransparency()} method. However we do not need to override
+     * is confused by our overriding of {@link #getTransparency()} method. However, we do not need to override
      * {@link #hashCode()}.</div>
      */
     @Override
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/Geometries.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/Geometries.java
index 4cbac20a3f..246da30056 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/Geometries.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/Geometries.java
@@ -438,7 +438,7 @@ public abstract class Geometries<G> implements Serializable {
         final double[] coordinates;
         /*
          * Find if some intermediate points need to be added. We add points only at the edges of axis domain,
-         * for example at 180°E or 180°W. Furthermore we add points only on axes having increasing values,
+         * for example at 180°E or 180°W. Furthermore, we add points only on axes having increasing values,
          * i.e. we do not add points on axes using the "end point < start point" convention.
          */
         final CoordinateReferenceSystem crs;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/MovingFeatures.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/MovingFeatures.java
index a99154d976..e2dfdb66e9 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/MovingFeatures.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/MovingFeatures.java
@@ -52,7 +52,7 @@ public class MovingFeatures {
 
     /**
      * An alternative to {@link #TIME_AS_INSTANTS} used when times cannot be mapped to calendar dates.
-     * This characteristic uses the same name than {@code TIME_AS_INSTANTS}. Consequently at most one
+     * This characteristic uses the same name than {@code TIME_AS_INSTANTS}. Consequently, at most one
      * of {@code TIME_AS_INSTANTS} and {@code TIME_AS_NUMBERS} can be used on the same property.
      */
     private static final AttributeType<Number> TIME_AS_NUMBERS;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/SpatialOperationContext.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/SpatialOperationContext.java
index 395a60c58a..6b0b4b8e45 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/SpatialOperationContext.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/SpatialOperationContext.java
@@ -90,7 +90,7 @@ public final class SpatialOperationContext implements Serializable {
 
     /**
      * If the CRS needs to be in some units of measurement, the {@link Unit#getSystemUnit()} value.
-     * For example is units need to be linear, then {@code systemUnit} shall be {@link Units#METRE}.
+     * For example, is units need to be linear, then {@code systemUnit} shall be {@link Units#METRE}.
      * Note that it does not mean that the units of measurement must be meters; only that they must
      * be compatible with meters.
      */
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/FlatShape.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/FlatShape.java
index b472d36c80..dbd6c7979e 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/FlatShape.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/FlatShape.java
@@ -28,7 +28,7 @@ import org.apache.sis.internal.referencing.j2d.IntervalRectangle;
 
 /**
  * A shape made of straight lines. This shape does not contain any Bézier curve.
- * Consequently the flatness factor of path iterator can be ignored.
+ * Consequently, the flatness factor of path iterator can be ignored.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/PathBuilder.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/PathBuilder.java
index f4ae2b28b5..2eb48ed63f 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/PathBuilder.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/PathBuilder.java
@@ -151,7 +151,7 @@ public class PathBuilder {
      * coordinate values.
      *
      * <p>This method is invoked at least once per {@link #append(double[], int, boolean)} call.
-     * Consequently it is not necessarily invoked with the coordinates of a complete polyline or polygon,
+     * Consequently, it is not necessarily invoked with the coordinates of a complete polyline or polygon,
      * because caller can build a polyline with multiple calls to {@code append(…)}.
      * If those {@code append(…)} calls correspond to some logical chunks (at users choice),
      * this {@code filterChunk(…)} method allows users to exploit this subdivision in their processing.</p>
@@ -170,7 +170,7 @@ public class PathBuilder {
     /**
      * Applies a custom filtering on the coordinates of a polyline or polygon.
      * The default implementation does nothing. Subclasses can override this method for changing or removing some
-     * coordinate values. For example a subclass could decimate points using Ramer–Douglas–Peucker algorithm.
+     * coordinate values. For example, a subclass could decimate points using Ramer–Douglas–Peucker algorithm.
      * Contrarily to {@link #filterChunk(double[], int, int)}, this method is invoked when the coordinates of
      * the full polyline or polygon are available. If polyline points need to be transformed before to build
      * the final geometry, this is the right place to do so.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Polyline.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Polyline.java
index 5b9c8acc5d..db57823a53 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Polyline.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/j2d/Polyline.java
@@ -45,7 +45,7 @@ import org.apache.sis.util.Classes;
  * applications of the two following steps:
  *
  * <ol class="verbose">
- *   <li>First, translate coordinates toward zero. For example latitude or longitude values in the
+ *   <li>First, translate coordinates toward zero. For example, latitude or longitude values in the
  *       [50 … 60]° range have a precision of about 4E-6° (about 0.4 meter). But translating those
  *       coordinates to the [-5 … 5]° range increases their precision to 0.05 meter. The precision
  *       gain is more important when the original coordinates are projected coordinates with high
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java
index 1ffe845ea8..1eb7826534 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/feature/jts/JTS.java
@@ -48,7 +48,7 @@ import static java.util.logging.Logger.getLogger;
  * For library-agnostic functionalities, see {@link org.apache.sis.internal.feature.Geometries} instead.
  *
  * <p>This method may be modified or removed in any future version.
- * For example we may replace it by a more general mechanism working also on other geometry libraries.</p>
+ * For example, we may replace it by a more general mechanism working also on other geometry libraries.</p>
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Alexis Manin (Geomatys)
@@ -232,7 +232,7 @@ public final class JTS extends Static {
      *
      * <p><b>This operation may be slow!</b>
      * If many geometries need to be transformed, it is better to fetch the {@link CoordinateOperation} only once,
-     * then invoke {@link #transform(Geometry, CoordinateOperation)} for each geometry. Alternatively the geometries
+     * then invoke {@link #transform(Geometry, CoordinateOperation)} for each geometry. Alternatively, the geometries
      * can be stored in a single geometry collection in order to invoke this method only once.</p>
      *
      * @param  geometry   the geometry to transform, or {@code null}.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java
index ceb3a326c7..7e08dcf92c 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/filter/Visitor.java
@@ -38,7 +38,7 @@ import org.opengis.filter.ComparisonOperatorName;
 /**
  * An executor of different actions depending on filter or expression type.
  * Action are defined by {@link BiConsumer} where the first parameter is the filter or expression,
- * and the second parameter is an arbitrary object used as accumulator. For example the accumulator
+ * and the second parameter is an arbitrary object used as accumulator. For example, the accumulator
  * may be a {@link StringBuilder} where the filter is written as a SQL or CQL statement.
  *
  * <div class="note"><b>Relationship with the visitor pattern</b><br>
@@ -267,7 +267,7 @@ public abstract class Visitor<R,A> {
      * {@link #setFilterHandler(CodeList, BiConsumer)} and similar methods, which use the exact {@code <R>} type.
      * This restriction exists because when doing otherwise, parameterized types become hard to express in Java
      * (we get a cascade of {@code super} keywords, something like {@code <? super ? super R>}).
-     * However doing the {@code (Filter<R>) filter} cast is actually safe if the handlers do not invoke any
+     * However, doing the {@code (Filter<R>) filter} cast is actually safe if the handlers do not invoke any
      * {@code filter} method having a return value (directly or indirectly as list elements) restricted to
      * the exact {@code <R>} type. Such methods do not exist in the GeoAPI interfaces, so the cast is safe
      * if the {@link BiConsumer} handlers do not invoke implementation-specific methods.
@@ -299,7 +299,7 @@ public abstract class Visitor<R,A> {
      * {@link #setExpressionHandler(String, BiConsumer)} and similar methods, which use the exact {@code <R>} type.
      * This restriction exists because when doing otherwise, parameterized types become hard to express in Java
      * (we get a cascade of {@code super} keywords, something like {@code <? super ? super R>}).
-     * However doing the {@code (Expression<R>,?) expression} cast is actually safe if the handlers do not invoke
+     * However, doing the {@code (Expression<R>,?) expression} cast is actually safe if the handlers do not invoke
      * any {@code expression} method having a return value (directly or indirectly as list elements) restricted to
      * the exact {@code <R>} type. Such methods do not exist in the GeoAPI interfaces, so the cast is safe
      * if the {@link BiConsumer} handlers do not invoke implementation-specific methods.
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java
index 4c36d5b108..662128f09b 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/image/TiledProcess.java
@@ -53,7 +53,7 @@ import org.apache.sis.util.ArgumentChecks;
  *
  * The tiling applied by {@code TiledProcess} is independent of {@link RenderedImage} tiling.
  * This class assumes that the objects to be calculated are geometries or other non-raster data.
- * Consequently tile size will be determined by other considerations such as the number of processors.
+ * Consequently, tile size will be determined by other considerations such as the number of processors.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.3
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Isolines.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Isolines.java
index d254c78e83..e12fb14fc6 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Isolines.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Isolines.java
@@ -108,7 +108,7 @@ public final class Isolines {
      * <h4>How strict equalities are handled</h4>
      * Sample values exactly equal to the isoline value are handled as if they were greater. It does not matter
      * for interpolations: we could flip this convention randomly, the interpolated points would still the same.
-     * However it could change the way line segments are assembled in a single polyline, but the algorithm stay
+     * However, it could change the way line segments are assembled in a single polyline, but the algorithm stay
      * consistent if we always apply the same rule for all points.
      *
      * <h4>How NaN values are handled</h4>
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/PolylineBuffer.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/PolylineBuffer.java
index d7c1687462..dd06a647d8 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/PolylineBuffer.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/PolylineBuffer.java
@@ -58,7 +58,7 @@ final class PolylineBuffer {
     /**
      * If the polyline has points added to its two extremities, the other extremity. Otherwise {@code null}.
      * The first point of {@code opposite} polyline is connected to the first point of this polyline.
-     * Consequently when those two polylines are joined in a single polyline, the coordinates of either
+     * Consequently, when those two polylines are joined in a single polyline, the coordinates of either
      * {@code this} or {@code opposite} must be iterated in reverse order.
      */
     PolylineBuffer opposite;
diff --git a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Tracer.java b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Tracer.java
index 66a1fa38ca..1a3c189616 100644
--- a/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Tracer.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/internal/processing/isoline/Tracer.java
@@ -532,12 +532,12 @@ final class Tracer {
                 /*
                  * We have a loop: the polygon can be closed now, without copying coordinates to temporary buffers.
                  * Points in `PolylineBuffer` instances will be iterated in (reverse, forward) order respectively.
-                 * Consequently the points we just interpolated will be first point and last point before closing.
+                 * Consequently, the points we just interpolated will be first point and last point before closing.
                  */
                 polylines = new PolylineBuffer[] {polylineOnTop, polylineOnLeft};    // (reverse, forward) point order.
             } else {
                 /*
-                 * Joining left and top polylines do not yet create a closed shape. Consequently we may not write
+                 * Joining left and top polylines do not yet create a closed shape. Consequently, we may not write
                  * in the `path` now. But maybe we can close the polygon later after more polylines are attached.
                  */
                 final Fragments fragment = new Fragments(polylineOnLeft, polylineOnTop);
diff --git a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridCoverage2DTest.java b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridCoverage2DTest.java
index 33d1abf21a..ecb2d91856 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridCoverage2DTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/GridCoverage2DTest.java
@@ -173,7 +173,7 @@ public strictfp class GridCoverage2DTest extends TestCase {
         });
         /*
          * Test writing converted values and verify the result in the packed coverage.
-         * For example for the sample value at (0,0), we have (p is the packed value):
+         * For example, for the sample value at (0,0), we have (p is the packed value):
          *
          *   70 = p * 0.5 + 100   →   (70-100)/0.5 = p   →   p = -60
          */
diff --git a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java
index 567d4a6d01..d48a6d67a6 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/coverage/grid/ResampledGridCoverageTest.java
@@ -62,7 +62,7 @@ import static org.apache.sis.test.FeatureAssert.*;
  * Tests the {@link ResampledGridCoverage} implementation.
  * The tests in this class does not verify interpolation results
  * (this is {@link org.apache.sis.image.ResampledImageTest} job).
- * Instead it focus on the grid geometry inferred by the operation.
+ * Instead, it focuses on the grid geometry inferred by the operation.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @author  Alexis Manin (Geomatys)
diff --git a/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractFeatureTest.java b/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractFeatureTest.java
index aedaddd3f9..4a24092d68 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractFeatureTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/feature/AbstractFeatureTest.java
@@ -55,7 +55,7 @@ public final strictfp class AbstractFeatureTest extends FeatureTestCase {
     @SuppressWarnings("serial")
     private static final class CustomFeature extends AbstractFeature implements Cloneable {
         /**
-         * All property values. For this test we use a {@code java.util.Map}. However users who want to provide
+         * All property values. For this test we use a {@code java.util.Map}. However, users who want to provide
          * their own {@link AbstractFeature} implementation should consider to use plain Java fields instead.
          * If a feature backed by a {@code java.util.Map} is really wanted, then {@link SparseFeature} should
          * be considered.
diff --git a/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureOperationsTest.java b/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureOperationsTest.java
index 3b99b5b1bc..ac08c5889e 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureOperationsTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/feature/FeatureOperationsTest.java
@@ -99,7 +99,7 @@ public final strictfp class FeatureOperationsTest extends TestCase {
     /**
      * Tests the constructor. The set of attributes on which the operation depends shall include
      * "classes", "climbing wall" and "gymnasium" but not "name" since the latter does not contain
-     * a geometry. Furthermore the default CRS shall be {@code HardCodedCRS.WGS84}, not
+     * a geometry. Furthermore, the default CRS shall be {@code HardCodedCRS.WGS84}, not
      * {@code HardCodedCRS.WGS84_LATITUDE_FIRST}, because this test uses "gymnasium" as the default geometry.
      *
      * @throws FactoryException if an error occurred while searching for the coordinate operations.
diff --git a/core/sis-feature/src/test/java/org/apache/sis/image/InterpolationTest.java b/core/sis-feature/src/test/java/org/apache/sis/image/InterpolationTest.java
index 3d08d303de..f0e736d984 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/image/InterpolationTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/image/InterpolationTest.java
@@ -147,7 +147,7 @@ public final strictfp class InterpolationTest extends TestCase {
     /**
      * Tests Lanczos interpolation. The Lanczos kernel has value 1 at the interpolated position
      * and 0 at distances that are an integer amount of pixels from the interpolated position.
-     * Consequently when interpolating exactly at pixel center, we expect the exact pixel value.
+     * Consequently, when interpolating exactly at pixel center, we expect the exact pixel value.
      */
     @Test
     public void testLanczos() {
diff --git a/core/sis-feature/src/test/java/org/apache/sis/image/LinearIteratorTest.java b/core/sis-feature/src/test/java/org/apache/sis/image/LinearIteratorTest.java
index f7e0e926b4..e89f13e9a4 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/image/LinearIteratorTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/image/LinearIteratorTest.java
@@ -68,7 +68,7 @@ public final strictfp class LinearIteratorTest extends PixelIteratorTest {
     }
 
     /**
-     * Returns the index in iteration of the given coordinates. For example a return value of 2 means
+     * Returns the index in iteration of the given coordinates. For example, a return value of 2 means
      * that the given (x,y) should be the third point in iteration (iteration starts at index zero).
      * This method must be overridden for each kind of iterator to test.
      *
diff --git a/core/sis-feature/src/test/java/org/apache/sis/image/PixelIteratorTest.java b/core/sis-feature/src/test/java/org/apache/sis/image/PixelIteratorTest.java
index 22f974956d..f06ea62306 100644
--- a/core/sis-feature/src/test/java/org/apache/sis/image/PixelIteratorTest.java
+++ b/core/sis-feature/src/test/java/org/apache/sis/image/PixelIteratorTest.java
@@ -296,7 +296,7 @@ public strictfp class PixelIteratorTest extends TestCase {
     }
 
     /**
-     * Returns the index in iteration of the given coordinates. For example a return value of 2 means
+     * Returns the index in iteration of the given coordinates. For example, a return value of 2 means
      * that the given (x,y) should be the third point in iteration (iteration starts at index zero).
      * This method must be overridden for each kind of iterator to test.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/AdapterReplacement.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/AdapterReplacement.java
index a3fb58080d..70da9bf553 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/AdapterReplacement.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/AdapterReplacement.java
@@ -34,7 +34,7 @@ import javax.xml.bind.annotation.adapters.XmlAdapter;
  * <p><b>WARNING:</b> there is currently no mechanism for ensuring that the registration performed
  * by an {@code AdapterReplacement} instance does not overwrite the registration performed by an
  * other {@code AdapterReplacement} instance. This is okay as long as the instances are defined
- * only in SIS. However we will need to revisit this issue if we move this interface to public API.</p>
+ * only in SIS. However, we will need to revisit this issue if we move this interface to public API.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.3
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapAdapter.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapAdapter.java
index 2dc9ae3436..50db87a59a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapAdapter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/IdentifierMapAdapter.java
@@ -58,7 +58,7 @@ import static org.apache.sis.util.collection.Containers.hashMapCapacity;
  *
  * <h2>Handling of duplicated authorities</h2>
  * The collection shall not contain more than one identifier for the same
- * {@linkplain Identifier#getAuthority() authority}. However duplications may happen if the user
+ * {@linkplain Identifier#getAuthority() authority}. However, duplications may happen if the user
  * has direct access to the list, for example through {@link Citation#getIdentifiers()}. If such
  * duplication is found, then this map implementation applies the following rules:
  *
@@ -213,7 +213,7 @@ public class IdentifierMapAdapter extends AbstractMap<Citation,String> implement
      * Counts the number of entries, ignoring null elements and duplicated authorities.
      *
      * <p>Because {@code null} elements are ignored, this method may return 0 even if {@link #isEmpty()}
-     * returns {@code false}. However this inconsistency should not happen in practice because
+     * returns {@code false}. However, this inconsistency should not happen in practice because
      * {@link org.apache.sis.metadata.ModifiableMetadata} internal collection implementations
      * do not allow null values.</p>
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/PrimitiveTypeProperties.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/PrimitiveTypeProperties.java
index 2a81da8312..de65d2600a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/PrimitiveTypeProperties.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/PrimitiveTypeProperties.java
@@ -24,7 +24,7 @@ import org.apache.sis.xml.NilReason;
 
 /**
  * A workaround for attaching properties ({@code nilreason}, {@code href}, <i>etc.</i>) to primitive type wrappers.
- * The normal approach in SIS is to implement the {@link org.apache.sis.xml.NilObject} interface. However we cannot
+ * The normal approach in SIS is to implement the {@link org.apache.sis.xml.NilObject} interface. However, we cannot
  * do so when the object is a final Java class like {@link Boolean}, {@link Integer}, {@link Double} or {@link String}.
  * This class provides a workaround using specific instances of those wrappers.
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/CodeListAdapter.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/CodeListAdapter.java
index 901c73b23e..334fea70b3 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/CodeListAdapter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/CodeListAdapter.java
@@ -80,8 +80,8 @@ public abstract class CodeListAdapter<ValueType extends CodeListAdapter<ValueTyp
      *     return new ValueType(value);
      * }
      *
-     * However is some cases, the {@code value} argument may be inspected.
-     * For example {@link org.apache.sis.internal.jaxb.code.MD_RestrictionCode}
+     * However, is some cases, the {@code value} argument may be inspected.
+     * For example, {@link org.apache.sis.internal.jaxb.code.MD_RestrictionCode}
      * replaces {@code "licence"} by {@code "license"} for ISO 19115:2003 compatibility.
      *
      * @param  value  the value of {@link CodeList}, to be marshalled.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/EnumAdapter.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/EnumAdapter.java
index 0158ec8c59..5a4a4af558 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/EnumAdapter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/cat/EnumAdapter.java
@@ -60,7 +60,7 @@ public abstract class EnumAdapter<ValueType extends EnumAdapter<ValueType,BoundT
     protected static String name(final String value) {
         /*
          * Replace space ! " # $ % & ' ( ) * + , - . / punction characters by '_'.
-         * For example this replace "in/out" by "IN_OUT" in ParameterDirection.
+         * For example, this replace "in/out" by "IN_OUT" in ParameterDirection.
          *
          * Note: we do not use codepoint API because this method is mostly for
          * GeoAPI programmatic constant names, which are written in English.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
index 87608043e2..351c6c5e4f 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/GO_CharacterString.java
@@ -50,8 +50,8 @@ import org.apache.sis.util.resources.Errors;
  * <p>{@code FileName} and {@code MimeFileType} are possible substitutions for {@code CharacterString}.
  * They make sense only in {@link org.apache.sis.metadata.iso.identification.DefaultBrowseGraphic} or
  * other classes using URI, but the XML schema does not prevent their usage in place of other strings.
- * Consequently we unconditionally accept {@code FileName} and {@code MimeFileType} at unmarshalling time.
- * However marshalling will use the appropriate element for the kind of property to marshal.</p>
+ * Consequently, we unconditionally accept {@code FileName} and {@code MimeFileType} at unmarshalling time.
+ * However, marshalling will use the appropriate element for the kind of property to marshal.</p>
  *
  * <p>{@code <gco:CharacterString>} can also be replaced by {@link org.opengis.util.CodeList} or some
  * {@link java.lang.Enum} instances. See {@link Types} javadoc for an example.</p>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectIdentification.html b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectIdentification.html
index 7fd5a79275..78670a9a9d 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectIdentification.html
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectIdentification.html
@@ -27,7 +27,7 @@
   <body>
     <h1>Class ObjectIdentification</h1>
     <p>The <code>org.apache.sis.internal.jaxb.gco</code> package conceptually defines two complementary objects:
-        <code>ObjectIdentification</code> and <code>ObjectReference</code>. However only the latter is defined by
+        <code>ObjectIdentification</code> and <code>ObjectReference</code>. However, only the latter is defined by
         a Java class, because the former is implicitly defined by the classes in the public API of SIS.
         This page contains the information that we would have put in <code>ObjectIdentification</code> Javadoc
         is such class existed.</p>
@@ -53,7 +53,7 @@
           unique identifier, but only available within GCO context.</li>
     </ul>
 
-    <p>However according the <a href="https://www.isotc211.org/2005/gco/gcoBase.xsd">OGC/ISO schema</a>,
+    <p>However, according the <a href="https://www.isotc211.org/2005/gco/gcoBase.xsd">OGC/ISO schema</a>,
        those identifiers seem to be defined in the GCO schema.</p>
   </body>
 </html>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java
index dccddea8e1..2d44e99145 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/ObjectReference.java
@@ -126,7 +126,7 @@ final class ObjectReference {
 
     /**
      * Adds a new identifier into the given map, if non null. No previous value should exist in normal situation.
-     * However a previous value may exit in unusual (probably not very valid) XML, as in the following example:
+     * However, a previous value may exit in unusual (probably not very valid) XML, as in the following example:
      *
      * {@preformat xml
      *   <cit:CI_Citation>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/package-info.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/package-info.java
index dcb5e4f479..5a20f033b1 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/package-info.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gco/package-info.java
@@ -30,7 +30,7 @@
  *
  * <ul class="verbose">
  *   <li><b>JAXB adapters for primitive types.</b><br>
- *   JAXB can write directly Java primitive type at marshalling time "as is". However ISO 19115-3
+ *   JAXB can write directly Java primitive type at marshalling time "as is". However, ISO 19115-3
  *   requires those values to be wrapped by elements representing the data type.  A role of these
  *   adapters is to add these elements around the value.</li>
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/ObjectFactory.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/ObjectFactory.java
index 241c78d74c..0da6aa1751 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/ObjectFactory.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/ObjectFactory.java
@@ -65,7 +65,7 @@ public class ObjectFactory {
     /**
      * Create an instance of {@code JAXBElement<AbstractGMLType>}}.
      * The type declared in the method signature should be {@code AbstractGMLType}.
-     * However it is declared here as {@code Object} in order to avoid a dependency
+     * However, it is declared here as {@code Object} in order to avoid a dependency
      * toward the GML module.
      *
      * @param  value  the GML {@code AbstractGMLType} value to wrap.
@@ -83,7 +83,7 @@ public class ObjectFactory {
     /**
      * Create an instance of {@code JAXBElement<AbstractGeometryType>}}.
      * The type declared in the method signature should be {@code AbstractGeometryType}.
-     * However it is declared here as {@code Object} in order to avoid a dependency
+     * However, it is declared here as {@code Object} in order to avoid a dependency
      * toward the GML module.
      *
      * @param  value  the {@code AbstractGeometryType} value to wrap.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/package-info.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/package-info.java
index ad7051127b..cd9a66bc1c 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/package-info.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/geometry/package-info.java
@@ -19,7 +19,7 @@
  * JAXB adapters for geometries.
  * This package regroups all adapters mapping GeoAPI interfaces to their SIS
  * implementation. We must use adapters since JAXB cannot annotate interfaces.
- * Consequently the purpose of these adapters is to replace interfaces.
+ * Consequently, the purpose of these adapters is to replace interfaces.
  *
  * <p>Every time JAXB tries to marshal or unmarshal an interface, the adapter
  * will be substituted to that interface.</p>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/package-info.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/package-info.java
index 8c69520e8b..c0aadd781a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/package-info.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gml/package-info.java
@@ -18,7 +18,7 @@
 /**
  * Miscellaneous objects and adapters defined in the {@code "gml"} namespace.
  * This package contains adapters mapping GeoAPI interfaces to their SIS implementation.
- * We must use adapters since JAXB cannot handle interfaces. Consequently the purpose of
+ * We must use adapters since JAXB cannot handle interfaces. Consequently, the purpose of
  * these adapters is to replace arbitrary instances of interfaces by SIS implementations.
  *
  * <p>Every time JAXB try to marshal or unmarshal an instance of an interface,
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gts/TM_PeriodDuration.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gts/TM_PeriodDuration.java
index 7b9ff32c87..29d2e42fd5 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gts/TM_PeriodDuration.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/gts/TM_PeriodDuration.java
@@ -36,7 +36,7 @@ import org.apache.sis.util.SimpleInternationalString;
  * Wraps a {@code gts:TM_PeriodDuration} element.
  *
  * @todo The work done in the {@link #getElement()} and {@link #setElement(Duration)} methods should move
- *       to {@link org.apache.sis.xml.ValueConverter}. However they rely on the {@link org.opengis.temporal}
+ *       to {@link org.apache.sis.xml.ValueConverter}. However, they rely on the {@link org.opengis.temporal}
  *       API in geoapi-pending, which is not very clear... We prefer to hide this for now.
  *
  * @author  Guilhem Legal (Geomatys)
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/LocaleAndCharset.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/LocaleAndCharset.java
index 1d24362413..b4f409c2ac 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/LocaleAndCharset.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/LocaleAndCharset.java
@@ -89,7 +89,7 @@ public final class LocaleAndCharset implements Node {
 
     /**
      * Considers this node as non-editable since it represents the key in a map, and keys cannot be modified
-     * through the {@link Map.Entry} interface. However {@link Child} will be editable for the value column.
+     * through the {@link Map.Entry} interface. However, {@link Child} will be editable for the value column.
      */
     @Override
     public boolean isEditable(final TableColumn<?> column) {
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/OtherLocales.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/OtherLocales.java
index c5aa139357..c3810ecd71 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/OtherLocales.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/OtherLocales.java
@@ -101,7 +101,7 @@ public final class OtherLocales extends AbstractSet<PT_Locale> {
      * only after the first element, so a first element needs to exist.
      *
      * <p>The above rule could be a risk of confusion for the users, since it could cause the apparition of a default
-     * locale which has never been specified. However this risk exists only when invoking the deprecated methods, or
+     * locale which has never been specified. However, this risk exists only when invoking the deprecated methods, or
      * when unmarshalling a XML document having a {@code otherLocale} property without {@code defaultLocale} property,
      * which is probably invalid.</p>
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_FreeText.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_FreeText.java
index 24c97afe10..6b5c0c0233 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_FreeText.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_FreeText.java
@@ -48,7 +48,7 @@ import org.apache.sis.util.ArraysExt;
  *
  * If there is more than one locale, the whole {@code <lan:textGroup>} block is repeated for each
  * locale, instead of repeating {@code <lan:LocalisedCharacterString>} inside the same group as
- * we could expect. However at unmarshalling time, both forms are accepted.
+ * we could expect. However, at unmarshalling time, both forms are accepted.
  *
  * <p>The {@code <gco:CharacterString>} element is inherited from the {@link GO_CharacterString}
  * parent class.</p>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_Locale.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_Locale.java
index b1f234bce8..055abe0401 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_Locale.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/PT_Locale.java
@@ -72,7 +72,7 @@ import org.apache.sis.internal.util.CollectionsExt;
 public final class PT_Locale {
     /**
      * The wrapped locale, for information purpose. This object is not marshalled directly.
-     * Instead it will be decomposed in language and country components in {@link Wrapper}.
+     * Instead, it will be decomposed in language and country components in {@link Wrapper}.
      *
      * @see #getLocale()
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/TextGroup.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/TextGroup.java
index a4da6aa6a2..91fbb4d3bc 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/TextGroup.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/lan/TextGroup.java
@@ -32,7 +32,7 @@ import javax.xml.bind.annotation.XmlElement;
  * marshaller {@link org.apache.sis.xml.XML#LOCALE} property has been set).</p>
  *
  * <p>The {@code TextGroup} name suggests that this object can contain many localized strings.
- * However it appears that despite its name, {@code TextGroup} shall always contains exactly 1
+ * However, it appears that despite its name, {@code TextGroup} shall always contains exactly 1
  * localized strings and the whole {@code TextGroup} element shall be repeated for each additional
  * languages. SIS uses the ISO 19139:2007 compliant form for marshalling, but accepts both forms
  * during unmarshalling. More specifically, the name suggests that the format should be:</p>
@@ -82,7 +82,7 @@ final class TextGroup {
      * {@code <LocalisedCharacterString>} elements inside a single {@code <textGroup>} element.
      *
      * <p>In ISO 19139:2007 compliant documents, the length of this array shall be exactly 1,
-     * as in the second example of class javadoc. However SIS allows arbitrary length
+     * as in the second example of class javadoc. However, SIS allows arbitrary length
      * (as in the first example of class javadoc) for compatibility and convenience reasons.</p>
      */
     @XmlElement(name = "LocalisedCharacterString")
@@ -97,7 +97,7 @@ final class TextGroup {
     /**
      * Constructs a {@linkplain TextGroup text group} for a single locale. This constructor
      * puts exactly one string in the {@code TextGroup}, as required by ISO 19139:2007.
-     * However it would be possible to declare another constructor allowing the more compact form
+     * However, it would be possible to declare another constructor allowing the more compact form
      * (the smaller) if there is a need for that in the future.
      *
      * @param  locale  the string language.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/CI_ResponsibleParty.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/CI_ResponsibleParty.java
index 0b046801f6..328e9fce15 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/CI_ResponsibleParty.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/CI_ResponsibleParty.java
@@ -34,7 +34,7 @@ import org.apache.sis.internal.jaxb.FilterByVersion;
  * See package documentation for more information about JAXB and interface.
  *
  * @deprecated This adapter is not used anymore for ISO 19115-3:2014 metadata.
- * However it is needed for branches that depend on GeoAPI 3.x, and is also needed
+ * However, it is needed for branches that depend on GeoAPI 3.x, and is also needed
  * for implementing web services that have not yet been upgraded to latest ISO standard.
  *
  * @author  Cédric Briançon (Geomatys)
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java
index 6db4127375..0d1cf89dad 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/RS_ReferenceSystem.java
@@ -26,7 +26,7 @@ import org.apache.sis.internal.jaxb.metadata.replace.ReferenceSystemMetadata;
  * JAXB adapter mapping ISO 19111 Coordinate Reference Systems to {@code MD_ReferenceSystem} object used in ISO 19115.
  * Coordinate Reference Systems (CRS) are defined in details by {@link ReferenceSystem} implementation classes.
  * But the ISO 19115 metadata standards do not reference those CRS classes directly (except in one case).
- * Instead the metadata standards reference CRS by their identifier (for example an EPSG code),
+ * Instead, the metadata standards reference CRS by their identifier (for example an EPSG code),
  * optionally accompanied by a code telling whether the CRS type is geographic, projected, temporal,
  * a compound of the above, <i>etc.</i> Those two information are combined in a {@code MD_ReferenceSystem} class
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java
index 4a673a04ab..c526e165ae 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/QualityParameter.java
@@ -53,7 +53,7 @@ import org.opengis.metadata.quality.ValueStructure;
  * <h2>Note about raw-type usage</h2>
  * We use raw type (i.e. we implement {@code ParameterDescriptor} instead of {@code ParameterDescriptor<T>})
  * because there is no way we can know {@code <T>} for sure at unmarshalling time. This is not a recommended
- * practice, so <strong>this class shall not be in public API</strong>.  However it should be okay to create
+ * practice, so <strong>this class shall not be in public API</strong>. However, it should be okay to create
  * {@code QualityParameter} instances in Apache SIS internal code if all methods creating such instances
  * declare {@code ParameterDescriptor<?>} as their return type.
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
index 5e9553e30f..2a98a1a86b 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameter.java
@@ -52,7 +52,7 @@ import static org.apache.sis.internal.util.CollectionsExt.nonNull;
  * <h2>Note about raw-type usage</h2>
  * We use raw type (i.e. we implement {@code ParameterDescriptor} instead of {@code ParameterDescriptor<T>})
  * because there is no way we can know {@code <T>} for sure at unmarshalling time. This is not a recommended
- * practice, so <strong>this class shall not be in public API</strong>.  However it should be okay to create
+ * practice, so <strong>this class shall not be in public API</strong>. However, it should be okay to create
  * {@code ServiceParameter} instances in Apache SIS internal code if all methods creating such instances
  * declare {@code ParameterDescriptor<?>} as their return type.
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java
index c82521e3c0..5690b5fac7 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/jaxb/metadata/replace/package-info.java
@@ -20,11 +20,11 @@
  * but still temporarily used at XML (un)marshalling time for standards compliance.
  *
  * <p>Some objects defined in various standards have overlapping functionalities.
- * For example the Metadata (ISO 19115), Referencing by Coordinates (ISO 19111),
+ * For example, the Metadata (ISO 19115), Referencing by Coordinates (ISO 19111),
  * Data Quality (ISO 19157) and Web Processing Service (WPS) standards all define their own parameter objects.
  * Another example is ISO 19115 defining basic referencing information, which is clearly ISO 19111 work.
  * GeoAPI tries to provide an uniform API by merging objects, or by omitting an object from one standard
- * in favor of the equivalent object of another standard. However at XML (un)marshalling time,
+ * in favor of the equivalent object of another standard. However, at XML (un)marshalling time,
  * we still need to temporarily recreate the omitted object as defined in the original standard.
  * This package is used for such replacement.</p>
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java
index f1af008592..7cfbcb5607 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/Merger.java
@@ -316,7 +316,7 @@ distribute:                 while (it.hasNext()) {
                     }
                 } else {
                     /*
-                     * No @SuppressWarnings("unchecked") because this is really unchecked. However since the two maps
+                     * No @SuppressWarnings("unchecked") because this is really unchecked. However, since the two maps
                      * have been fetched by calls to the same getter method on two org.apache.sis.metadata.iso objects,
                      * the types should.
                      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataTypes.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataTypes.java
index 67a212df3d..a56a0f235a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataTypes.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataTypes.java
@@ -73,7 +73,7 @@ public final class MetadataTypes extends TypeRegistration implements UnaryOperat
      * if the type of the given value is not handled by this method. Current implementation handles all types
      * that may need to be put in the ISO 19115-3 namespace; we have to do that ourself because those classes
      * are not public. Other types may be added if needed, but we do not want to handle too many of them (for
-     * performance reasons). However the list or recognized types shall contain at least {@link Metadata}.
+     * performance reasons). However, the list or recognized types shall contain at least {@link Metadata}.
      *
      * @param  value  the value to marshal.
      * @return the given value as a type that can be marshalled, or {@code null}.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameMeaning.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameMeaning.java
index 6ffc2f3cf7..76493dcd2a 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameMeaning.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/NameMeaning.java
@@ -232,7 +232,7 @@ loop:   for (int p=0; ; p++) {
      * Returns the version of the namespace managed by the given authority.
      * Current Apache SIS implementation searches this information in the {@link Citation#getEdition()} property.
      * This approach is based on the assumption that the authority is some specification document or reference to
-     * a database, not an organization. However this policy may be revisited in any future SIS version.
+     * a database, not an organization. However, this policy may be revisited in any future SIS version.
      *
      * @param  authority  the authority from which to get a version, or {@code null}.
      * @return the version, or {@code null} if none.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
index 9f3de6fb3a..5d0c300aa2 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/sql/Initializer.java
@@ -349,7 +349,7 @@ public abstract class Initializer {
             /*
              * If the database does not exist, create it. We allow creation only if we are inside
              * the $SIS_DATA directory. The Java code creating the schemas is provided in other
-             * SIS modules. For example sis-referencing may create the EPSG dataset.
+             * SIS modules. For example, sis-referencing may create the EPSG dataset.
              */
             if (source instanceof LocalDataSource) {
                 ((LocalDataSource) source).createDatabase();
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java
index 16befeef3f..a3435c1c8d 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/AbstractMetadata.java
@@ -65,7 +65,7 @@ import org.apache.sis.util.collection.TreeTable;
  * <h2>Thread safety</h2>
  * Instances of this class are <strong>not</strong> synchronized for multi-threading.
  * Synchronization, if needed, is caller's responsibility. Note that synchronization locks
- * are not necessarily the metadata instances. For example another common approach is to
+ * are not necessarily the metadata instances. For example, another common approach is to
  * use a single lock for the whole metadata tree (including children).
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -206,7 +206,7 @@ public abstract class AbstractMetadata implements LenientComparable, Emptiable {
      *
      *   <li>{@link org.apache.sis.util.collection.TableColumn#INDEX}<br>
      *       If the metadata property is a collection, then the zero-based index of the element in that collection.
-     *       Otherwise {@code null}. For example in a tree table view of {@code DefaultCitation}, if the
+     *       Otherwise {@code null}. For example, in a tree table view of {@code DefaultCitation}, if the
      *       {@code "alternateTitle"} collection contains two elements, then there is a node with index 0
      *       for the first element and another node with index 1 for the second element.
      *
@@ -235,7 +235,7 @@ public abstract class AbstractMetadata implements LenientComparable, Emptiable {
      *
      * <h4>Write operations</h4>
      * Only the {@code VALUE} column may be writable, with one exception: newly created children need
-     * to have their {@code IDENTIFIER} set before any other operation. For example the following code
+     * to have their {@code IDENTIFIER} set before any other operation. For example, the following code
      * adds a title to a citation:
      *
      * {@preformat java
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataFormat.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataFormat.java
index 30b082fd49..5e77859baa 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataFormat.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataFormat.java
@@ -52,7 +52,7 @@ final class MetadataFormat extends TreeTableFormat {
 
     /**
      * Override the default behavior for <strong>not</strong> moving to next column before writing remarks.
-     * Doing so put too many spaces for large metadata tree. Instead we add spaces in the current column.
+     * Doing so put too many spaces for large metadata tree. Instead, we add spaces in the current column.
      */
     @Override
     protected void writeColumnSeparator(final int nextColumn, final TableAppender out) {
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
index 2b933c419c..e931ee9325 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataStandard.java
@@ -47,7 +47,7 @@ import static org.apache.sis.util.ArgumentChecks.ensureNonNullElement;
 
 /**
  * Enumeration of some metadata standards. A standard is defined by a set of Java interfaces
- * in a specific package or sub-packages. For example the {@linkplain #ISO_19115 ISO 19115}
+ * in a specific package or sub-packages. For example, the {@linkplain #ISO_19115 ISO 19115}
  * standard is defined by <a href="http://www.geoapi.org">GeoAPI</a> interfaces in the
  * {@link org.opengis.metadata} package and sub-packages.
  *
@@ -121,7 +121,7 @@ public class MetadataStandard implements Serializable {
      * should have precedence should be declared first.
      *
      * <p>The current implementation does not yet contains the user-defined instances.
-     * However it may be something that we will need to do in the future.</p>
+     * However, it may be something that we will need to do in the future.</p>
      */
     static final MetadataStandard[] INSTANCES;
 
@@ -186,7 +186,7 @@ public class MetadataStandard implements Serializable {
     /**
      * The dependencies, or {@code null} if none.
      * If non-null, dependencies will be tested in the order they appear in this array.
-     * Consequently if {@link #isMetadata(Class)} may return {@code true} for two or more
+     * Consequently, if {@link #isMetadata(Class)} may return {@code true} for two or more
      * dependencies, then the dependency which should have precedence should be declared first.
      *
      * <p>Note: the {@code null} value is for serialization compatibility.</p>
@@ -208,7 +208,7 @@ public class MetadataStandard implements Serializable {
     /**
      * Creates a new instance working on implementation of interfaces defined in the specified package.
      * If this {@code MetadataStandard} does not support a given class, then the dependencies will be
-     * tested in the order declared to this constructor. Consequently if {@link #isMetadata(Class)} may
+     * tested in the order declared to this constructor. Consequently, if {@link #isMetadata(Class)} may
      * return {@code true} for two or more dependencies, then the dependency which should have precedence
      * should be declared first.
      *
@@ -473,7 +473,7 @@ public class MetadataStandard implements Serializable {
      * <p>If the given class is the return value of a property, then the type of that property should be specified
      * in the {@code key.propertyType} argument. This information allows this method to take in account only types
      * that are assignable to {@code propertyType}, so we can handle classes that implement many metadata interfaces.
-     * For example the {@link org.apache.sis.internal.simple} package have various examples of implementing more than
+     * For example, the {@link org.apache.sis.internal.simple} package have various examples of implementing more than
      * one interface for convenience.</p>
      *
      * <p>This method ignores dependencies. Fallback on metadata standard dependencies shall be done by the caller.</p>
@@ -522,7 +522,7 @@ public class MetadataStandard implements Serializable {
             } else if (IMPLEMENTATION_CAN_ALTER_API) {
                 /*
                  * Found no interface. According to our method contract we should return null.
-                 * However we make an exception if the implementation class has a UML annotation.
+                 * However, we make an exception if the implementation class has a UML annotation.
                  * The reason is that when upgrading  API  from ISO 19115:2003 to ISO 19115:2014,
                  * implementations are provided in Apache SIS before the corresponding interfaces
                  * are published on GeoAPI. The reason why GeoAPI is slower to upgrade is that we
@@ -544,7 +544,7 @@ public class MetadataStandard implements Serializable {
      * <p>If the given class is the return value of a property, then the type of that property should be specified
      * in the {@code propertyType} argument. This information allows this method to take in account only the types
      * that are assignable to {@code propertyType}, so we can handle classes that implement many metadata interfaces.
-     * For example the {@link org.apache.sis.internal.simple} package have various examples of implementing more than
+     * For example, the {@link org.apache.sis.internal.simple} package have various examples of implementing more than
      * one interface for convenience.</p>
      *
      * @see Classes#getAllInterfaces(Class)
@@ -865,7 +865,7 @@ public class MetadataStandard implements Serializable {
      *
      * <h4>Disambiguating instances that implement more than one metadata interface</h4>
      * It is some time convenient to implement more than one interface by the same class.
-     * For example an implementation interested only in extents defined by geographic bounding boxes could implement
+     * For example, an implementation interested only in extents defined by geographic bounding boxes could implement
      * {@link org.opengis.metadata.extent.Extent} and {@link org.opengis.metadata.extent.GeographicBoundingBox}
      * by the same class. In such case, it is necessary to tell to this method which one of those two interfaces
      * shall be reflected in the returned map. This information can be provided by the {@code baseType} argument.
@@ -907,7 +907,7 @@ public class MetadataStandard implements Serializable {
      *
      *   <li>{@link org.apache.sis.util.collection.TableColumn#INDEX}<br>
      *       If the metadata property is a collection, then the zero-based index of the element in that collection.
-     *       Otherwise {@code null}. For example in a tree table view of {@code DefaultCitation}, if the
+     *       Otherwise {@code null}. For example, in a tree table view of {@code DefaultCitation}, if the
      *       {@code "alternateTitle"} collection contains two elements, then there is a node with index 0
      *       for the first element and another node with index 1 for the second element.
      *
@@ -936,7 +936,7 @@ public class MetadataStandard implements Serializable {
      *
      * <h4>Write operations</h4>
      * Only the {@code VALUE} column may be writable, with one exception: newly created children need
-     * to have their {@code IDENTIFIER} set before any other operation. For example the following code
+     * to have their {@code IDENTIFIER} set before any other operation. For example, the following code
      * adds a title to a citation:
      *
      * {@preformat java
@@ -981,13 +981,13 @@ public class MetadataStandard implements Serializable {
     /**
      * Compares the two specified metadata objects.
      * The two metadata arguments shall be implementations of a metadata interface defined by
-     * this {@code MetadataStandard}, otherwise an exception will be thrown. However the two
+     * this {@code MetadataStandard}, otherwise an exception will be thrown. However, the two
      * arguments do not need to be the same implementation class.
      *
      * <h4>Shallow or deep comparisons</h4>
      * This method implements a <em>shallow</em> comparison in that properties are compared by
      * invoking their {@code properties.equals(…)} method without <em>explicit</em> recursive call
-     * to this {@code standard.equals(…)} method for children metadata. However the comparison will
+     * to this {@code standard.equals(…)} method for children metadata. However, the comparison will
      * do <em>implicit</em> recursive calls if the {@code properties.equals(…)} implementations
      * delegate their work to this {@code standard.equals(…)} method, as {@link AbstractMetadata} does.
      * In the latter case, the final result is a deep comparison.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataVisitor.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataVisitor.java
index 1b5ec6e11c..35760f82e5 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataVisitor.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/MetadataVisitor.java
@@ -55,9 +55,9 @@ abstract class MetadataVisitor<R> {
      * The value may be null if the computation is in progress.
      *
      * <h4>The problem</h4>
-     * Cyclic associations can exist in ISO 19115 metadata. For example {@code Instrument} has a reference
+     * Cyclic associations can exist in ISO 19115 metadata. For example, {@code Instrument} has a reference
      * to the platform it is mounted on, and the {@code Platform} has a list of instruments mounted on it.
-     * Consequently walking down the metadata tree can cause infinite recursivity, unless we keep trace of
+     * Consequently, walking down the metadata tree can cause infinite recursivity, unless we keep trace of
      * previously visited metadata objects in order to avoid visiting them again.
      *
      * We use an {@link IdentityHashMap} for that purpose, since the recursivity problem exists only when revisiting
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
index 2e84787860..4563198ae7 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/ModifiableMetadata.java
@@ -222,7 +222,7 @@ public abstract class ModifiableMetadata extends AbstractMetadata {
      * but can be changed by a call to {@link #transitionTo(State)}.
      *
      * <p>{@link State#FINAL} implies that all properties are also final.
-     * This recursivity does not necessarily apply to other states. For example {@link State#EDITABLE}
+     * This recursivity does not necessarily apply to other states. For example, {@link State#EDITABLE}
      * does <strong>not</strong> imply that all {@code ModifiableMetadata} children are also editable.</p>
      *
      * <div class="note"><b>API note:</b>
@@ -269,7 +269,7 @@ public abstract class ModifiableMetadata extends AbstractMetadata {
      *   </tr>
      * </table>
      *
-     * The effect of invoking this method may be recursive. For example transitioning to {@link State#FINAL}
+     * The effect of invoking this method may be recursive. For example, transitioning to {@link State#FINAL}
      * implies transitioning all children {@code ModifiableMetadata} instances to the final state too.
      *
      * @param  target  the desired new state (editable, completable or final).
@@ -710,7 +710,7 @@ public abstract class ModifiableMetadata extends AbstractMetadata {
 
     /**
      * Returns {@code true} if empty collection should be returned as {@code null} value.
-     * This is usually not a behavior that we allow in public API. However this behavior
+     * This is usually not a behavior that we allow in public API. However, this behavior
      * is sometimes desired internally, for example when marshalling with JAXB or when
      * performing a {@code equals}, {@code isEmpty} or {@code prune} operation
      * (for avoiding creating unnecessary collections).
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java
index bd125f2c22..66d591fd63 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyAccessor.java
@@ -129,7 +129,7 @@ class PropertyAccessor {
      * <div class="note"><b>Design note:</b>
      * We could enforce the above-cited restriction with type parameter: if the {@link #type} field is declared
      * as {@code Class<T>}, then this {@code implementation} field would be declared as {@code Class<? extends T>}.
-     * However this is not useful for this internal class because the {@code <T>} type is never known; we have the
+     * However, this is not useful for this internal class because the {@code <T>} type is never known; we have the
      * {@code <?>} type everywhere except in tests, which result in compiler warnings at {@code PropertyAccessor}
      * construction.</div>
      */
@@ -201,7 +201,7 @@ class PropertyAccessor {
      * This map shall be considered as immutable after construction.
      *
      * <p>The keys in this map are both inferred from the method names and fetched from the UML
-     * annotations. Consequently the map may contain many entries for the same value if some
+     * annotations. Consequently, the map may contain many entries for the same value if some
      * method names are different than the UML identifiers.</p>
      *
      * @see #indexOf(String, boolean)
@@ -298,7 +298,7 @@ class PropertyAccessor {
                 name = buffer.toString();
             }
             /*
-             * Note: we want PUBLIC methods only.  For example the referencing module defines
+             * Note: we want PUBLIC methods only.  For example, the referencing module defines
              * setters as private methods for use by JAXB only. We don't want to allow access
              * to those setters.
              */
@@ -733,7 +733,7 @@ class PropertyAccessor {
                  * May happen if the getter method is defined only in the implementation class — not in the interface —
                  * but the given metadata object is an instance of another implementation class than the expected one.
                  * Example: CI_Citation.graphics didn't existed in ISO 19115:2003 and has been added in ISO 19115:2014.
-                 * Consequently there is no Citation.getGraphics() method in GeoAPI 3.0 interfaces (only in GeoAPI 3.1),
+                 * Consequently, there is no Citation.getGraphics() method in GeoAPI 3.0 interfaces (only in GeoAPI 3.1),
                  * but there is a DefaultCitation.getGraphics() method in Apache SIS implementation since some versions
                  * are ahead of GeoAPI. But if the given `metadata` instance is a different implementation of Citation
                  * interface, then attempt to invoke DefaultCitation.getGraphics() fail with IllegalArgumentException.
@@ -798,7 +798,7 @@ class PropertyAccessor {
      * <p>If the given index is out of bounds, then this method does nothing and return {@code null}.
      * We do that because the {@link ValueMap#remove(Object)} method may invoke this method with
      * an index of -1 if the {@link #indexOf(String, boolean)} method didn't found the property name.
-     * However the given value will be silently discarded, so index out-of-bounds shall be used only
+     * However, the given value will be silently discarded, so index out-of-bounds shall be used only
      * in the context of {@code remove} operations (this is not verified).</p>
      *
      * @param  index     the index of the property to set.
@@ -943,7 +943,7 @@ class PropertyAccessor {
      *
      * Adding new values to the previous collection may or may not change the original metadata
      * depending on whether those collections are live or not. In Apache SIS implementation,
-     * those collections are live. However this method can be though as if the collections were
+     * those collections are live. However, this method can be though as if the collections were
      * not live, since the caller will invoke the setter method with the collection anyway.
      *
      * @param  getter       the method to use for fetching the previous value.
@@ -1050,7 +1050,7 @@ class PropertyAccessor {
                 /*
                  * Unsafe addition into a collection. In SIS implementation, the collection is
                  * actually an instance of CheckedCollection, so the check will be performed at
-                 * runtime. However other implementations could use unchecked collection.
+                 * runtime. However, other implementations could use unchecked collection.
                  * There is not much we can do...
                  */
                 // No @SuppressWarnings because this is a real hole.
@@ -1166,7 +1166,7 @@ class PropertyAccessor {
      * Compares the two specified metadata objects. This method implements a <em>shallow</em> comparison,
      * i.e. all metadata properties are compared using their {@code properties.equals(…)} method
      * without explicit calls to this {@code accessor.equals(…)} method for children.
-     * However the final result may still be a deep comparison.
+     * However, the final result may still be a deep comparison.
      *
      * @param  metadata1  the first metadata object to compare. This object determines the accessor.
      * @param  metadata2  the second metadata object to compare.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyComparator.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyComparator.java
index c3d98bb68c..34b7f3bf89 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyComparator.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/PropertyComparator.java
@@ -77,7 +77,7 @@ final class PropertyComparator implements Comparator<Method> {
      *   </li>
      *
      *   <li>Key is associated to an index that specify its position in descending order.
-     *       For example the property associated to integer 0 shall be sorted last.
+     *       For example, the property associated to integer 0 shall be sorted last.
      *       This descending order is only an implementation convenience.</li>
      * </ul>
      */
@@ -286,7 +286,7 @@ final class PropertyComparator implements Comparator<Method> {
 
     /**
      * Removes the {@code "get"} or {@code "is"} prefix and turn the first character after the
-     * prefix into lower case. For example the method name {@code "getTitle"} will be replaced
+     * prefix into lower case. For example, the method name {@code "getTitle"} will be replaced
      * by the property name {@code "title"}. We will perform this operation only if there is
      * at least 1 character after the prefix.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TitleProperty.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TitleProperty.java
index 3c4835e2ce..8a5ceee5d1 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TitleProperty.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TitleProperty.java
@@ -26,7 +26,7 @@ import java.lang.annotation.Documented;
 
 /**
  * Identifies the name of a property to use for summarizing in one line the content of a metadata object.
- * For example in a {@linkplain org.apache.sis.metadata.iso.citation.DefaultCitation citation} instance,
+ * For example, in a {@linkplain org.apache.sis.metadata.iso.citation.DefaultCitation citation} instance,
  * the {@code "title"} property is often the only information that a user needs for a first look.
  * This annotation is used in {@linkplain MetadataStandard#asTreeTable metadata tree views} for producing briefer trees,
  * especially when there is redundant node names.
@@ -56,7 +56,7 @@ import java.lang.annotation.Documented;
  * </div>
  *
  * The property referenced by this annotation should be the main property if possible, but not necessarily
- * since it may be only a label. However the property shall be a singleton ([0…1] or [1…1] multiplicity)
+ * since it may be only a label. However, the property shall be a singleton ([0…1] or [1…1] multiplicity)
  * and cannot be another metadata object.
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
index a37e9e4943..5a2e976991 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNode.java
@@ -149,7 +149,7 @@ class TreeNode implements Node {
      *
      * <p>The purpose of this cache is to avoid invoking (by reflection) the same getter methods
      * twice in common situations like the {@link TreeTableView#toString()} implementation or in
-     * Graphical User Interface. However we may remove this field in any future SIS version if
+     * Graphical User Interface. However, we may remove this field in any future SIS version if
      * experience shows that it is more problematic than helpful.</p>
      */
     transient Object cachedValue;
@@ -383,7 +383,7 @@ class TreeNode implements Node {
          *
          * <p>If the property name is equal, ignoring case, to the simple type name, then this method
          * returns the subtype name (<a href="https://issues.apache.org/jira/browse/SIS-298">SIS-298</a>).
-         * For example instead of:</p>
+         * For example, instead of:</p>
          *
          * {@preformat text
          *   Citation
@@ -618,7 +618,7 @@ class TreeNode implements Node {
                 /*
                  * Unsafe addition into a collection. In SIS implementation, the collection is
                  * actually an instance of CheckedCollection, so the check will be performed at
-                 * runtime. However other implementations could use unchecked collection. We have
+                 * runtime. However, other implementations could use unchecked collection. We have
                  * done our best for converting the type above, there is not much more we can do...
                  */
                 // No @SuppressWarnings because this is a real hole.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java
index 45090edf8f..1199670c68 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/TreeNodeChildren.java
@@ -100,7 +100,7 @@ final class TreeNodeChildren extends AbstractCollection<TreeTable.Node> {
     /**
      * Index of the property to write in the parent node instead of as a child.
      * If a property has the same name than the parent property that contains it,
-     * we write its value in that parent property. For example instead of:
+     * we write its value in that parent property. For example, instead of:
      *
      * {@preformat text
      *   Citation
@@ -203,7 +203,7 @@ final class TreeNodeChildren extends AbstractCollection<TreeTable.Node> {
      *
      * <h4>Implementation note</h4>
      * This method sets the property to {@code null}. This is not strictly correct for collections,
-     * since we should rather set the property to an empty collection. However this approach would
+     * since we should rather set the property to an empty collection. However, this approach would
      * force us to check if the expected collection type is actually a list, a set or any other type.
      * Passing null avoid the type check and is safe at least with SIS implementation. We may revisit
      * later if this appears to be a problem with other implementations.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
index 3984fc53c3..d1161dc6a4 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/DefaultMetadata.java
@@ -416,7 +416,7 @@ public class DefaultMetadata extends ISOMetadata implements Metadata {
      * <h4>Use case</h4>
      * This method is useful before {@linkplain org.apache.sis.xml.XML#marshal(Object) XML marshalling}
      * or serialization, which may not be supported by all implementations.
-     * However the returned metadata is not guaranteed to be {@linkplain State#EDITABLE editable}.
+     * However, the returned metadata is not guaranteed to be {@linkplain State#EDITABLE editable}.
      * For editable metadata, see {@link #deepCopy(Metadata)}.
      *
      * @param  object  the object to get as a SIS implementation, or {@code null} if none.
@@ -434,7 +434,7 @@ public class DefaultMetadata extends ISOMetadata implements Metadata {
      * Returns an editable copy of the given metadata. All children are also copied.
      * This method is more expensive than {@link #castOrCopy(Metadata)} because the
      * copy is unconditional and much deeper.
-     * However the result is guaranteed to be editable.
+     * However, the result is guaranteed to be editable.
      *
      * <h4>Use case</h4>
      * Metadata returned by {@link org.apache.sis.storage.Resource#getMetadata()} are typically unmodifiable.
@@ -547,7 +547,7 @@ public class DefaultMetadata extends ISOMetadata implements Metadata {
      * in ISO 19115-2 compliant XML documents.</p>
      *
      * <p>Each ({@link Locale}, {@link Charset}) entry is equivalent to an instance of ISO 19115 {@code PT_Locale}
-     * class. The language code and the character set are mandatory elements in ISO standard. Consequently this map
+     * class. The language code and the character set are mandatory elements in ISO standard. Consequently, this map
      * should not contain null key or null values, but Apache SIS implementations is tolerant for historical reasons.
      * The same character set may be associated to many languages.</p>
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java
index 0f2316d4c6..515e2ca673 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/Citations.java
@@ -812,7 +812,7 @@ public final class Citations extends Static {
      *
      * <div class="note"><b>Note:</b>
      * This method searches in alternate titles as a fallback because ISO specification said
-     * that those titles are often used for abbreviations. However titles are never searched
+     * that those titles are often used for abbreviations. However, titles are never searched
      * if the given citation contains at least one non-empty and non-deprecated identifier.</div>
      *
      * This method ignores leading and trailing {@linkplain Character#isWhitespace(int) whitespaces}
@@ -856,7 +856,7 @@ public final class Citations extends Static {
      * If non-null, the result is suitable for use as a XML identifier except for a few uncommon characters.
      *
      * <div class="note"><b>Note:</b>
-     * the following characters are invalid in XML identifiers. However since they are valid in Unicode identifiers,
+     * the following characters are invalid in XML identifiers. However, since they are valid in Unicode identifiers,
      * they could be included in the string returned by this method:
      * <ul>
      *   <li>{@code µ}</li>
@@ -890,7 +890,7 @@ public final class Citations extends Static {
             /*
              * First perform a quick check to see if there is any ignorable characters.
              * We make this check because those characters are valid according Unicode
-             * but not according XML. However there is usually no such characters, so
+             * but not according XML. However, there is usually no such characters, so
              * we will avoid the StringBuilder creation in the vast majority of times.
              *
              * Note that 'µ' and its friends are not ignorable, so we do not remove them.
@@ -904,7 +904,7 @@ public final class Citations extends Static {
                     /*
                      * Found an ignorable character. Create the buffer and copy non-ignorable characters.
                      * Following algorithm is inefficient, since we fill the buffer character-by-character
-                     * (a more efficient approach would be to perform bulk appends). However we presume
+                     * (a more efficient approach would be to perform bulk appends). However, we presume
                      * that this block will be rarely executed, so it is not worth to optimize it.
                      */
                     final StringBuilder buffer = new StringBuilder(length - n).append(identifier, 0, i);
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
index ba43d63aad..ab3867444f 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultCitation.java
@@ -54,8 +54,8 @@ import static org.apache.sis.internal.metadata.ImplementationHelper.toMillisecon
  *
  * <h2>Unified identifiers view</h2>
  * The ISO 19115 model provides specific attributes for the {@linkplain #getISBN() ISBN} and
- * {@linkplain #getISSN() ISSN} codes. However the SIS library handles those codes like any
- * other identifiers. Consequently the ISBN and ISSN codes are included in the collection
+ * {@linkplain #getISSN() ISSN} codes. However, the SIS library handles those codes like any
+ * other identifiers. Consequently, the ISBN and ISSN codes are included in the collection
  * returned by {@link #getIdentifiers()}, except at XML marshalling time (for ISO 19115-3 compliance).
  *
  * <h2>Limitations</h2>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
index 892a6eb5e7..5428b27342 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
@@ -415,7 +415,7 @@ public class DefaultResponsibleParty extends DefaultResponsibility implements Re
             }
         }
         /*
-         * If no existing AbstractParty were found, add a new one. However there is no way to know if
+         * If no existing AbstractParty were found, add a new one. However, there is no way to know if
          * it should be an individual or an organization. Arbitrarily choose an individual for now.
          */
         if (newValue != null) {
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
index 947644fd10..65b16098a4 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
@@ -427,7 +427,7 @@ public class DefaultSampleDimension extends DefaultRangeDimension implements Sam
      * <div class="note"><b>Note on XML marshalling:</b>
      * ISO 19115-2 defines this property in {@linkplain DefaultBand a subtype} for historical reasons.
      * Apache SIS moves this property up in the hierarchy since this property can apply to any sample dimension,
-     * not only the measurements in the electromagnetic spectrum. However this property will not appear in XML
+     * not only the measurements in the electromagnetic spectrum. However, this property will not appear in XML
      * documents unless this {@code SampleDimension} is actually a {@code Band}.</div>
      *
      * @return type of transfer function, or {@code null}.
@@ -482,7 +482,7 @@ public class DefaultSampleDimension extends DefaultRangeDimension implements Sam
      * <div class="note"><b>Note on XML marshalling:</b>
      * ISO 19115-2 defines this property in {@linkplain DefaultBand a subtype} for historical reasons.
      * Apache SIS moves this property up in the hierarchy since this property can apply to any sample dimension,
-     * not only the measurements in the electromagnetic spectrum. However this property will not appear in XML
+     * not only the measurements in the electromagnetic spectrum. However, this property will not appear in XML
      * documents unless this {@code SampleDimension} is actually a {@code Band}.</div>
      *
      * @return smallest distance between which separate points can be distinguished, or {@code null}.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java
index 3b37837754..2e300656d4 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultGeographicBoundingBox.java
@@ -89,8 +89,8 @@ import static java.lang.Double.doubleToLongBits;
  * and may use any units of measurement. By contrast, geographic bounding box are restricted to two-dimensional
  * geographic CRS with latitude and longitude in decimal degrees, inside the [-90 … +90]° and [-180 … +180]° range
  * respectively, increasing toward north and east respectively, and longitude measured from the <cite>international
- * reference meridian</cite> (Greenwich on Earth). However {@code GeographicBoundingBox} said nothing about the
- * {@linkplain org.apache.sis.referencing.datum.DefaultGeodeticDatum geodetic datum}. Consequently this bounding
+ * reference meridian</cite> (Greenwich on Earth). However, {@code GeographicBoundingBox} said nothing about the
+ * {@linkplain org.apache.sis.referencing.datum.DefaultGeodeticDatum geodetic datum}. Consequently, this bounding
  * box should be used only as a convenient way to give an <em>approximate</em> description of a location.
  * Users can assume a precision of about 0.01° for the latitude and longitude values in this class.
  * If more precision is desired, an {@code Envelope} should be considered instead.
@@ -650,7 +650,7 @@ public class DefaultGeographicBoundingBox extends AbstractGeographicExtent imple
      * this class is stricter about NaN values than other classes like {@link org.apache.sis.geometry.GeneralEnvelope}.
      * The reason is that computations on {@code GeographicBoundingBox} instances are rare ({@code Envelope} instances
      * are preferred for this purpose). Usually, {@code GeographicBoundingBox} values come directly from some metadata
-     * structure. Consequently NaN values in {@code GeographicBoundingBox} means <cite>"information is unknown"</cite>
+     * structure. Consequently, NaN values in {@code GeographicBoundingBox} means <cite>"information is unknown"</cite>
      * more often than <cite>"not yet calculated"</cite>.</div>
      *
      * @param  box  the geographic bounding box to add to this box.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java
index 251eaeebbe..906b3cb9c9 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/DefaultVerticalExtent.java
@@ -266,7 +266,7 @@ public class DefaultVerticalExtent extends ISOMetadata implements VerticalExtent
      * Sets this vertical extent to the intersection of this extent with the specified one.
      * The {@linkplain org.apache.sis.referencing.crs.DefaultVerticalCRS#getDatum() vertical datum}
      * must be the same (ignoring metadata) for both extents; this method does not perform datum shift.
-     * However this method can perform unit conversions.
+     * However, this method can perform unit conversions.
      *
      * <p>If there is no intersection between the two extents, then this method sets both minimum and
      * maximum values to {@linkplain Double#NaN}. If either this extent or the specified extent has NaN
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java
index 75ecdc85ec..b100ef138f 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/extent/Extents.java
@@ -580,7 +580,7 @@ public final class Extents extends Static {
      *
      * <p>The current implementation performs its computation on the
      * {@linkplain org.apache.sis.referencing.CommonCRS#SPHERE GRS 1980 Authalic Sphere}.
-     * However this may change in any future SIS version.</p>
+     * However, this may change in any future SIS version.</p>
      *
      * @param  box  the geographic bounding box for which to compute the area, or {@code null}.
      * @return an estimation of the area in the given bounding box (m²),
@@ -659,7 +659,7 @@ public final class Extents extends Static {
      * all other kinds are handled as if they were {@code null}.
      *
      * <p>We may improve this method in future Apache SIS version, but it is not yet clear how.
-     * For example how to handle {@link GeographicDescription} or {@link BoundingPolygon}?
+     * For example, how to handle {@link GeographicDescription} or {@link BoundingPolygon}?
      * This method should not be public before we find a better contract.</p>
      */
     static GeographicExtent intersection(final GeographicExtent e1, final GeographicExtent e2) {
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/package-info.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/package-info.java
index c79439a94f..cdbc0c9390 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/package-info.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/package-info.java
@@ -26,7 +26,7 @@
  *
  * <h2>How Metadata are defined</h2>
  * A metadata standard is defined by a set of Java interfaces belonging to a specific package and its sub-packages.
- * For example the ISO 19115 standard is defined by the <a href="http://www.geoapi.org">GeoAPI</a> interfaces
+ * For example, the ISO 19115 standard is defined by the <a href="http://www.geoapi.org">GeoAPI</a> interfaces
  * defined in the {@link org.opengis.metadata} package and sub-packages. That standard is identified in SIS by the
  * {@link org.apache.sis.metadata.MetadataStandard#ISO_19115} constant. Other standards are defined as well,
  * for example the {@link org.apache.sis.metadata.MetadataStandard#ISO_19123} constant stands for the standards
@@ -39,7 +39,7 @@
  * the property name is inferred from the method name like what the <cite>Java Beans</cite> framework does.</p>
  *
  * <p>The implementation classes, if they exist, are defined in different packages than the interfaces.
- * For example the ISO 19115 interfaces, declared in {@link org.opengis.metadata}, are implemented by
+ * For example, the ISO 19115 interfaces, declared in {@link org.opengis.metadata}, are implemented by
  * SIS in {@link org.apache.sis.metadata.iso}. The sub-packages hierarchy is the same, and the names
  * of implementation classes are the name of the implemented interfaces prefixed with {@code Abstract}
  * or {@code Default}.</p>
@@ -79,7 +79,7 @@
  *       {@code UnmodifiableMetadataException}.</li>
  *
  *   <li><b>As a {@link org.apache.sis.util.collection.TreeTable}</b><br>
- *       The metadata are organized as a tree. For example the {@code Citation} metadata contains one or many
+ *       The metadata are organized as a tree. For example, the {@code Citation} metadata contains one or many
  *       {@code ResponsibleParty} elements, each of them containing a {@code Contact} element, which contains
  *       a {@code Telephone} element, <i>etc</i>. For each node, there is many information that can be displayed
  *       in columns:
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/CachedStatement.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/CachedStatement.java
index f8b54ae07e..e020eaae61 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/CachedStatement.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/CachedStatement.java
@@ -131,7 +131,7 @@ final class CachedStatement implements AutoCloseable {
         }
         /*
          * As of Java 10, enumerations have no constants defined in java.sql.Types.
-         * Consequently databases returns an implementation-specific object, e.g.
+         * Consequently, databases returns an implementation-specific object, e.g.
          * org.postgresql.util.PGobject. To avoid implementation-specific code,
          * we are better to get those enumeration values as strings.
          */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java
index 777f62956f..8f4b9b7222 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/Dispatcher.java
@@ -79,7 +79,7 @@ final class Dispatcher implements InvocationHandler {
      *
      * <div class="note"><b>Design note:</b>
      * this field is declared in this {@code Dispatcher} class instead of {@link CachedStatement} because we need
-     * it before a {@code CachedStatement} instance can be found. Furthermore two {@code Dispatcher} instances may
+     * it before a {@code CachedStatement} instance can be found. Furthermore, two {@code Dispatcher} instances may
      * have different {@code preferredIndex} values even if their {@link CachedStatement#type} value is the same,
      * since their {@link #identifier} values are different.</div>
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/IdentifierGenerator.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/IdentifierGenerator.java
index d642578506..0a1ce18fce 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/IdentifierGenerator.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/IdentifierGenerator.java
@@ -34,7 +34,7 @@ import org.apache.sis.internal.metadata.sql.SQLBuilder;
  * The algorithm in this class takes advantage of the fact that alphabetical order is not the same than numerical
  * order for scanning a slightly smaller amount of records (however the gain is significant only in special cases.
  * Generally speaking this class is not for tables having thousands of identifier beginning with the given prefix).
- * However the selected numbers are not guaranteed to be in increasing order if there is "holes" in the sequence of
+ * However, the selected numbers are not guaranteed to be in increasing order if there is "holes" in the sequence of
  * numbers (i.e. if some old records have been deleted). Generating strictly increasing sequence is not a goal of this
  * class, since it would be too costly.</p>
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/LookupInfo.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/LookupInfo.java
index 3c6f7663e4..c02ffe18a7 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/LookupInfo.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/LookupInfo.java
@@ -29,7 +29,7 @@ import org.apache.sis.metadata.MetadataStandard;
  * that the same maps will be used more than once before to move to another metadata object.
  *
  * <p>Each thread shall have its own {@code LastUsedInfo} instance.
- * Consequently there is no need for synchronization in this class.</p>
+ * Consequently, there is no need for synchronization in this class.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/MetadataWriter.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/MetadataWriter.java
index 42bb4bf4da..df5ed676ac 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/MetadataWriter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/MetadataWriter.java
@@ -65,7 +65,7 @@ import org.opengis.util.ControlledVocabulary;
  * invoked.
  *
  * <p>No more than one instance of {@code MetadataWriter} should be used for the same database.
- * However multiple instances of {@code MetadataSource} can be used concurrently with a single
+ * However, multiple instances of {@code MetadataSource} can be used concurrently with a single
  * {@code MetadataWriter} instance on the same database.</p>
  *
  * <h2>Properties</h2>
@@ -345,7 +345,7 @@ public class MetadataWriter extends MetadataSource {
         }
         /*
          * Get the identifier for the new metadata. If no identifier is proposed, we will try to recycle
-         * the identifier of the parent.  For example in ISO 19115, Contact (which contains phone number,
+         * the identifier of the parent.  For example, in ISO 19115, Contact (which contains phone number,
          * etc.) is associated only to Responsibility. So it make sense to use the Responsibility ID for
          * the contact info.
          */
@@ -425,7 +425,7 @@ public class MetadataWriter extends MetadataSource {
                             /*
                              * In a classical object-oriented model, the foreigner key constraints declared in the
                              * parent table would take in account the records in the child table and we would have
-                             * nothing special to do. However PostgreSQL 9.1 does not yet inherit index. So if we
+                             * nothing special to do. However, PostgreSQL 9.1 does not yet inherit index. So if we
                              * detect that a column references some records in two different tables, then we must
                              * suppress the foreigner key constraint.
                              */
@@ -504,7 +504,7 @@ public class MetadataWriter extends MetadataSource {
                         !isCodeList));                          // CASCADE if metadata, RESTRICT if CodeList or Enum.
                 /*
                  * In a classical object-oriented model, the constraint would be inherited by child tables.
-                 * However this is not yet supported as of PostgreSQL 9.6. If inheritance is not supported,
+                 * However, this is not yet supported as of PostgreSQL 9.6. If inheritance is not supported,
                  * then we have to repeat the constraint creation in child tables.
                  */
                 if (!helper.dialect.supportsIndexInheritance && !table.equals(fkey.tableName)) {
@@ -605,7 +605,7 @@ public class MetadataWriter extends MetadataSource {
                             if (!helper.dialect.supportsIndexInheritance) {
                                 /*
                                  * In a classical object-oriented model, the new child table would inherit the index from
-                                 * its parent table. However this is not yet the case as of PostgreSQL 9.6. If the index is
+                                 * its parent table. However, this is not yet the case as of PostgreSQL 9.6. If the index is
                                  * not inherited, then we have to repeat the primary key creation in every child tables.
                                  */
                                 helper.append("(CONSTRAINT ").appendIdentifier(table + "_pkey")
@@ -728,7 +728,7 @@ public class MetadataWriter extends MetadataSource {
         }
         /*
          * At this point we got a suggested identifier, but it may be quite long.
-         * For example it may be a citation title. Try to make an abbreviation.
+         * For example, it may be a citation title. Try to make an abbreviation.
          */
         if (identifier != null && identifier.length() >= 8) {                   // Arbitrary threshold.
             identifier = abbreviation(identifier);
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/TableHierarchy.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/TableHierarchy.java
index 8a80d9cfc1..293aa4bb80 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/TableHierarchy.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/sql/TableHierarchy.java
@@ -26,7 +26,7 @@ import org.apache.sis.util.iso.Types;
  * This features is partially supported in PostgreSQL database.
  *
  * <p>This class is a work around for databases that support table inheritances,
- * but not yet index inheritance. For example in PostgreSQL 9.5.13, we cannot yet declare
+ * but not yet index inheritance. For example, in PostgreSQL 9.5.13, we cannot yet declare
  * a foreigner key to the super table and find the entries in inherited tables that way.</p>
  *
  * <p>An alternative to current workaround would be to repeat a search in all child tables.
@@ -41,7 +41,7 @@ import org.apache.sis.util.iso.Types;
 final class TableHierarchy {
     /**
      * Delimiter characters for the table name in identifier. Table names are prefixed to identifiers only if
-     * the type represented by the table is a subtype. For example since {@code Organisation} is a subtype of
+     * the type represented by the table is a subtype. For example, since {@code Organisation} is a subtype of
      * {@code Party}, identifiers for organizations need to be prefixed by {@code {Organisation}} in order to
      * allow {@code MetadataSource} to know in which table to search for such party.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java
index ae5f1429cd..9c64536115 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/AbstractName.java
@@ -41,8 +41,8 @@ import org.apache.sis.internal.system.DefaultFactories;
  *
  * <p>The easiest way to create a name is to use the {@link Names#createLocalName(CharSequence, String, CharSequence)}
  * convenience static method. That method supports the common case where the name is made only of a
- * (<var>namespace</var>, <var>local part</var>) pair of strings. However generic names allows finer grain.
- * For example the above-cited strings can both be split into smaller name components.
+ * (<var>namespace</var>, <var>local part</var>) pair of strings. However, generic names allows finer grain.
+ * For example, the above-cited strings can both be split into smaller name components.
  * If such finer grain control is desired, {@link DefaultNameFactory} can be used instead of {@link Names}.</p>
  *
  * <h2>Natural ordering</h2>
@@ -255,7 +255,7 @@ public abstract class AbstractName implements GenericName, Serializable {
 
     /**
      * Returns this name expanded with the specified scope. One may represent this operation
-     * as a concatenation of the specified {@code scope} with {@code this}. For example if
+     * as a concatenation of the specified {@code scope} with {@code this}. For example, if
      * {@code this} name is {@code "util.Record"} and the given {@code scope} argument is
      * {@code "org.opengis"}, then {@code this.push(scope)} shall return
      * {@code "org.opengis.util.Record"}.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultLocalName.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultLocalName.java
index 736c35b372..d5adf15572 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultLocalName.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultLocalName.java
@@ -291,7 +291,7 @@ public class DefaultLocalName extends AbstractName implements LocalName {
         if (name instanceof LocalName) {
             /*
              * Note: a previous version was using String.compareToIgnoreCase(String).
-             * However it is slightly slower than String.compareTo(String), increase
+             * However, it is slightly slower than String.compareTo(String), increase
              * the inconsistency with equals(Object), may be more suprising to the
              * developer and result in unsatisfactory ordering for certain locales
              * anyway (we are supposed to use Collator instead).
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java
index 59c743f8d5..a8d2eade67 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultNameSpace.java
@@ -127,7 +127,7 @@ public class DefaultNameSpace implements NameSpace, Serializable {
      * </ul>
      *
      * No other type should be allowed. The main purpose of this map is to hold child namespaces.
-     * However we can (in an opportunist way) handles local names as well. In case of conflict,
+     * However, we can (in an opportunist way) handles local names as well. In case of conflict,
      * the namespace will have precedence.
      *
      * <p>This field is initialized by {@link #init()} soon after {@code DefaultNameSpace} creation
@@ -176,7 +176,7 @@ public class DefaultNameSpace implements NameSpace, Serializable {
 
     /**
      * Converts the given name to its {@link String} representation if that name is not an {@link InternationalString}
-     * instance from which this {@code DefaultNameSpace} implementation can extract useful information. For example if
+     * instance from which this {@code DefaultNameSpace} implementation can extract useful information. For example, if
      * the given name is a {@link SimpleInternationalString}, that international string does not give more information
      * than the {@code String} that it wraps. Using the {@code String} as the canonical value increase the chances that
      * {@link #equals(Object)} detect that two {@code GenericName} instances are equal.
@@ -382,7 +382,7 @@ public class DefaultNameSpace implements NameSpace, Serializable {
      *
      * <p>The {@link #headSeparator} is not inherited by the children on intent, because this
      * method is used only by {@link DefaultScopedName} constructors in order to create a
-     * sequence of parsed local names. For example in {@code "http://www.opengeospatial.org"}
+     * sequence of parsed local names. For example, in {@code "http://www.opengeospatial.org"}
      * the head separator is {@code "://"} for {@code "www"} (which is having this namespace),
      * but it is {@code "."} for all children ({@code "opengeospatial"} and {@code "org"}).</p>
      *
@@ -514,7 +514,7 @@ public class DefaultNameSpace implements NameSpace, Serializable {
      *     println("Expanded form = " + name.scope() + name);
      * }
      *
-     * However the convention followed by this {@code DefaultNameSpace} implementation is not specified in the
+     * However, the convention followed by this {@code DefaultNameSpace} implementation is not specified in the
      * {@link NameSpace} contract. This implementation follows the JCR convention for debugging convenience,
      * but applications needing better guarantees should use {@link Names#toExpandedString(GenericName)} instead.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultRecordSchema.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultRecordSchema.java
index 723c14ae6f..6fe3407151 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultRecordSchema.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/DefaultRecordSchema.java
@@ -67,7 +67,7 @@ import org.apache.sis.internal.util.Strings;
  * types in its {@linkplain #getDescription() description} map. Since each {@code RecordType} has a reference
  * to its schema, serializing a single {@code RecordType} could imply serializing all of them.
  * In order to reduce the risk of unexpected behavior, serialization is currently left to subclasses.
- * For example a subclass may define a {@code Object readResolve()} method (as documented in the
+ * For example, a subclass may define a {@code Object readResolve()} method (as documented in the
  * {@link java.io.Serializable} interface) returning a system-wide static constant for their schema.
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/RecordDefinition.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/RecordDefinition.java
index a4a28087e6..677b6d22ae 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/RecordDefinition.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/RecordDefinition.java
@@ -41,7 +41,7 @@ import org.apache.sis.internal.util.CollectionsExt;
  * <h2>Serialization</h2>
  * This base class is intentionally not serializable, and all private fields are marked as transient for making
  * this decision more visible. This is because the internal details of this class are quite arbitrary, so we do
- * not want to expose them in serialization for compatibility reasons. Furthermore some information are redundant,
+ * not want to expose them in serialization for compatibility reasons. Furthermore, some information are redundant,
  * so a serialization performed by subclasses may be more compact. Serialization of all necessary data shall be
  * performed by subclasses, and the transient fields shall be reconstructed by a call to
  * {@link #computeTransientFields(Map)}.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java
index b88c3f3adb..70660c4c61 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/util/iso/Types.java
@@ -514,7 +514,7 @@ public final class Types extends Static {
      * The package prefix (e.g. {@code "CI_"} in {@code "CI_Citation"}) can be omitted.
      * The flexibility is provided for allowing transition to newer ISO standards,
      * which are dropping the package prefixes.
-     * For example {@code "CS_AxisDirection"} in ISO 19111:2007
+     * For example, {@code "CS_AxisDirection"} in ISO 19111:2007
      * has been renamed {@code "AxisDirection"} in ISO 19111:2018.
      *
      * <p>Only identifiers for the stable part of GeoAPI or for some Apache SIS classes are recognized.
@@ -523,7 +523,7 @@ public final class Types extends Static {
      * <div class="note"><b>Future evolution:</b>
      * when a new ISO type does not yet have a corresponding GeoAPI interface,
      * this method may temporarily return an Apache SIS class instead, until a future version can use the interface.
-     * For example {@code forStandardName("CI_Individual")} returns
+     * For example, {@code forStandardName("CI_Individual")} returns
      * <code>{@linkplain org.apache.sis.metadata.iso.citation.DefaultIndividual}.class</code> in Apache SIS versions
      * that depend on GeoAPI 3.0, but the return type may be changed to {@code Individual.class} when Apache SIS will
      * be upgraded to GeoAPI 3.1.</div>
@@ -664,7 +664,7 @@ public final class Types extends Static {
     /**
      * Returns an international string for the values in the given properties map, or {@code null} if none.
      * This method is used when a property in a {@link java.util.Map} may have many localized variants.
-     * For example the given map may contains a {@code "remarks"} property defined by values associated to
+     * For example, the given map may contains a {@code "remarks"} property defined by values associated to
      * the {@code "remarks_en"} and {@code "remarks_fr"} keys, for English and French locales respectively.
      *
      * <p>If the given map is {@code null}, then this method returns {@code null}.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifiedObject.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifiedObject.java
index 0aab892b7d..2ab996e908 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifiedObject.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifiedObject.java
@@ -44,13 +44,13 @@ import org.opengis.metadata.citation.Citation;
  * <i>etc.</i>) have an explicit single identifier attribute, while other GeoAPI objects
  * ({@link org.opengis.metadata.citation.Citation}, {@link org.opengis.metadata.acquisition.Objective},
  * referencing {@link org.opengis.referencing.IdentifiedObject}, <i>etc.</i>) allow an arbitrary
- * number of identifiers. However GeoAPI does not define explicit methods for handling the {@code id},
+ * number of identifiers. However, GeoAPI does not define explicit methods for handling the {@code id},
  * {@code uuid} or {@code href} attributes, since they are specific to XML marshalling (they do not
  * appear in OGC/ISO abstract specifications). This {@code IdentifiedObject} interface provides a
  * way to handle those identifiers.
  *
  * <p>Note that GeoAPI defines a similar interface, also named {@link org.opengis.referencing.IdentifiedObject}.
- * However that GeoAPI interface is not of general use, since it contains methods like
+ * However, that GeoAPI interface is not of general use, since it contains methods like
  * {@link org.opengis.referencing.IdentifiedObject#toWKT() toWKT()} that are specific to referencing
  * or geometric objects. In addition, the GeoAPI interface defines some attributes
  * ({@linkplain org.opengis.referencing.IdentifiedObject#getName() name},
@@ -119,7 +119,7 @@ public interface IdentifiedObject {
      *   this {@code Map} view.</li>
      *
      *   <li>The map view may also contain more entries than the {@linkplain #getIdentifiers()
-     *   identifier collection}. For example the {@link org.opengis.metadata.citation.Citation}
+     *   identifier collection}. For example, the {@link org.opengis.metadata.citation.Citation}
      *   interface defines separated attributes for ISBN, ISSN and other identifiers. This map
      *   view may choose to unify all those attributes in a single view.</li>
      * </ul>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifierSpace.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifierSpace.java
index 7e4343827b..6416194f23 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifierSpace.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/IdentifierSpace.java
@@ -25,8 +25,8 @@ import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
 /**
  * Some identifier namespaces that are handled in a special way. The identifier namespaces are
  * usually defined as authorities in the {@link org.apache.sis.metadata.iso.citation.Citations}
- * class. However a few identifiers defined in the {@code gco:ObjectIdentification} XML attribute
- * group are handled in a special way. For example identifiers associated to the {@link #HREF}
+ * class. However, a few identifiers defined in the {@code gco:ObjectIdentification} XML attribute
+ * group are handled in a special way. For example, identifiers associated to the {@link #HREF}
  * space are marshalled in the outer property element, as in the example below:
  *
  * {@preformat xml
@@ -61,7 +61,7 @@ public interface IdentifierSpace<T> extends Citation {
      * for internal cross-references. It is not useful by itself as a persistent unique identifier.
      *
      * <p>The XML {@linkplain #getName() attribute name} is {@code "gml:id"}, but is also used
-     * for {@code "gco:id"} in metadata documents. However the {@code "gco:"} prefix is omitted
+     * for {@code "gco:id"} in metadata documents. However, the {@code "gco:"} prefix is omitted
      * in XML documents (i.e. the {@code gco:id} attribute is <cite>unqualified</cite>).</p>
      *
      * <p>Elements with {@code gml:id} or {@code gco:id} attribute can be referenced from other XML elements
@@ -78,12 +78,12 @@ public interface IdentifierSpace<T> extends Citation {
      * that implement ISO 19115 in XML. May be used as a persistent unique identifier, but only
      * available within GMD context.
      *
-     * <p>The XML {@linkplain #getName() attribute name} is {@code "gco:uuid"}. However the
+     * <p>The XML {@linkplain #getName() attribute name} is {@code "gco:uuid"}. However, the
      * {@code "gco:"} prefix is omitted in XML documents (i.e. the {@code gco:uuid} attribute
      * is <cite>unqualified</cite>).</p>
      *
      * <p>Elements with {@code gco:uuid} attribute can be referenced from other XML elements using the
-     * {@code gco:uuidref} attribute. However this is not done automatically by Apache SIS. Users need
+     * {@code gco:uuidref} attribute. However, this is not done automatically by Apache SIS. Users need
      * to manage their set of UUIDs in their own {@link ReferenceResolver} subclass.</p>
      *
      * @see UUID
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObject.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObject.java
index ab21b3c84b..c11933f844 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObject.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObject.java
@@ -20,7 +20,7 @@ package org.apache.sis.xml;
 /**
  * A marker interface for nil XML elements providing an explanation about why the information is absent.
  * GeoAPI getter methods usually return a {@code null} value when no information is available for
- * a given attribute. However it is possible to specify why an information is absent, in which case
+ * a given attribute. However, it is possible to specify why an information is absent, in which case
  * the corresponding getter method will rather return an instance of this {@code NilObject} interface.
  * The information may be absent for various reasons, including the attribute being inapplicable in the metadata context
  * ({@link NilReason#INAPPLICABLE}), the information probably exists but is unknown to the data provider
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/PooledTemplate.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/PooledTemplate.java
index 5bc07446e7..71fc08a0d3 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/PooledTemplate.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/PooledTemplate.java
@@ -71,7 +71,7 @@ final class PooledTemplate extends Pooled {
 
     /**
      * Indirectly invoked by the constructor as a side-effect of {@link #setProperty(String, Object)} implementation
-     * in the super-class This method is not of interest to {@code PooledTemplate}. However as a safety, the above
+     * in the super-class This method is not of interest to {@code PooledTemplate}. However, as a safety, the above
      * {@link #setStandardProperty(String, Object)} method will check that the map contains the value returned here.
      */
     @Override
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformVersion.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformVersion.java
index b35da9592e..5cfb49e3d0 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformVersion.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformVersion.java
@@ -161,8 +161,8 @@ final class TransformVersion {
 
     /**
      * Adds a one-way association from JAXB namespace to XML namespace. Many JAXB namespaces may map
-     * to the same XML namespace. For example most ISO 19115-3:2016 namespaces map to the same legacy
-     * ISO 19139:2007 namespace. Consequently this association is not easily reversible.
+     * to the same XML namespace. For example, most ISO 19115-3:2016 namespaces map to the same legacy
+     * ISO 19139:2007 namespace. Consequently, this association is not easily reversible.
      */
     private void addSurjective(final String jaxb, final String xml) {
         exports.put(jaxb, xml);
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/Transformer.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/Transformer.java
index a0b732e8ff..2c38fef814 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/Transformer.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/Transformer.java
@@ -59,7 +59,7 @@ import org.apache.sis.internal.jaxb.TypeRegistration;
  *
  * <h2>Why using {@code Transformer}</h2>
  * When the XML schemas of an international standard is updated, the URL of the namespace is often modified.
- * For example when GML has been updated from version 3.1 to 3.2, the URL mandated by the international standard
+ * For example, when GML has been updated from version 3.1 to 3.2, the URL mandated by the international standard
  * changed from {@code "http://www.opengis.net/gml"} to {@code "http://www.opengis.net/gml/3.2"}
  * (XML namespaces usually have a version number or publication year - GML before 3.2 were an exception).
  * The problem is that namespaces in JAXB annotations are static. The straightforward solution is
@@ -101,7 +101,7 @@ abstract class Transformer {
     private static final char TARGET_PREFIX = '*';
 
     /**
-     * Character used for separating an old name from the new name. For example in {@code SV_OperationMetadata},
+     * Character used for separating an old name from the new name. For example, in {@code SV_OperationMetadata},
      * {@code "DCP"} in ISO 19139:2007 has been renamed {@code "distributedComputingPlatform"} in ISO 19115-3.
      * This is encoded in {@value TransformingReader#FILENAME} file as {@code "DCP/distributedComputingPlatform"}.
      */
@@ -142,7 +142,7 @@ abstract class Transformer {
     /**
      * List of encountered XML tags, used for backtracking. Elements are removed from this list when they are closed.
      * Names should be the ones we get after conversion from namespaces used in XML document to namespaces used in
-     * JAXB annotations. For example given the following XML, this list should contain {@code cit:CI_Citation},
+     * JAXB annotations. For example, given the following XML, this list should contain {@code cit:CI_Citation},
      * {@code cit:date} and {@code cit:CI_Date} (in that order) when the (un)marshalling reaches the "…" location.
      *
      * {@preformat xml
@@ -432,8 +432,8 @@ abstract class Transformer {
                             TransformedEvent.Type rt = new TransformedEvent.Type(
                                     attribute, originalName, prefix + ':' + localPart);
                             /*
-                             * At this point we got the new value. For example "gmd:PT_FreeText_PropertyType" may
-                             * have been replaced by "lan:PT_FreeText_PropertyType". However we need to verify if
+                             * At this point we got the new value. For example, "gmd:PT_FreeText_PropertyType" may
+                             * have been replaced by "lan:PT_FreeText_PropertyType". However, we need to verify if
                              * the "lan" prefix has been bound to a namespace, otherwise the parsing will fail.
                              */
                             if (!namespace.equals(namespaces.get(prefix))) {
@@ -455,7 +455,7 @@ abstract class Transformer {
 
     /**
      * Returns {@code true} if an element with the given name is an OGC/ISO type (as opposed to property).
-     * For example given the following XML, this method returns {@code true} for {@code cit:CI_Date} but
+     * For example, given the following XML, this method returns {@code true} for {@code cit:CI_Date} but
      * {@code false} for {@code cit:date}:
      *
      * {@preformat xml
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java
index 8049c7832e..871efb90d0 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingNamespaces.java
@@ -127,7 +127,7 @@ class TransformingNamespaces implements NamespaceContext {
         }
 
         /**
-         * Returns an arbitrary prefix for the given namespace. For example given the
+         * Returns an arbitrary prefix for the given namespace. For example, given the
          * {@code "http://standards.iso.org/iso/19115/-3/mdb/1.0"} namespace from ISO 19115-3,
          * this method returns {@code "gmd"} which was the prefix used in legacy ISO 19139:2007.
          *
@@ -154,7 +154,7 @@ class TransformingNamespaces implements NamespaceContext {
 
     /**
      * Returns the namespace for the given prefix. The same URI may be returned for many prefixes.
-     * For example when exporting from ISO 19115-3:2016 to legacy ISO 19139:2007, the {@code "mdb"},
+     * For example, when exporting from ISO 19115-3:2016 to legacy ISO 19139:2007, the {@code "mdb"},
      * {@code "cit"} and many other prefixes are all mapped to {@code "http://www.isotc211.org/2005/gmd"}.
      * This is legal according {@link NamespaceContext} javadoc.
      */
@@ -188,7 +188,7 @@ class TransformingNamespaces implements NamespaceContext {
     }
 
     /**
-     * Returns all prefixes for the given namespace. For example given the {@code "http://www.isotc211.org/2005/gmd"}
+     * Returns all prefixes for the given namespace. For example, given the {@code "http://www.isotc211.org/2005/gmd"}
      * namespace from legacy ISO 19139:2007, this method returns {@code "mdb"}, {@code "cit"} and all other prefixes
      * from the new ISO 19115-3:2016 specification which are used in replacement of the legacy {@code "gmd"} prefix.
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingReader.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingReader.java
index 4ae95fd3a7..1434204913 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingReader.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingReader.java
@@ -76,7 +76,7 @@ final class TransformingReader extends Transformer implements XMLEventReader {
      * </ul>
      *
      * More namespaces may appear depending on the optional module on the classpath.
-     * For example {@code sis-french-profile} adds {@code "http://www.cnig.gouv.fr/2005/fra"}.
+     * For example, {@code sis-french-profile} adds {@code "http://www.cnig.gouv.fr/2005/fra"}.
      */
     private static final Set<String> LEGACY_NAMESPACES = new HashSet<>(12);
 
@@ -304,7 +304,7 @@ final class TransformingReader extends Transformer implements XMLEventReader {
      * Returns the map loaded by {@link #load(boolean, String, Set, int)} if the given namespace is a known legacy namespace.
      * This method returns a non-empty map only for legacy namespaces for which the {@value #FILENAME} file has been designed.
      * This is necessary for avoiding confusion with classes of the same name defined in other standards.
-     * For example the {@code Record} class name is used by other standards like Catalog Service for the Web (OGC CSW),
+     * For example, the {@code Record} class name is used by other standards like Catalog Service for the Web (OGC CSW),
      * and we don't want to replace the namespace of CSW classes.
      *
      * @param  namespace  the namespace URI for which to get the substitution map.
@@ -349,9 +349,9 @@ final class TransformingReader extends Transformer implements XMLEventReader {
      * Converts a namespace read from the XML document to the namespace used by JAXB annotations.
      * This methods can convert the namespace for which there is a bijective mapping, for example
      * {@code "http://www.isotc211.org/2005/gco"} to {@code "http://standards.iso.org/iso/19115/-3/gco/1.0"}.
-     * However some namespaces like {@code "http://www.isotc211.org/2005/gmd"} may be left unchanged,
+     * However, some namespaces like {@code "http://www.isotc211.org/2005/gmd"} may be left unchanged,
      * because that namespace from legacy ISO 19139:2007 can be mapped to many different namespaces
-     * in newer ISO 19115-3:2016 standard. However in some cases the context allows us to determines
+     * in newer ISO 19115-3:2016 standard. However, in some cases the context allows us to determines
      * which newer namespace is used. In such case, that mapping is specified by the
      * ({@code oldURI}, {@code newURI}) pair.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java
index 27cd1e1868..cd78248d80 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/TransformingWriter.java
@@ -443,7 +443,7 @@ final class TransformingWriter extends Transformer implements XMLEventWriter {
     /**
      * A sentinel value in the {@link TransformingWriter#deferred} queue meaning that after reaching this point,
      * we need to reevaluate if the remaining elements should be written immediately of deferred again.
-     * This happen when some elements to move are interleaved. For example in {@code MD_DataIdentification}:
+     * This happen when some elements to move are interleaved. For example, in {@code MD_DataIdentification}:
      *
      * <ol>
      *   <li>{@code topicCategory} needs to move before {@code environmentDescription}</li>
@@ -518,7 +518,7 @@ final class TransformingWriter extends Transformer implements XMLEventWriter {
 
     /**
      * Sets the prefix the URI is bound to. This method replaces the given URI if needed, then forwards the call.
-     * Note that it may result in the same URI to be bound to many prefixes. For example ISO 19115-3:2016 has many
+     * Note that it may result in the same URI to be bound to many prefixes. For example, ISO 19115-3:2016 has many
      * URIs, each with a different prefix ({@code "mdb"}, {@code "cit"}, <i>etc.</i>). But all those URIs may be
      * replaced by the unique URI used in legacy ISO 19139:2007. Since this method does not replace the prefix
      * (it was {@code "gmd"} in ISO 19139:2007), the various ISO 19115-3:2016 prefixes are all bound to the same
@@ -557,8 +557,8 @@ final class TransformingWriter extends Transformer implements XMLEventWriter {
     /**
      * Returns a naming context suitable for consumption by JAXB marshallers.
      * The {@link XMLEventWriter} wrapped by this {@code TransformingWriter} has been created for writing in a file.
-     * Consequently its naming context manages namespaces used in the XML document. But the JAXB marshaller using
-     * this {@code TransformingWriter} facade expects the namespaces declared in JAXB annotations. Consequently this
+     * Consequently, its naming context manages namespaces used in the XML document. But the JAXB marshaller using
+     * this {@code TransformingWriter} facade expects the namespaces declared in JAXB annotations. Consequently, this
      * method returns an adapter that converts namespaces on the fly.
      *
      * @see Event#getNamespaceContext()
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/ValueConverter.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/ValueConverter.java
index ee408163f7..f5b8d3974b 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/ValueConverter.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/ValueConverter.java
@@ -40,7 +40,7 @@ import static org.apache.sis.util.CharSequences.trimWhitespaces;
  * The default implementation is straightforward and documented in the javadoc of each method.
  *
  * <p>This class provides a way to handle the errors which may exist in some XML documents.
- * For example a URL in the document may be malformed, causing a {@link MalformedURLException}
+ * For example, a URL in the document may be malformed, causing a {@link MalformedURLException}
  * to be thrown. If this error is not handled, it will cause the (un)marshalling of the entire
  * document to fail. An application may want to change this behavior by replacing URLs that
  * are known to be erroneous by fixed versions of those URLs. Example:</p>
@@ -100,7 +100,7 @@ public class ValueConverter {
      * @param  context     context (GML version, locale, <i>etc.</i>) of the (un)marshalling process.
      * @param  value       the value that can't be converted.
      * @param  sourceType  the base type of the value to convert. This is determined by the argument type of the method
-     *                     that caught the exception. For example the source type is always {@code URI.class}
+     *                     that caught the exception. For example, the source type is always {@code URI.class}
      *                     if the exception has been caught by the {@link #toURL(MarshalContext, URI)} method.
      * @param  targetType  the expected type of the converted object.
      * @param  exception   the exception that occurred during the conversion attempt.
@@ -117,7 +117,7 @@ public class ValueConverter {
     /**
      * Converts the given locale to a language code. For better compliance with ISO standards, the language code
      * should be a 3-letters ISO 639-2 code (e.g. {@code "jpn"} for {@linkplain Locale#JAPANESE Japanese}).
-     * However those codes may not be available for every locales.
+     * However, those codes may not be available for every locales.
      *
      * <p>The default implementation performs the following steps:</p>
      * <ul>
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java
index 917c6324bf..9cda8ea15e 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java
@@ -97,7 +97,7 @@ public final class XML extends Static {
      * instances. The value for this property shall be an instance of {@link Locale} or a
      * {@link CharSequence} recognized by {@link org.apache.sis.util.Locales#parse(String)}.
      *
-     * <p>This property is mostly for marshallers. However this property can also be used at
+     * <p>This property is mostly for marshallers. However, this property can also be used at
      * unmarshalling time, for example if a {@code <lan:PT_FreeText>} element containing
      * many localized strings need to be represented in a Java {@link String} object. In
      * such case, the unmarshaller will try to pickup a string in the language specified
@@ -161,7 +161,7 @@ public final class XML extends Static {
      *
      * The currently recognized keys are listed below.
      * The entries to be used depend on the {@linkplain #METADATA_VERSION metadata version} to be marshalled.
-     * For example the {@code "cat"} entry is used when marshalling ISO 19115-3:2016 document, while the
+     * For example, the {@code "cat"} entry is used when marshalling ISO 19115-3:2016 document, while the
      * {@code "gmd"} and {@code "gmi"} entries are used when marshalling ISO 19139:2007 documents.
      * The following table gives some typical URLs, with the default URL in bold characters:
      *
@@ -193,7 +193,7 @@ public final class XML extends Static {
      * Note that GML 3.2 is identical to ISO 19136:2007.
      *
      * <div class="note"><b>Compatibility note:</b>
-     * Newer versions typically have more elements, but not always. For example in {@code <gml:VerticalDatum>},
+     * Newer versions typically have more elements, but not always. For example, in {@code <gml:VerticalDatum>},
      * the {@code <gml:verticalDatumType>} property presents in GML 3.0 and 3.1 has been removed in GML 3.2.</div>
      *
      * The value can be {@link String} or {@link Version} object.
@@ -215,7 +215,7 @@ public final class XML extends Static {
      * If no version is specified, then the most recent supported metadata version is assumed.
      *
      * <p>The metadata version may be ignored when the metadata to marshal is inside a GML element.
-     * For example the {@code <gml:domainOfValidity>} element inside a coordinate reference system
+     * For example, the {@code <gml:domainOfValidity>} element inside a coordinate reference system
      * is always marshalled using ISO 19139:2007 if the enclosing element uses GML 3.2 schema.</p>
      *
      * <h4>Supported metadata versions</h4>
@@ -377,7 +377,7 @@ public final class XML extends Static {
      * The pool of marshallers and unmarshallers used by this class.
      * The field name uses the uppercase convention because this field is almost constant:
      * this field is initially null, then created by {@link #getPool()} when first needed.
-     * Once created the field value usually doesn't change. However the field may be reset
+     * Once created the field value usually doesn't change. However, the field may be reset
      * to {@code null} in an OSGi context when modules are loaded or unloaded, because the
      * set of classes returned by {@link TypeRegistration#load(boolean)} may have changed.
      *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/XPointer.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/XPointer.java
index cc6ad1ce2d..4d1e3a3cd5 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/XPointer.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/XPointer.java
@@ -88,7 +88,7 @@ enum XPointer {
         if (f >= 0) {
             /*
              * The fragment should typically be of the form "xpointer(//*[@gml:id='m'])".
-             * However sometimes we found no "xpointer", but directly the unit instead.
+             * However, sometimes we found no "xpointer" but directly the unit instead.
              */
             int i = url.indexOf('(', f);
             if (i >= 0 && regionMatches("xpointer", url, f, i)) {
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/package-info.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/package-info.java
index c078aaf61e..c35cf0b6f8 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/package-info.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/package-info.java
@@ -21,8 +21,8 @@
  * and compliant with GML for referencing objects.
  *
  * <p>The main class in this package is {@link org.apache.sis.xml.XML}, which provides
- * property keys that can be used for configuring (un)marshallers and convenience
- * static methods. For example the following code:</p>
+ * property keys that can be used for configuring (un)marshallers and convenience static methods.
+ * For example, the following code:</p>
  *
  * {@preformat java
  *     XML.marshal(Citations.OGC, System.out);
@@ -46,7 +46,7 @@
  * {@link javax.xml.bind.Marshaller} and {@link javax.xml.bind.Unmarshaller} instances
  * (which are actually wrappers around standard instances). Those instances are created
  * and cached by {@link org.apache.sis.xml.MarshallerPool}, which is used internally by
- * the above-cited {@code XML} class. However developers can instantiate their own
+ * the above-cited {@code XML} class. However, developers can instantiate their own
  * {@code MarshallerPool} in order to get more control on the marshalling and unmarshalling
  * processes, including the namespace URLs and the errors handling.
  *
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/readme.html b/core/sis-metadata/src/main/java/org/apache/sis/xml/readme.html
index ee79708ddf..4b764ce790 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/readme.html
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/readme.html
@@ -48,7 +48,7 @@
           (often because the class has been renamed).</li>
     </ul>
     <p>
-      For example the following snippet from <code>RenameOnImport.lst</code> declares that the <code>Citation.title</code>,
+      For example, the following snippet from <code>RenameOnImport.lst</code> declares that the <code>Citation.title</code>,
       <code>Citation.edition</code> and <code>Address.country</code> properties are defined in the <b><code>cit</code></b> namespace,
       while the <code>Extent.description</code> property is defined in the <b><code>gex</code></b> namespace.
       Those information are required when reading a file encoded by the old standards
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/IdentifiersTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/IdentifiersTest.java
index 38dfb93219..c021e8e2d3 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/IdentifiersTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/IdentifiersTest.java
@@ -97,7 +97,7 @@ public final strictfp class IdentifiersTest extends TestCase {
         assertEquals("ValidIdentifier", Identifiers.getIdentifier(citation, true));
         /*
          * Following test uses '-' in the first identifier, which is an invalid Unicode identifier part.
-         * Consequently the identifier that we get depends on whether we ask for strict Unicode or not.
+         * Consequently, the identifier that we get depends on whether we ask for strict Unicode or not.
          */
         citation = citation("Web Map Server", identifier("OGC", "06-042"), identifier("ISO", "19128"));
         assertEquals("OGC:06-042", Identifiers.getIdentifier(citation, false));
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyConsistencyCheck.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyConsistencyCheck.java
index 1800fc83ef..16d54ff3e2 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyConsistencyCheck.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/PropertyConsistencyCheck.java
@@ -372,7 +372,7 @@ public abstract strictfp class PropertyConsistencyCheck extends AnnotationConsis
                         }
                         /*
                          * Currently, @Dependencies is applied only on deprecated getter methods.
-                         * However this policy may change in future Apache SIS versions.
+                         * However, this policy may change in future Apache SIS versions.
                          */
                         assertTrue(name, name.startsWith("get"));
                         assertTrue(name, method.isAnnotationPresent(Deprecated.class));
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeNodeChildrenTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeNodeChildrenTest.java
index 084cb339ec..4eb499ebe7 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeNodeChildrenTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/TreeNodeChildrenTest.java
@@ -47,7 +47,7 @@ import static org.junit.Assert.*;
  * <h2>Test dependency</h2>
  * This class uses the {@link TreeNode#getUserObject()} method for comparing the values.
  * We can hardly avoid to use some {@code TreeNode} methods because of the cross-dependencies.
- * However we try to use nothing else than {@code getUserObject()} because the purpose of this
+ * However, we try to use nothing else than {@code getUserObject()} because the purpose of this
  * class is not to test {@link TreeNode}.
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -127,7 +127,7 @@ public final strictfp class TreeNodeChildrenTest extends TestCase {
      *        └─Date type…… Creation
      * }
      *
-     * However the tree view should simplify as:
+     * However, the tree view should simplify as:
      *
      * {@preformat text
      *   DefaultCitation
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/APIVerifier.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/APIVerifier.java
index cf61d90347..cb3480a7f7 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/APIVerifier.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/APIVerifier.java
@@ -44,7 +44,7 @@ import static org.junit.Assert.*;
  * The intent is to ensure that we did not forgot an annotation or put the wrong one.
  *
  * <p>The content of the {@code api-changes.properties} files is typically empty on Apache SIS
- * branches that use a snapshot version of GeoAPI, thus making this test a no-op. However the
+ * branches that use a snapshot version of GeoAPI, thus making this test a no-op. However, the
  * {@code api-changes.properties} file content is non-empty on master if the GeoAPI release used
  * by the master branch is behind the snapshot developments.</p>
  *
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/ExtentsTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/ExtentsTest.java
index 1e8a587cc0..7cd8d98a2c 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/ExtentsTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/extent/ExtentsTest.java
@@ -170,7 +170,7 @@ public final strictfp class ExtentsTest extends TestCase {
         /*
          * EPSG:1241    USA - CONUS including EEZ
          * This is only an anti-regression test - the value has not been validated.
-         * However the expected area MUST be greater than the Alaska's one below,
+         * However, the expected area MUST be greater than the Alaska's one below,
          * otherwise SIS will select the wrong datum shift operation over USA!!
          */
         box.setBounds(-129.16, -65.70, 23.82, 49.38);
@@ -179,7 +179,7 @@ public final strictfp class ExtentsTest extends TestCase {
         /*
          * EPSG:2373    USA - Alaska including EEZ    (crossing the anti-meridian).
          * This is only an anti-regression test - the value has not been validated.
-         * However the expected area MUST be smaller than the CONUS's one above.
+         * However, the expected area MUST be smaller than the CONUS's one above.
          */
         box.setBounds(167.65, -129.99, 47.88, 74.71);
         assertTrue(DefaultGeographicBoundingBoxTest.isCrossingAntiMeridian(box));
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java
index a7e960b850..af439952e9 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java
@@ -67,7 +67,7 @@ public final strictfp class DefaultLineageTest extends TestCase {
     /**
      * Tests the marshalling of a {@code "mrl:LI_Source"} element.
      * If this case, the test uses only ISO 19115-1 elements (no ISO 19115-2).
-     * Consequently the XML name shall be {@code "mrl:LI_Source"}.
+     * Consequently, the XML name shall be {@code "mrl:LI_Source"}.
      *
      * @throws JAXBException if an error occurred while marshalling the XML.
      */
@@ -92,7 +92,7 @@ public final strictfp class DefaultLineageTest extends TestCase {
     /**
      * Tests the marshalling of a legacy {@code "gmd:LI_Source"} element.
      * If this case, the test uses only ISO 19115-1 elements (no ISO 19115-2).
-     * Consequently the legacy XML name shall be {@code "gmd:LI_Source"}.
+     * Consequently, the legacy XML name shall be {@code "gmd:LI_Source"}.
      *
      * @throws JAXBException if an error occurred while marshalling the XML.
      */
@@ -118,7 +118,7 @@ public final strictfp class DefaultLineageTest extends TestCase {
     /**
      * Tests the marshalling of a {@code "mrl:LE_Source"} element.
      * This test starts with the same metadata than {@link #testSource()} and adds an
-     * ISO 19115-2 specific property. Consequently the XML name, which was originally
+     * ISO 19115-2 specific property. Consequently, the XML name, which was originally
      * {@code "mrl:LI_Source"}, shall become {@code "mrl:LE_Source"}.
      *
      * @throws JAXBException if an error occurred while marshalling the XML.
@@ -153,7 +153,7 @@ public final strictfp class DefaultLineageTest extends TestCase {
     /**
      * Tests the marshalling of a legacy {@code "gmi:LE_Source"} element.
      * This test starts with the same metadata than {@link #testLegacySource()} and adds
-     * an ISO 19115-2 specific property. Consequently the XML name, which was originally
+     * an ISO 19115-2 specific property. Consequently, the XML name, which was originally
      * {@code "gmd:LI_Source"}, shall become {@code "gmi:LE_Source"}.
      *
      * @throws JAXBException if an error occurred while marshalling the XML.
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
index ebd8da6df4..d24c5ebac8 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
@@ -35,7 +35,7 @@ public final strictfp class DefaultQuantitativeResultTest extends TestCase {
     /**
      * Tests {@link DefaultQuantitativeResult#isEmpty()}. The {@code isEmpty()} method needs a special check
      * for the deprecated {@code "errorStatistic"} property because, contrarily to other deprecated properties,
-     * that one has no replacement. Consequently no non-deprecated property is set as a result of redirection.
+     * that one has no replacement. Consequently, no non-deprecated property is set as a result of redirection.
      * Because by default {@code isEmpty()} ignores deprecated properties,
      * it can cause {@link DefaultQuantitativeResult} to be wrongly considered as empty.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java b/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java
index 29b2912d68..703fb6f0e8 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java
@@ -143,7 +143,7 @@ public strictfp class MetadataAssert extends Assert {
      *
      * <h4>Ignored attributes substitution</h4>
      * For convenience, this method replaces some well known prefixes in the {@code ignoredAttributes}
-     * array by their full namespace URLs. For example this method replaces{@code "xsi:schemaLocation"}
+     * array by their full namespace URLs. For example, this method replaces{@code "xsi:schemaLocation"}
      * by {@code "http://www.w3.org/2001/XMLSchema-instance:schemaLocation"}.
      * If such substitution is not desired, consider using {@link DocumentComparator} directly instead.
      *
@@ -162,7 +162,7 @@ public strictfp class MetadataAssert extends Assert {
      *   <tr><td>gmi</td>    <td>{@value LegacyNamespaces#GMI}</td></tr>
      * </table>
      *
-     * <p>For example in order to ignore the namespace, type and schema location declaration,
+     * <p>For example, in order to ignore the namespace, type and schema location declaration,
      * the following strings can be given to the {@code ignoredAttributes} argument:</p>
      *
      * {@preformat text
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java
index 04bb4c7bad..28ed7b39a0 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java
@@ -119,7 +119,7 @@ public abstract strictfp class AnnotationConsistencyCheck extends TestCase {
 
     /**
      * Returns the SIS implementation class for the given GeoAPI interface.
-     * For example the implementation of the {@link org.opengis.metadata.citation.Citation}
+     * For example, the implementation of the {@link org.opengis.metadata.citation.Citation}
      * interface is the {@link org.apache.sis.metadata.iso.citation.DefaultCitation} class.
      *
      * @param  <T>   the type represented by the {@code type} argument.
@@ -221,7 +221,7 @@ public abstract strictfp class AnnotationConsistencyCheck extends TestCase {
 
     /**
      * Returns the beginning of expected namespace for an element defined by the given UML.
-     * For example the namespace of most types defined by {@link Specification#ISO_19115}
+     * For example, the namespace of most types defined by {@link Specification#ISO_19115}
      * starts with is {@code "http://standards.iso.org/iso/19115/-3/"}.
      *
      * <p>The default implementation recognizes the
@@ -346,7 +346,7 @@ public abstract strictfp class AnnotationConsistencyCheck extends TestCase {
 
     /**
      * Returns the name of the XML type for an interface described by the given UML.
-     * For example in ISO 19115-3, the XML type of {@code CI_Citation} is {@code CI_Citation_Type}.
+     * For example, in ISO 19115-3, the XML type of {@code CI_Citation} is {@code CI_Citation_Type}.
      * The default implementation returns {@link UML#identifier()}, possibly with {@code "Abstract"} prepended,
      * and unconditionally with {@code "_Type"} appended.
      * Subclasses shall override this method when mismatches are known to exist between the UML and XML type names.
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
index bac6174c95..908b307cc8 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
@@ -59,7 +59,7 @@ import static org.apache.sis.util.CharSequences.trimWhitespaces;
  *
  * <p>By default, this comparator expects the documents to contain the same elements and
  * the same attributes (but the order of attributes may be different).
- * However it is possible to:</p>
+ * However, it is possible to:</p>
  *
  * <ul>
  *   <li>Specify whether comments shall be ignored (see {@link #ignoreComments})</li>
@@ -135,7 +135,7 @@ public strictfp class DocumentComparator {
      * <p>Whether the namespace is the full URL or only the prefix depends on whether
      * {@link DocumentBuilderFactory#setNamespaceAware(boolean)} was set to {@code true}
      * or {@code false} respectively before the XML document has been built.
-     * For example in order to ignore the standard {@code "schemaLocation"} attribute:</p>
+     * For example, in order to ignore the standard {@code "schemaLocation"} attribute:</p>
      *
      * <ul>
      *   <li>If {@code NamespaceAware} is {@code true}, then this {@code ignoredAttributes} collection
@@ -149,7 +149,7 @@ public strictfp class DocumentComparator {
      * if the user provided {@link Node} instances to the constructor. In such case, {@code DocumentComparator} has
      * no control on whether the nodes contain namespaces or not.</p>
      *
-     * <p>For example in order to ignore the namespace, type and schema location declaration,
+     * <p>For example, in order to ignore the namespace, type and schema location declaration,
      * the following strings can be added in this set:</p>
      *
      * {@preformat text
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java
index d246e670e6..1543bd470a 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/PackageVerifier.java
@@ -74,7 +74,7 @@ final strictfp class PackageVerifier {
      *
      * <p>Non-ALL values are rare. They happen in a few cases where a property is legacy despite its namespace.
      * Those "properties" are errors in the legacy ISO 19139:2007 schema; they were types without their property
-     * wrappers. For example in {@code SV_CoupledResource}, {@code <gco:ScopedName>} was marshalled without its
+     * wrappers. For example, in {@code SV_CoupledResource}, {@code <gco:ScopedName>} was marshalled without its
      * {@code <srv:scopedName>} wrapper — note the upper and lower-case "s". Because {@code ScopedName} is a type,
      * we had to keep the namespace declared in {@link org.apache.sis.util.iso.DefaultScopedName}
      * (the replacement is performed by {@code org.apache.sis.xml.TransformingWriter}).</p>
@@ -315,7 +315,7 @@ final strictfp class PackageVerifier {
         }
         /*
          * Properties in the legacy GMD or GMI namespaces may be deprecated, depending if a replacement
-         * is already available or not. However properties in other namespaces should not be deprecated.
+         * is already available or not. However, properties in other namespaces should not be deprecated.
          * Some validations of deprecated properties are skipped because we didn't loaded their schema.
          */
         isDeprecatedClass = (LEGACY_NAMESPACES.get(classNS) == ALL);
@@ -418,7 +418,7 @@ final strictfp class PackageVerifier {
         }
         /*
          * We do not verify fully the properties in legacy namespaces because we didn't loaded their schemas.
-         * However we verify at least that those properties are not declared as required.
+         * However, we verify at least that those properties are not declared as required.
          */
         if (LEGACY_NAMESPACES.getOrDefault(ns, Collections.emptySet()).contains(name)) {
             if (!isDeprecatedClass && element.required()) {
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java
index 70b043a17a..58a1df29d6 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java
@@ -47,7 +47,7 @@ import org.apache.sis.util.StringBuilders;
  * an exception will be thrown.
  *
  * <p>Current implementation assumes that XML element name, type name, property name and property type
- * name follow some naming convention. For example type names are suffixed with {@code "_Type"} in OGC
+ * name follow some naming convention. For example, type names are suffixed with {@code "_Type"} in OGC
  * schemas, while property type names are suffixed with {@code "_PropertyType"}.  This class throws an
  * exception if a type does not follow the expected naming convention. This requirement makes
  * implementation easier, by reducing the amount of {@link Map}s that we need to manage.</p>
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
index 74d6acd151..7c7dfb92f3 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
@@ -404,8 +404,8 @@ public abstract strictfp class TestCase extends org.apache.sis.test.TestCase {
 
     /**
      * Performs a simple ISO 19115-3 to ISO 19139:2007 translations using only search-and-replaces.
-     * For example this method replaces {@code "cit"} prefix by {@code "gmd"} and the corresponding
-     * {@value Namespaces#CIT} namespace by {@value LegacyNamespaces#GMD}. However this method does
+     * For example, this method replaces {@code "cit"} prefix by {@code "gmd"} and the corresponding
+     * {@value Namespaces#CIT} namespace by {@value LegacyNamespaces#GMD}. However, this method does
      * not perform any more complex translations like attributes refactored in other classes.  If a
      * more complex translation is required, the test case should provide the legacy XML verbatim
      * in a separated string.
@@ -425,7 +425,7 @@ public abstract strictfp class TestCase extends org.apache.sis.test.TestCase {
             while ((i = buffer.lastIndexOf(toSearch, i)) >= 0) {
                 /*
                  * Following may throw a StringIndexOutOfBoundsException if 'toSearch' is located at the
-                 * beginning (i == 0) or end (end == buffer.length()) of the buffer. However those cases
+                 * beginning (i == 0) or end (end == buffer.length()) of the buffer. However, those cases
                  * should never happen in Apache SIS test cases since it would be invalid XML.
                  */
                 if (!Character.isUnicodeIdentifierPart(buffer.codePointBefore(i))) {
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/Presentation.java b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/Presentation.java
index 580abc5dbc..bad1ba4561 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/Presentation.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/Presentation.java
@@ -36,7 +36,7 @@ import org.opengis.feature.Feature;
  * The preparation of a {@link Presentation} tree before displaying may be done in a background thread.
  *
  * <p>Note that multiple presentations may be generated for the same feature.
- * Consequently many {@code Presentation} instances may encapsulate the same {@link Feature} instance.</p>
+ * Consequently, many {@code Presentation} instances may encapsulate the same {@link Feature} instance.</p>
  *
  * <p>
  * NOTE: this class is a first draft subject to modifications.
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/MultiResolutionCoverageLoader.java b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/MultiResolutionCoverageLoader.java
index 5ea0841a81..997ebdb70b 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/MultiResolutionCoverageLoader.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/MultiResolutionCoverageLoader.java
@@ -48,7 +48,7 @@ import org.apache.sis.io.TableAppender;
  *
  * <h2>Multi-threading</h2>
  * Instances of this class are immutable (except for the cache) and safe for use by multiple threads.
- * However it assumes that the {@link GridCoverageResource} given to the constructor is also thread-safe;
+ * However, it assumes that the {@link GridCoverageResource} given to the constructor is also thread-safe;
  * this class does not synchronize accesses to the resource (because it may be used outside this class anyway).
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/RenderingData.java b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/RenderingData.java
index 22e0ffc3a2..6a34fc1e89 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/RenderingData.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/coverage/RenderingData.java
@@ -94,7 +94,7 @@ import static java.util.logging.Logger.getLogger;
  *       We try to avoid that situation.</li>
  * </ul>
  *
- * Consequently our strategy is to prepare a resampled image for the whole data when the zoom level changed
+ * Consequently, our strategy is to prepare a resampled image for the whole data when the zoom level changed
  * and rely on tiling for reducing actual computations to required tiles. Since pan gestures are expressed
  * in pixel coordinates, the translation terms in {@code resampledToDisplay} transform should stay integers.
  *
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/Canvas.java b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/Canvas.java
index cba0c9f1f1..1f25957381 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/Canvas.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/Canvas.java
@@ -114,7 +114,7 @@ import org.apache.sis.coverage.grid.GridExtent;
  *
  * <p>The point of interest can be expressed in any CRS;
  * it does not need to be the objective CRS or the CRS of any data.
- * However the CRS of that point must have enough dimensions for being convertible to the CRS of all data.
+ * However, the CRS of that point must have enough dimensions for being convertible to the CRS of all data.
  * This rule implies that the number of dimensions of the point of interest is equal or greater than
  * the highest number of dimensions found in data. The purpose is not only to specify which point to show in
  * (typically) the center of the display area, but also to specify which slice to select in all dimensions
@@ -246,7 +246,7 @@ public class Canvas extends Observable implements Localized {
     /**
      * The conversion from {@linkplain #getObjectiveCRS() objective CRS} to the display coordinate system.
      * Conceptually this conversion should never be null (its initial value is the identity conversion).
-     * However subclasses may use a more specialized type such as {@link java.awt.geom.AffineTransform}
+     * However, subclasses may use a more specialized type such as {@link java.awt.geom.AffineTransform}
      * and set this field to {@code null} for recomputing it from the specialized type when requested.
      *
      * @see #OBJECTIVE_TO_DISPLAY_PROPERTY
@@ -669,7 +669,7 @@ public class Canvas extends Observable implements Localized {
      * converted coordinates will be in the CRS given by {@link #getDisplayCRS()}.
      *
      * <p>The <cite>objective to display</cite> conversion changes every time that user zooms
-     * or scrolls on viewed data. However the transform returned by this method is a snapshot
+     * or scrolls on viewed data. However, the transform returned by this method is a snapshot
      * taken at the time this method is invoked; subsequent changes in the <cite>objective to
      * display</cite> conversion are not reflected in the returned transform.</p>
      *
@@ -878,7 +878,7 @@ public class Canvas extends Observable implements Localized {
              * Note 1: in the CoordinateOperationContext used for selecting a MathTransform, the geographic area is
              * still the same but the spatial resolution could be slightly different because computed at a new point
              * of interest. But we cannot use the new point of interest now, because we need the MathTransform for
-             * computing it. However in practice the resolution is often ignored, or does not vary a lot in regions
+             * computing it. However, in practice the resolution is often ignored, or does not vary a lot in regions
              * where it matter. So we assume it is okay to keep the CoordinateOperationContext with old resolution
              * in the following call to `findTransform(…)` or usage of `multidimToObjective`.
              *
@@ -1034,7 +1034,7 @@ public class Canvas extends Observable implements Localized {
      * none of above cited properties is changed. If one of those properties changes (for example
      * if the user zooms or pans the map), then a new grid geometry will be computed. There is no
      * guarantee that the recomputed grid geometry will be similar to the grid geometry specified
-     * to this method. For example the {@link GridExtent} in supplemental dimensions may be different.</p>
+     * to this method. For example, the {@link GridExtent} in supplemental dimensions may be different.</p>
      *
      * @param  newValue  the grid geometry from which to get new canvas properties.
      * @throws RenderException if the given grid geometry cannot be converted to canvas properties.
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/CanvasFollower.java b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/CanvasFollower.java
index ce5071081d..632eaf5500 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/CanvasFollower.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/CanvasFollower.java
@@ -46,7 +46,7 @@ import org.apache.sis.referencing.operation.transform.MathTransforms;
  * A listener of displacements in a source canvas which can reproduce the same displacement in a target canvas.
  * For example if a translation of 100 meters is applied in a source canvas, the same translation (in meters)
  * can be applied in the target canvas. This class does automatically the necessary conversions for taking in
- * account the differences in zoom levels and map projections. For example a translation of 10 pixels in one
+ * account the differences in zoom levels and map projections. For example, a translation of 10 pixels in one
  * canvas may map to a translation of 20 pixels in the other canvas for reproducing the same "real world" translation.
  *
  * <h2>Listeners</h2>
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapItem.java b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapItem.java
index 573619e14c..841fd41000 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapItem.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapItem.java
@@ -28,7 +28,7 @@ import org.opengis.util.InternationalString;
 
 /**
  * Base class of map layer or group of map layers. This base class does not represent graphical elements.
- * Instead it contains information (data and style) for creating a tree of portrayal objects.
+ * Instead, it contains information (data and style) for creating a tree of portrayal objects.
  * A {@code MapItem} contains the following properties:
  *
  * <ul>
@@ -44,7 +44,7 @@ import org.opengis.util.InternationalString;
  * {@code MapItem} instances are not thread-safe. Synchronization, if desired, is caller responsibility.
  *
  * @todo Rename as {@code LayerNode}? "Item" suggests an element in a list, while {@link MapLayers} actually
- *       creates a tree. Furthermore having {@code Layer} in the name would add emphasis that this is a tree
+ *       creates a tree. Furthermore, having {@code Layer} in the name would add emphasis that this is a tree
  *       of layers and not a tree of arbitrary objects.
  *
  * @author  Johann Sorel (Geomatys)
@@ -250,7 +250,7 @@ public abstract class MapItem extends Observable {
      *
      * <p>If this item is a {@code MapLayers}, then hiding this group should hide all components in this group,
      * but without changing the individual {@value #VISIBLE_PROPERTY} property of those components.
-     * Consequently making the group visible again restore each component to the visibility state
+     * Consequently, making the group visible again restore each component to the visibility state
      * it has before the group was hidden (assuming those states have not been changed in other ways).</p>
      *
      * @param  newValue  {@code false} to hide this item and all it's components.
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapLayer.java b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapLayer.java
index b2b97e41e7..54e2e273c5 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapLayer.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/MapLayer.java
@@ -47,7 +47,7 @@ public class MapLayer extends MapItem {
     /**
      * The {@value} property name, used for notifications about changes in map layer resource.
      * The data resource provides the digital data to be rendered. Note that not all kinds of resources
-     * are digital data. For example a resource may be a citation of facts or figures printed on paper,
+     * are digital data. For example, a resource may be a citation of facts or figures printed on paper,
      * photographic material, or other media (see all {@link org.opengis.metadata.citation.PresentationForm}
      * values having the {@code _HARDCOPY} suffix in their name).
      * Associated values should be instances of {@link DataSet} or {@link Aggregate}.
@@ -147,10 +147,10 @@ public class MapLayer extends MapItem {
      * This case may happen with processing or distant services resources.
      *
      * <p>The given resource should be a {@link DataSet} or an {@link Aggregate} of data sets.
-     * However this base class does not enforce those types. Subclasses may restrict the set
+     * However, this base class does not enforce those types. Subclasses may restrict the set
      * of resource types accepted by this method.</p>
      *
-     * <p>Note that not all kinds of resources are digital data. For example a resource may be an organization,
+     * <p>Note that not all kinds of resources are digital data. For example, a resource may be an organization,
      * or citation of facts, tables and figures printed on paper, photographic material, or other media
      * (see all {@link org.opengis.metadata.citation.PresentationForm} values having the {@code _HARDCOPY}
      * suffix in their name). The kind of resources in {@code MapLayer} shall be one of those representing
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/PlanarCanvas.java b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/PlanarCanvas.java
index 27ed26af5f..3d66feaa65 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/PlanarCanvas.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/portrayal/PlanarCanvas.java
@@ -166,7 +166,7 @@ public abstract class PlanarCanvas extends Canvas {
      * Otherwise an {@value #OBJECTIVE_TO_DISPLAY_PROPERTY} property change event will be sent with the
      * {@link TransformChangeEvent.Reason#OBJECTIVE_NAVIGATION} reason after the change became effective.
      * Depending on the implementation, the change may not take effect immediately.
-     * For example subclasses may do the rendering in a background thread.</p>
+     * For example, subclasses may do the rendering in a background thread.</p>
      *
      * @param  before  coordinate conversion to apply before the current <cite>objective to display</cite> transform.
      *
@@ -193,7 +193,7 @@ public abstract class PlanarCanvas extends Canvas {
      * Otherwise an {@value #OBJECTIVE_TO_DISPLAY_PROPERTY} property change event will be sent with the
      * {@link TransformChangeEvent.Reason#DISPLAY_NAVIGATION} reason after the change became effective.
      * Depending on the implementation, the change may not take effect immediately.
-     * For example subclasses may do the rendering in a background thread.</p>
+     * For example, subclasses may do the rendering in a background thread.</p>
      *
      * @param  after  coordinate conversion to apply after the current <cite>objective to display</cite> transform.
      *
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java
index 47be601e20..704d59b8d9 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/FinalLocationType.java
@@ -302,7 +302,7 @@ final class FinalLocationType extends AbstractLocationType implements Serializab
 
     /**
      * Returns the parent location types (location types of which this location type is a sub-division).
-     * A location type can have more than one possible parent. For example the parent of a location type named
+     * A location type can have more than one possible parent. For example, the parent of a location type named
      * <cite>“street”</cite> could be <cite>“locality”</cite>, <cite>“town”</cite> or <cite>“administrative area”</cite>.
      *
      * @return parent location types, or an empty collection if none.
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
index f9c9cfe21f..38a484c4ff 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/MilitaryGridReferenceSystem.java
@@ -141,7 +141,7 @@ import org.opengis.referencing.gazetteer.LocationType;
  *
  * <h2>Immutability and thread safety</h2>
  * This class is immutable and thus thread-safe.
- * However the {@link Coder Coder} instances performing conversions between references and coordinates
+ * However, the {@link Coder Coder} instances performing conversions between references and coordinates
  * are not thread-safe; it is recommended to create a new {@code Coder} instance for each thread.
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -735,7 +735,7 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers {
          *
          * <div class="note"><b>Possible evolution:</b>
          * current implementation does not clip the cells to UPS/UTM valid areas before to test for intersection
-         * with {@code areaOfInterest}. Consequently the iterator may return slightly more cells than expected.
+         * with {@code areaOfInterest}. Consequently, the iterator may return slightly more cells than expected.
          * A future version may filter the cells more accurately. If an application needs the same set of cells
          * than what current the implementation returns, it can invoke <code>{@linkplain #setClipToValidArea
          * setClipToValidArea}(false)</code> for preserving current behavior in future Apache SIS versions.</div>
@@ -761,7 +761,7 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers {
          *
          * <div class="note"><b>Possible evolution:</b>
          * current implementation does not clip the cells to UPS/UTM valid areas before to test for intersection
-         * with {@code areaOfInterest}. Consequently the iterator may return slightly more cells than expected.
+         * with {@code areaOfInterest}. Consequently, the iterator may return slightly more cells than expected.
          * A future version may filter the cells more accurately. If an application needs the same set of cells
          * than what current the implementation returns, it can invoke <code>{@linkplain #setClipToValidArea
          * setClipToValidArea}(false)</code> for preserving current behavior in future Apache SIS versions.</div>
@@ -1119,7 +1119,7 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers {
          *
          * <p>For envelopes that cross the anti-meridian, it does not matter if {@code geographicArea} uses
          * the negative width convention or is expanded to the [-180 … 180]° of longitude range, because it
-         * will be clipped to the projection domain of validity anyway. However the {@code areaOfInterest}
+         * will be clipped to the projection domain of validity anyway. However, the {@code areaOfInterest}
          * should use the negative width convention.</p>
          *
          * @param areaOfInterest  the envelope for which to return MGRS codes. This envelope can be in any CRS.
@@ -1708,7 +1708,7 @@ public class MilitaryGridReferenceSystem extends ReferencingByIdentifiers {
                     if (col < 1 || col > 8) {
                         /*
                          * UTM northing values at the equator range from 166021 to 833979 meters approximately
-                         * (WGS84 ellipsoid). Consequently `cx` ranges from approximately 1.66 to 8.34, so `col`
+                         * (WGS84 ellipsoid). Consequently, `cx` ranges from approximately 1.66 to 8.34, so `col`
                          * should range from 1 to 8 inclusive.
                          */
                         throw new GazetteerException(Errors.format(Errors.Keys.OutsideDomainOfValidity));
@@ -2095,7 +2095,7 @@ parse:                  switch (part) {
              * If we have not yet reached the end of string, parse the numerical location.
              * That location is normally encoded as a single number with an even number of digits.
              * The first half is the easting and the second half is the northing, both relative to the
-             * 100 kilometer square. However some variants of MGRS use a separator, in which case we get
+             * 100 kilometer square. However, some variants of MGRS use a separator, in which case we get
              * two distinct numbers. In both cases, the resolution is determined by the amount of digits.
              */
             final double sx, sy;    // Scale factors for converting MGRS values in to easting and northing in metres.
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java
index b41db1485a..4b06d9a226 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ModifiableLocationType.java
@@ -84,7 +84,7 @@ import org.opengis.referencing.gazetteer.ReferenceSystemUsingIdentifiers;
  * Those mandatory properties are the {@linkplain #getName() name}, {@linkplain #getTheme() theme},
  * {@linkplain #getIdentifications() identifications}, {@linkplain #getDefinition() definition},
  * {@linkplain #getTerritoryOfUse() territory of use} and {@linkplain #getOwner() owner}.
- * However in Apache SIS implementation, only the name is truly mandatory;
+ * However, in Apache SIS implementation, only the name is truly mandatory;
  * SIS is tolerant to missing value for all other properties.
  * But in the hope to improve ISO compliance, values of undefined properties are inherited
  * from the parents (if any) provided that all parents define the same values.
@@ -387,7 +387,7 @@ public class ModifiableLocationType extends AbstractLocationType {      // Not S
 
     /**
      * Returns the parent location types (location types of which this location type is a sub-division).
-     * A location type can have more than one possible parent. For example the parent of a location type named
+     * A location type can have more than one possible parent. For example, the parent of a location type named
      * <cite>“street”</cite> could be <cite>“locality”</cite>, <cite>“town”</cite> or <cite>“administrative area”</cite>.
      *
      * <p>The collection returned by this method is unmodifiable. For adding or removing a parent,
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ReferenceVerifyException.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ReferenceVerifyException.java
index 487eb2b846..8bb0cb6be3 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ReferenceVerifyException.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/ReferenceVerifyException.java
@@ -27,7 +27,7 @@ package org.apache.sis.referencing.gazetteer;
  * </ul>
  *
  * The purpose of those verifications is to perform some error detection.
- * For example it may help to detect if a typo occurred when a user entered a coordinate manually.
+ * For example, it may help to detect if a typo occurred when a user entered a coordinate manually.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.8
diff --git a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/SimpleLocation.java b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/SimpleLocation.java
index 7a98cbd9d6..170b5ad309 100644
--- a/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/SimpleLocation.java
+++ b/core/sis-referencing-by-identifiers/src/main/java/org/apache/sis/referencing/gazetteer/SimpleLocation.java
@@ -33,7 +33,7 @@ import org.apache.sis.util.resources.Errors;
 /**
  * A location described by an unmodifiable direct position that defines the centroid of an envelope.
  * This class encompasses most information in a single object, which make it lightweight to create
- * (less pressure on the garbage collector). However this is not a clear separation of responsibility,
+ * (less pressure on the garbage collector). However, this is not a clear separation of responsibility,
  * so this class should not be in public API.
  *
  * <p>Subclasses <strong>must</strong> override the following methods if the above coordinate reference
diff --git a/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystemTest.java b/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystemTest.java
index 4af4c36307..c3cde9533e 100644
--- a/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystemTest.java
+++ b/core/sis-referencing-by-identifiers/src/test/java/org/apache/sis/referencing/gazetteer/GeohashReferenceSystemTest.java
@@ -139,7 +139,7 @@ public final strictfp class GeohashReferenceSystemTest extends TestCase {
         /*
          * If the length is even, then longitude values have one more bit than latitudes,
          * which compensate for the fact that the range of longitude values is twice the
-         * range of latitude values. Consequently both coordinate values should have the
+         * range of latitude values. Consequently, both coordinate values should have the
          * same precision at equator, and moving to the pole changes only the radius.
          * Otherwise longitude error is twice larger than latitude error. At the pole,
          * the longitude error vanishes and only the latitude error matter.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
index 8a35460acd..105e5686bd 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractDirectPosition.java
@@ -149,7 +149,7 @@ public abstract class AbstractDirectPosition extends FormattableObject implement
      *
      * <p>If this position and the given position have a non-null CRS, then the default implementation
      * requires the CRS to be {@linkplain Utilities#equalsIgnoreMetadata equals (ignoring metadata)},
-     * otherwise a {@code MismatchedReferenceSystemException} is thrown. However subclass may choose
+     * otherwise a {@code MismatchedReferenceSystemException} is thrown. However, subclass may choose
      * to assign the CRS of this position to the CRS of the given position.</p>
      *
      * @param  position  the new position, or {@code null}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
index 600de5d649..3a04dd63f7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/AbstractEnvelope.java
@@ -573,7 +573,7 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      * The length of the returned array depends on the number of dimensions where a
      * {@linkplain org.opengis.referencing.cs.RangeMeaning#WRAPAROUND wraparound} range is found.
      * Typically, wraparound occurs only in the range of longitude values, when the range crosses
-     * the anti-meridian (a.k.a. date line). However this implementation will take in account any
+     * the anti-meridian (a.k.a. date line). However, this implementation will take in account any
      * axis having wraparound {@linkplain CoordinateSystemAxis#getRangeMeaning() range meaning}.
      *
      * <p>Special cases:</p>
@@ -614,7 +614,7 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
                 }
                 if (i >= Long.SIZE) {
                     // Actually the limit in our current implementation is not the number of axes, but the index of
-                    // axes where a wraparound has been found. However we consider that having more than 64 axes in
+                    // axes where a wraparound has been found. However, we consider that having more than 64 axes in
                     // a CRS is unusual enough for not being worth to make the distinction in the error message.
                     throw new IllegalStateException(Errors.format(Errors.Keys.ExcessiveListSize_2, "axis", dimension));
                 }
@@ -686,7 +686,7 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      * ignores the infinite values and returns {@code true}.</div>
      *
      * If {@code isEmpty()} returns {@code false}, then {@link #isAllNaN()} is guaranteed to
-     * also return {@code false}. However the converse is not always true.
+     * also return {@code false}. However, the converse is not always true.
      *
      * @return {@code true} if this envelope is empty.
      *
@@ -1061,7 +1061,7 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      *
      * <div class="note"><b>Note:</b>
      * Relative tolerance values (as opposed to absolute tolerance values) help to workaround the
-     * fact that tolerance value are CRS dependent. For example the tolerance value need to be
+     * fact that tolerance value are CRS dependent. For example, the tolerance value need to be
      * smaller for geographic CRS than for UTM projections, because the former typically has a
      * [-180…180]° range while the latter can have a range of thousands of meters.</div>
      *
@@ -1186,7 +1186,7 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      *
      * <div class="note"><b>Note:</b>
      * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
-     * However it is understood by many software libraries, for example GDAL and PostGIS.</div>
+     * However, it is understood by many software libraries, for example GDAL and PostGIS.</div>
      *
      * This method formats the numbers as with {@link Double#toString(double)} (i.e. without fixed number of fraction digits).
      * The string returned by this method can be {@linkplain GeneralEnvelope#GeneralEnvelope(CharSequence) parsed}
@@ -1249,7 +1249,7 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      *
      * <div class="note"><b>Note:</b>
      * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
-     * However it is understood by many software libraries, for example GDAL and PostGIS.</div>
+     * However, it is understood by many software libraries, for example GDAL and PostGIS.</div>
      *
      * If the coordinate reference system is geodetic or projected, then coordinate values are formatted
      * with a precision equivalent to one centimetre on Earth (the actual number of fraction digits is
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/ArrayEnvelope.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/ArrayEnvelope.java
index 416b40a700..d27ed75799 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/ArrayEnvelope.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/ArrayEnvelope.java
@@ -216,7 +216,7 @@ class ArrayEnvelope extends AbstractEnvelope implements Serializable {
      *     BOX(-180 -90, 180 90)
      * }
      *
-     * However this constructor is lenient to other geometry types like {@code POLYGON}.
+     * However, this constructor is lenient to other geometry types like {@code POLYGON}.
      * See the javadoc of the {@link GeneralEnvelope#GeneralEnvelope(CharSequence) GeneralEnvelope}
      * constructor for more information.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
index df8de582ce..70df514e1d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/CoordinateFormat.java
@@ -165,7 +165,7 @@ public class CoordinateFormat extends CompoundFormat<DirectPosition> {
     /**
      * The declared accuracy on ground, or {@code null} if unspecified. The accuracy applies to the same axes
      * than {@link #groundPrecision}. But contrarily to {@code groundPrecision}, the accuracy does not change
-     * the number of fraction digits used by {@link NumberFormat}. Instead it causes a text such as "± 30 m"
+     * the number of fraction digits used by {@link NumberFormat}. Instead, it causes a text such as "± 30 m"
      * to be appended after the coordinates.
      *
      * @see #accuracyText
@@ -322,7 +322,7 @@ public class CoordinateFormat extends CompoundFormat<DirectPosition> {
      *
      * <p>In addition to conversions required by formatters expecting values in fixed units of measurement,
      * {@code toFormatUnit[i]} may also be non-null for some coordinates formatted as numbers if a different
-     * unit of measurement is desired. For example the converter may be non-null if some coordinates in metres
+     * unit of measurement is desired. For example, the converter may be non-null if some coordinates in metres
      * should be shown in kilometres. In those cases, {@code units[i] != null}.</p>
      *
      * <p>This array is used in slightly different ways at parsing time and formatting time. At formatting time,
@@ -762,7 +762,7 @@ public class CoordinateFormat extends CompoundFormat<DirectPosition> {
      * pattern when formatted as angles.
      *
      * <p>This precision does not have a direct relationship to the precision on the ground.
-     * For example a precision of 0.01 could be one centimeter or 10 meters, depending if
+     * For example, a precision of 0.01 could be one centimeter or 10 meters, depending if
      * the units of measurement in that dimension is meter or kilometer.
      * For a precision related to the ground, use {@link #setGroundPrecision(Quantity)} instead.</p>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java
index bfb01cd5ab..62cd3e0c1f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/DirectPosition2D.java
@@ -43,7 +43,7 @@ import static org.apache.sis.util.ArgumentChecks.ensureDimensionMatches;
  *
  * <div class="note"><b>Note:</b>
  * The rational for avoiding axis orientation restriction is that other {@code DirectPosition} implementations
- * do not have such restriction, and it would be hard to generalize. For example there is no clear "x" or "y"
+ * do not have such restriction, and it would be hard to generalize. For example, there is no clear "x" or "y"
  * classification for North-East direction.</div>
  *
  * <h2>Caution when used in collections</h2>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
index 0297385d64..b4379cf924 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Envelopes.java
@@ -69,7 +69,7 @@ import static org.apache.sis.util.StringBuilders.trimFractionalPart;
  *
  * <h2>Envelope transformations</h2>
  * All {@code transform(…)} methods in this class take in account the curvature of the transformed shape.
- * For example the shape of a geographic envelope (figure below on the left side) is not rectangular in a
+ * For example, the shape of a geographic envelope (figure below on the left side) is not rectangular in a
  * conic projection (figure below on the right side). In order to get the envelope represented by the red
  * rectangle, projecting the four corners of the geographic envelope is not sufficient since we would miss
  * the southerner part.
@@ -112,7 +112,7 @@ public final class Envelopes extends Static {
     /**
      * Fraction of the axis span to accept as close enough to an envelope boundary. This is used for coordinates
      * that are suppose to be on a boundary, for checking if it is really on the boundary side where it should be.
-     * For example on the longitude axis, bounds are -180° and +180° with wraparound meaning and the span is 360°.
+     * For example, on the longitude axis, bounds are -180° and +180° with wraparound meaning and the span is 360°.
      * A {@code SPAN_FRACTION_AS_BOUND} value of 0.25 means that we accept a margin of 0.25 × 360° = 90° on each
      * side: longitudes between -180 and -90 are clipped to the -180° bounds, and longitudes between +180 and +90
      * and clipped to the +180° bounds. We use a large fraction because we use it in contexts where the longitude
@@ -472,7 +472,7 @@ nextPoint:  for (int pointIndex = 0;;) {                // Break condition at th
                 }
                 /*
                  * Get the next point coordinate. The `coordinateIndex` variable is an index in base 3
-                 * having a number of digits equals to the number of source dimensions.  For example a
+                 * having a number of digits equals to the number of source dimensions.  For example, a
                  * 4-D space have indexes ranging from "0000" to "2222" (numbers in base 3). The digits
                  * are then mapped to minimal (0), maximal (1) or central (2) coordinates. The outer loop
                  * stops when the counter roll back to "0000". Note that `targetPt` will be set to value
@@ -534,7 +534,7 @@ nextPoint:  for (int pointIndex = 0;;) {                // Break condition at th
                                             {
                                                 /*
                                                  * At this point, we have determined that adding the extremum point
-                                                 * would expand the envelope. However we will not add that point
+                                                 * would expand the envelope. However, we will not add that point
                                                  * directly because its position may not be quite right (since we
                                                  * used a cubic curve approximation). Instead, we project the point
                                                  * on the envelope border which is located vis-à-vis the extremum.
@@ -623,7 +623,7 @@ nextPoint:  for (int pointIndex = 0;;) {                // Break condition at th
             if (crs != null && !Utilities.equalsIgnoreMetadata(crs, sourceCRS)) {
                 /*
                  * Argument-check: the envelope CRS seems inconsistent with the given operation.
-                 * However we need to push the check a little bit further, since 3D-GeographicCRS
+                 * However, we need to push the check a little bit further, since 3D-GeographicCRS
                  * are considered not equal to CompoundCRS[2D-GeographicCRS + ellipsoidal height].
                  * Checking for identity MathTransform is a more powerfull (but more costly) check.
                  * Since we have the MathTransform, perform an opportunist envelope transform if it
@@ -704,7 +704,7 @@ nextPoint:  for (int pointIndex = 0;;) {                // Break condition at th
             return transformed;
         }
         /*
-         * Checks for singularity points. For example the south pole is a singularity point in
+         * Checks for singularity points. For example, the south pole is a singularity point in
          * geographic CRS because it is located at the maximal value allowed by one particular
          * axis, namely latitude. This point is not a singularity in the stereographic projection,
          * because axes extends toward infinity in all directions (mathematically) and because the
@@ -795,7 +795,7 @@ poles:  for (int i=0; i<dimension; i++) {
                     if (sourceBox.contains(sourcePt)) {
                         /*
                          * The point is inside the source envelope and consequently should be added in the
-                         * transformed envelope. However there is a possible confusion: if the axis that we
+                         * transformed envelope. However, there is a possible confusion: if the axis that we
                          * tested is a wraparound axis, then (for example) +180° and -180° of longitude may
                          * be the same point in source CRS, despite being 2 very different points in target
                          * CRS. We do yet another projection in opposite direction for checking if we really
@@ -1011,8 +1011,8 @@ poles:  for (int i=0; i<dimension; i++) {
 
     /**
      * Returns the bounding box of a geometry defined in <cite>Well Known Text</cite> (WKT) format.
-     * This method does not check the consistency of the provided WKT. For example it does not check
-     * that every points in a {@code LINESTRING} have the same dimension. However this method
+     * This method does not check the consistency of the provided WKT. For example, it does not check
+     * that every points in a {@code LINESTRING} have the same dimension. However, this method
      * ensures that the parenthesis are balanced, in order to catch some malformed WKT.
      *
      * <div class="note"><b>Examples:</b>
@@ -1054,7 +1054,7 @@ poles:  for (int i=0; i<dimension; i++) {
      *
      * <div class="note"><b>Note:</b>
      * The {@code BOX} element is not part of the standard <cite>Well Known Text</cite> (WKT) format.
-     * However it is understood by many software libraries, for example GDAL and PostGIS.</div>
+     * However, it is understood by many software libraries, for example GDAL and PostGIS.</div>
      *
      * The string returned by this method can be {@linkplain GeneralEnvelope#GeneralEnvelope(CharSequence)
      * parsed} by the {@code GeneralEnvelope} constructor.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java
index dc7a3aff05..ff84a23f51 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralDirectPosition.java
@@ -112,12 +112,12 @@ public class GeneralDirectPosition extends AbstractDirectPosition implements Ser
      *
      * <div class="note"><b>Implementation note:</b>
      * the array is not cloned because this is usually not needed, especially in the context of variable
-     * argument lengths since the array is often created implicitly. Furthermore the {@link #coordinates}
+     * argument lengths since the array is often created implicitly. Furthermore, the {@link #coordinates}
      * field is public, so cloning the array would not protect the state of this object anyway.</div>
      *
      * <p><b>Caution:</b> if only one number is specified, make sure that the number type is {@code double},
      * {@code float} or {@code long} otherwise the {@link #GeneralDirectPosition(int)} constructor would be
-     * invoked with a very different meaning. For example for creating a one-dimensional coordinate initialized
+     * invoked with a very different meaning. For example, for creating a one-dimensional coordinate initialized
      * to the coordinate value 100, use <code>new GeneralDirectPosition(100<u>.0</u>)</code>, <strong>not</strong>
      * {@code new GeneralDirectPosition(100)}, because the latter would actually create a position with 100 dimensions.</p>
      *
@@ -148,7 +148,7 @@ public class GeneralDirectPosition extends AbstractDirectPosition implements Ser
      *     POINT(6 10)
      * }
      *
-     * However this constructor is lenient to other types like {@code POINT ZM}.
+     * However, this constructor is lenient to other types like {@code POINT ZM}.
      *
      * @param  wkt  the {@code POINT} or other kind of element to parse.
      * @throws IllegalArgumentException if the given string cannot be parsed.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java
index 130923e9af..23f3b3af19 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/GeneralEnvelope.java
@@ -231,7 +231,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali
      *     BOX(-180 -90, 180 90)
      * }
      *
-     * However this constructor is lenient to other geometry types like {@code POLYGON}.
+     * However, this constructor is lenient to other geometry types like {@code POLYGON}.
      * Actually this constructor ignores the geometry type and just applies the following
      * simple rules:
      *
@@ -243,8 +243,8 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali
      *   <li>The coordinate having the highest dimension determines the dimension of this envelope.</li>
      * </ul>
      *
-     * This constructor does not check the consistency of the provided text. For example it does not
-     * check that every points in a {@code LINESTRING} have the same dimension. However this
+     * This constructor does not check the consistency of the provided text. For example, it does not
+     * check that every points in a {@code LINESTRING} have the same dimension. However, this
      * constructor ensures that the parenthesis are balanced, in order to catch some malformed WKT.
      *
      * <div class="note"><b>Example:</b>
@@ -1051,7 +1051,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali
                         /*
                          * If the range exceed the CS span, then we have to replace it by the
                          * full span, otherwise the range computed by the "else" block is too
-                         * small. The full range will typically be [-180 … 180]°.  However we
+                         * small. The full range will typically be [-180 … 180]°. However, we
                          * make a special case if the two bounds are multiple of the CS span,
                          * typically [0 … 360]°. In this case the [0 … -0]° range matches the
                          * original values and is understood by GeneralEnvelope as a range
@@ -1231,7 +1231,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali
 
     /*
      * We do not provide vertical() and temporal() methods at this time. The interest of one-dimensional envelopes
-     * is not obvious. Furthermore in the vertical case it is not clear when we should do about ellipsoidal height,
+     * is not obvious. Furthermore, in the vertical case it is not clear when we should do about ellipsoidal height,
      * and in the temporal case what we should do with envelopes having 2 temporal axes (as seen in meteorological
      * data). Should we return the two temporal axes in two-dimensional envelopes?
      */
@@ -1241,7 +1241,7 @@ public class GeneralEnvelope extends ArrayEnvelope implements Cloneable, Seriali
      * changes applied on the original envelope is reflected in the sub-envelope view, and conversely.
      *
      * <p>This method is useful for querying and updating only some dimensions.
-     * For example in order to expand only the horizontal component of a four dimensional
+     * For example, in order to expand only the horizontal component of a four dimensional
      * (<var>x</var>,<var>y</var>,<var>z</var>,<var>t</var>) envelope, one can use:</p>
      *
      * {@preformat java
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/ImmutableEnvelope.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/ImmutableEnvelope.java
index ea21cf2b4e..13472deebe 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/ImmutableEnvelope.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/ImmutableEnvelope.java
@@ -142,7 +142,7 @@ public final class ImmutableEnvelope extends ArrayEnvelope implements Serializab
      *     BOX(-180 -90, 180 90)
      * }
      *
-     * However this constructor is lenient to other geometry types like {@code POLYGON}.
+     * However, this constructor is lenient to other geometry types like {@code POLYGON}.
      * See the javadoc of the {@link GeneralEnvelope#GeneralEnvelope(CharSequence) GeneralEnvelope}
      * constructor for more information.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java
index d808e35790..7eec4cbcc7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/Shapes2D.java
@@ -304,7 +304,7 @@ public final class Shapes2D extends Static {
                  *   - s  are coordinate values in the source space (λ or φ)
                  *   - t  are coordinate values in the target space (x or y)
                  *
-                 * They are not necessarily in the same dimension. For example would could have
+                 * They are not necessarily in the same dimension. For example, would could have
                  * s=λ while t=y. This is typically the case when inspecting the top or bottom
                  * line segment of the rectangle.
                  *
@@ -341,7 +341,7 @@ public final class Shapes2D extends Static {
                                 if ((tgtDim == 0) ? (te < xmin || te > xmax) : (te < ymin || te > ymax)) {
                                     /*
                                      * At this point, we have determined that adding the extremum point
-                                     * to the rectangle would have expanded it. However we will not add
+                                     * to the rectangle would have expanded it. However, we will not add
                                      * that point directly, because maybe its position is not quite right
                                      * (since we used a cubic curve approximation). Instead, we project
                                      * the point on the rectangle border which is located vis-à-vis the
@@ -386,7 +386,7 @@ public final class Shapes2D extends Static {
          * with the calculation performed by the more general method working on Envelope. We
          * verified that the same values (coordinate tuples and derivatives) were ultimately
          * passed to the CurveExtremum.resolve(…) method, so we would expect the same result.
-         * However the iteration order is different. The result seems insensitive to iteration
+         * However, the iteration order is different. The result seems insensitive to iteration
          * order most of the time, but not always. However, it seems that the cases were the
          * results are different are the cases where the methods working with CoordinateOperation
          * object wipe out that difference anyway.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java
index f545a35d39..d7948b7eb0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundAdjustment.java
@@ -369,7 +369,7 @@ public class WraparoundAdjustment {
                     /*
                      * Found an axis (typically the longitude axis) with wraparound range meaning.
                      * "Unroll" the range. For example if we have [+160 … -170]° of longitude, we can replace by [160 … 190]°.
-                     * We do not change the `lower` or `upper` value now in order to avoid rounding error. Instead we compute
+                     * We do not change the `lower` or `upper` value now in order to avoid rounding error. Instead, we compute
                      * how many periods we need to add to those values. We adjust the side which results in the value closest
                      * to zero, in order to reduce rounding error if no more adjustment is done in the next block.
                      */
@@ -427,7 +427,7 @@ public class WraparoundAdjustment {
                              *
                              *     (new upper) ≥ validStart
                              *
-                             * That second condition is met by  ⎡upperToValidStart⎤. However adding more may cause the
+                             * That second condition is met by  ⎡upperToValidStart⎤. However, adding more may cause the
                              * range to move the AOI completely on the right side of the domain of validity. We prevent
                              * that with a third condition:
                              *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundInEnvelope.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundInEnvelope.java
index 4c59995f3c..91ec972464 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundInEnvelope.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundInEnvelope.java
@@ -38,7 +38,7 @@ import org.apache.sis.util.ArraysExt;
  *
  * <p>The final result is that envelopes transformed using {@code WraparoundInEnvelope} may be larger
  * than envelopes transformed using {@link WraparoundTransform} but should never be smaller.
- * For example when transforming the following envelope with wraparound on the dashed line:</p>
+ * For example, when transforming the following envelope with wraparound on the dashed line:</p>
  *
  * {@preformat text
  *     ┌─┆───────────────┆───┐           ┆              Envelope to transform.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundMethod.java
index 07c15f6712..2e562562d1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/WraparoundMethod.java
@@ -75,7 +75,7 @@ public enum WraparoundMethod {
      * Envelope represented in a way where "lower" value may be greater than "upper" value.
      * This method can represent envelopes crossing the anti-meridian without the sacrifices imposed by
      * other methods (moving a corner outside the coordinate system domain or expanding the envelope).
-     * However this method can be used only with algorithms designed for handling this representation.
+     * However, this method can be used only with algorithms designed for handling this representation.
      * This is the case of Apache SIS {@link GeneralEnvelope} but often not the case of geometry libraries.
      *
      * <p>This method is said "normalized" because it is the only representation in Apache SIS which is guaranteed to
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
index f4500dbb9a..65f0b11f47 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/geometry/package-info.java
@@ -18,7 +18,7 @@
 /**
  * Basic geometric objects (envelopes and direct positions). Every geometry objects are associated
  * with a {@linkplain org.apache.sis.referencing.crs.AbstractCRS Coordinate Reference System},
- * which may have an arbitrary number of dimensions. However a few specialized classes restrict
+ * which may have an arbitrary number of dimensions. However, a few specialized classes restrict
  * the CRS to a fixed number of dimensions only. The table below summarizes the most common
  * objects, and list the Java2D classes that are conceptually equivalent.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_Conversion.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_Conversion.java
index e42d82f905..aa9f48c136 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_Conversion.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_Conversion.java
@@ -106,7 +106,7 @@ public final class CC_Conversion extends PropertyType<CC_Conversion, Conversion>
     /**
      * Temporarily stores the {@code baseCRS} associated to the given {@code Conversion}.  This temporary storage is
      * needed because {@code org.apache.sis.referencing.crs.AbstractDerivedCRS} does not have any explicit field for
-     * {@code baseCRS}. Instead the base CRS is stored in {@link Conversion#getSourceCRS()}, but we can set this
+     * {@code baseCRS}. Instead, the base CRS is stored in {@link Conversion#getSourceCRS()}, but we can set this
      * property only after the {@code DerivedCRS} coordinate system has been unmarshalled.
      *
      * See {@code AbstractDerivedCRS.afterUnmarshal(Unmarshaller, Object parent)} for more information.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java
index c67f5b7249..2d176c9407 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameter.java
@@ -205,7 +205,7 @@ public final class CC_GeneralOperationParameter extends PropertyType<CC_GeneralO
      * to non-zero value.
      *
      * <p>If the GML document declares explicitly a restricted parameter, maybe it intends to use it with
-     * a non-zero value. Consequently the {@code merge(…)} method will not propagate this restriction.</p>
+     * a non-zero value. Consequently, the {@code merge(…)} method will not propagate this restriction.</p>
      * </div>
      */
     private static boolean isRestricted(final ParameterDescriptor<?> descriptor) {
@@ -362,7 +362,7 @@ public final class CC_GeneralOperationParameter extends PropertyType<CC_GeneralO
         if (isCompatible) {
             /*
              * At this point, we determined that all mandatory parameters in the GML document exist in the `complete`
-             * descriptor. However the converse is not necessarily true. Verify that all parameters missing in the GML
+             * descriptor. However, the converse is not necessarily true. Verify that all parameters missing in the GML
              * document were optional.
              */
             for (final GeneralParameterDescriptor descriptor : complete.descriptors()) {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java
index 5d4ff2f852..b419bc78eb 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationMethod.java
@@ -197,7 +197,7 @@ public final class CC_OperationMethod extends PropertyType<CC_OperationMethod, O
 
     /**
      * Stores the given {@code parameters} into the given {@code addTo} collection.
-     * This method copies only the <em>references</em> if possible. However in some
+     * This method copies only the <em>references</em> if possible. However, in some
      * cases the values may need to be copied in new parameter instances.
      *
      * <div class="note"><b>Note:</b>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java
index efa4df7e1e..15b225cf69 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroup.java
@@ -106,7 +106,7 @@ public final class CC_OperationParameterGroup extends PropertyType<CC_OperationP
      * {@code <gml:OperationParameterGroup>} or {@code <gml:OperationMethod>} element. Those
      * descriptors are said "incomplete" (from SIS point of view) because they are missing the
      * {@link ParameterDescriptor#getValueClass()} property, which does not exist in GML but
-     * is mandatory for us. However an exception to this "incompleteness" happen when SIS has
+     * is mandatory for us. However, an exception to this "incompleteness" happen when SIS has
      * been able to match the {@code <gml:OperationMethod>} parent to one of the predefined
      * operations in the {@link org.apache.sis.internal.referencing.provider} package.</p>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/Code.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/Code.java
index 8d0d693417..48a5d53ad2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/Code.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/jaxb/referencing/Code.java
@@ -189,7 +189,7 @@ public final class Code {
             }
             /*
              * If no "urn:" or "http:" form has been found, try to create a "urn:" form from the first identifier.
-             * For example "EPSG:4326" may be converted to "urn:ogc:def:crs:EPSG:8.2:4326". If the first identifier
+             * For example, "EPSG:4326" may be converted to "urn:ogc:def:crs:EPSG:8.2:4326". If the first identifier
              * cannot be converted to a "urn:" form, then it will be returned as-is.
              */
             if (fallback != null) {
@@ -218,7 +218,7 @@ public final class Code {
                          *
                          * Apache SIS declares IOGP as the codespace of the EPSG codespace, i.e. the identifier of the
                          * EPSG authority is "IOGP:EPSG". So the code below searches for the "IOGP" part of the above.
-                         * However there is no indication at this time that objects from other sources than SIS would
+                         * However, there is no indication at this time that objects from other sources than SIS would
                          * follow such convention, so we also keep a hard-coded "IOGP" default value for now.
                          *
                          * A symmetrical special handling for EPSG is done in the 'getIdentifier()' method of this class.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/AxisDirections.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/AxisDirections.java
index 1ce30a6e87..ad85a6176a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/AxisDirections.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/AxisDirections.java
@@ -583,7 +583,7 @@ next:       for (int i=0; i <= limit; i++) {
     /**
      * Returns whether the second axis is colinear with the first axis. This method returns {@code true}
      * if the {@linkplain #absolute absolute} direction of the given directions are equal.
-     * For example "down" is considered colinear with "up".
+     * For example, "down" is considered colinear with "up".
      *
      * @param  d1  the first axis direction to compare.
      * @param  d2  the second axis direction to compare.
@@ -623,7 +623,7 @@ next:       for (int i=0; i <= limit; i++) {
      *
      * <ul>
      *   <li>Comparisons are case-insensitive.</li>
-     *   <li>Any character which is not a letter or a digit is ignored. For example {@code "NorthEast"},
+     *   <li>Any character which is not a letter or a digit is ignored. For example, {@code "NorthEast"},
      *       {@code "North-East"} and {@code "NORTH_EAST"} are considered equivalent.</li>
      *   <li>This method accepts abbreviations as well, for example if the given {@code name} is {@code "W"},
      *       then it will be considered equivalent to {@code "WEST"}.</li>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
index 6b35432951..daeef71fe4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/CoordinateOperations.java
@@ -67,7 +67,7 @@ public final class CoordinateOperations extends SystemListener {
      * {@link org.apache.sis.referencing.operation.DefaultConversion#getParameterValues()}.
      * It is usually not necessary to specify those parameters because they are inferred either from the
      * {@link org.opengis.referencing.operation.MathTransform}, or specified explicitly in a {@code DefiningConversion}.
-     * However there is a few cases, for example the Molodenski transform, where none of the above can apply,
+     * However, there is a few cases, for example the Molodenski transform, where none of the above can apply,
      * because SIS implements those operations as a concatenation of math transforms,
      * and such concatenations do not have {@link org.opengis.parameter.ParameterValueGroup}.
      */
@@ -77,7 +77,7 @@ public final class CoordinateOperations extends SystemListener {
      * The key for specifying the base type of the coordinate operation to create. This optional entry
      * is used by {@code DefaultCoordinateOperationFactory.createSingleOperation(…)}. Apache SIS tries
      * to infer this value automatically, but this entry may help SIS to perform a better choice in
-     * some cases. For example an "Affine" operation can be both a conversion or a transformation
+     * some cases. For example, an "Affine" operation can be both a conversion or a transformation
      * (the latter is used in datum shift in geocentric coordinates).
      */
     public static final String OPERATION_TYPE_KEY = "operationType";
@@ -323,7 +323,7 @@ public final class CoordinateOperations extends SystemListener {
              * efficiency, with the bits of dimensions to consider set to 1.
              *
              * Note: a previous version was creating a list of "wraparound" axes only. We removed that filter
-             * because a target wraparound axis may match a source infinite axis. For example when converting
+             * because a target wraparound axis may match a source infinite axis. For example, when converting
              * dates on a temporal axis (with infinite span toward past and future) to months on a climatology
              * axis (January to December months without year), the same cycle is repeated after every 12 months
              * even if the source axis had no cycle.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DatabaseListener.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DatabaseListener.java
index 6d095d9471..e4b3ed3b28 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DatabaseListener.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DatabaseListener.java
@@ -51,7 +51,7 @@ public final class DatabaseListener extends Initializer {
     /**
      * Invoked when a new database is created. The current Apache SIS version does not create the EPSG database
      * immediately. We rather rely on automatic installation by {@code EPSGInstaller} the first time that a CRS
-     * is requested. However we may revisit this policy in a future SIS version.
+     * is requested. However, we may revisit this policy in a future SIS version.
      *
      * @param  connection  connection to the empty database.
      * @throws SQLException if an error occurred while populating the database.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java
index ebdae49d41..e7472718cb 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Formulas.java
@@ -45,7 +45,7 @@ public final class Formulas extends Static {
      *
      * <h4>Maintenance</h4>
      * If this value is modified, then all usages of this constant should be verified.
-     * Some usages may need to be compensated. For example {@code GeodesicsOnEllipsoid}
+     * Some usages may need to be compensated. For example, {@code GeodesicsOnEllipsoid}
      * uses a millimetric precision by dividing the tolerance by 10 or more. We way want
      * to keep the same precision there even if {@code LINEAR_TOLERANCE} was made smaller.
      *
@@ -248,7 +248,7 @@ public final class Formulas extends Static {
      *
      * <h4>Caution</h4>
      * We may not need the full {@code Math.hypot(x,y)} accuracy in the context of map projections on ellipsoids.
-     * However some projection formulas require that {@code fastHypot(x,y) ≥ max(|x|,|y|)}, otherwise normalizations
+     * However, some projection formulas require that {@code fastHypot(x,y) ≥ max(|x|,|y|)}, otherwise normalizations
      * such as {@code x/hypot(x,y)} could result in values larger than 1, which in turn result in {@link Double#NaN}
      * when given to {@link Math#asin(double)}. The assumption on x, y and {@code sqrt(x²+y²)} relative magnitude is
      * broken when x=0 and |y| ≤ 1.4914711209038602E-154 or conversely. This method does not check for such cases;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/GeodeticObjectBuilder.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/GeodeticObjectBuilder.java
index afd4db6711..b1ca5ec52f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/GeodeticObjectBuilder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/GeodeticObjectBuilder.java
@@ -69,7 +69,7 @@ import org.apache.sis.parameter.Parameters;
  * Reusing the same builder for creating many CRS has unspecified behavior.
  *
  * <p>For now, this class is defined in the internal package because this API needs more experimentation.
- * However this class may move in a public package later if we feel confident that its API is mature enough.</p>
+ * However, this class may move in a public package later if we feel confident that its API is mature enough.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.3
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/LazySet.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/LazySet.java
index d41cff3393..91d24bba4a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/LazySet.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/LazySet.java
@@ -195,7 +195,7 @@ public class LazySet<E> extends SetOfUnknownSize<E> {
 
     /**
      * Returns the next element from the given iterator. Default implementation returns {@link Iterator#next()}.
-     * Subclasses may override if they need to apply additional processing. For example this method can be used
+     * Subclasses may override if they need to apply additional processing. For example, this method can be used
      * for skipping data, but this approach works only if we have the guarantee that another element exists after
      * the skipped one (because {@code LazySet} will not invoke {@link Iterator#hasNext()} again).
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/PositionTransformer.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/PositionTransformer.java
index a377646c74..b4e10bf172 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/PositionTransformer.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/PositionTransformer.java
@@ -54,7 +54,7 @@ import org.apache.sis.util.Utilities;
  * </ul>
  *
  * This class should not appear in a public API. It is used as a helper private field in more complex classes.
- * For example suppose that {@code MyClass} needs to perform its internal working in some particular CRS,
+ * For example, suppose that {@code MyClass} needs to perform its internal working in some particular CRS,
  * but we want robust API accepting whatever CRS the client uses. {@code MyClass} can be written as below:
  *
  * {@preformat java
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java
index 0c28dcb830..e3f7c83b27 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/RTreeNode.java
@@ -42,7 +42,7 @@ import org.apache.sis.util.collection.DefaultTreeTable;
  * (the list is implemented by the {@link #sibling} field, which reference the next element in the list).</p>
  *
  * <div class="note"><b>Possible evolution:</b>
- * a future version could avoid extending {@link GeneralEnvelope}. Instead we could provide abstract
+ * a future version could avoid extending {@link GeneralEnvelope}. Instead, we could provide abstract
  * {@code contains(…)} methods and let subclasses define them, with possibly more efficient implementations.
  * We would still need an implementation that delegate to {@link GeneralEnvelope} since that class has the
  * advantage of handling envelopes crossing the anti-meridian.</div>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java
index 4c41a86e84..9611d5544f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.java
@@ -416,7 +416,7 @@ public final class Resources extends IndexedResourceBundle {
         public static final short NoConvergenceForPoints_2 = 47;
 
         /**
-         * No ‘{1}’ object found for code “{2}”. However only a subset of the {0} geodetic dataset has
+         * No ‘{1}’ object found for code “{2}”. However, only a subset of the {0} geodetic dataset has
          * been queried. See {3} for instruction about how to install the full {0} database.
          */
         public static final short NoSuchAuthorityCodeInSubset_4 = 48;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.properties b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.properties
index 5abef74518..0ede410af7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.properties
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/Resources.properties
@@ -110,7 +110,7 @@ NonUniformScale                   = Scale is not uniform.
 NotAnAffineTransform              = Transform is not affine.
 NotASkewSymmetricMatrix           = Matrix is not skew-symmetric.
 NoSuchAuthorityCode_3             = No \u2018{1}\u2019 object found for code \u201c{2}\u201d in the \u201c{0}\u201d geodetic dataset.
-NoSuchAuthorityCodeInSubset_4     = No \u2018{1}\u2019 object found for code \u201c{2}\u201d. However only a subset of the {0} geodetic dataset has been queried. See {3} for instruction about how to install the full {0} database.
+NoSuchAuthorityCodeInSubset_4     = No \u2018{1}\u2019 object found for code \u201c{2}\u201d. However, only a subset of the {0} geodetic dataset has been queried. See {3} for instruction about how to install the full {0} database.
 NoSuchOperationMethod_2           = No operation method found for name or identifier \u201c{0}\u201d. Only methods associated to Java code are supported. See {1} for the list of available methods.
 OperationHasNoTransform_2         = Operation \u201c{1}\u201d of class \u2018{0}\u2019 has no mathematical transform.
 ParameterNotFound_2               = No parameter named \u201c{1}\u201d has been found in \u201c{0}\u201d.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/AffineTransform2D.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/AffineTransform2D.java
index 690abc86b1..04b620c9df 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/AffineTransform2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/AffineTransform2D.java
@@ -390,8 +390,8 @@ public class AffineTransform2D extends ImmutableAffineTransform
      * of {@code AffineTransform2D}, then the two objects must be of the exact same class.
      *
      * <p>Most SIS implementations require that the objects being compared are unconditionally of the same class in
-     * order to be considered equal. However many JDK implementations, including {@link AffineTransform}, do not have
-     * this requirement. Consequently the above condition (i.e. require the same class only if the given object is an
+     * order to be considered equal. However, many JDK implementations, including {@link AffineTransform}, do not have
+     * this requirement. Consequently, the above condition (i.e. require the same class only if the given object is an
      * {@code AffineTransform2D} or a subclass) is necessary in order to preserve the <cite>symmetricity</cite> contract
      * of {@link Object#equals(Object)}.</p>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Bezier.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Bezier.java
index 764c216589..0bfec8baf6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Bezier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Bezier.java
@@ -361,9 +361,9 @@ public abstract class Bezier {
             double y = 27./64*ay + 9./64*by + 1./64*Δy;
             if (abs(x - x1) > εx || abs(y - y1) > εy) {
                 /*
-                 * Above code tested (x,y) coordinates at t=¼ exactly (we will test t=¾ later). However this t value does not
+                 * Above code tested (x,y) coordinates at t=¼ exactly (we will test t=¾ later). However, this t value does not
                  * necessarily correspond to one quarter of the distance, because the speed at which t varies is not the same
-                 * than the speed at which Bézier curve length increases. Unfortunately computing the t values at a given arc
+                 * than the speed at which Bézier curve length increases. Unfortunately, computing the t values at a given arc
                  * length is complicated. We tested an approach based on computing the y value on the curve for a given x value
                  * by starting from the Bézier curve equation:
                  *
@@ -373,8 +373,8 @@ public abstract class Bezier {
                  *
                  *     (−x₀ + 3aₓ − 3bₓ + x₄)t³ + (3x₀ − 6aₓ + 3bₓ)t² + (−3x₀ + 3aₓ)t + x₀ − x = 0
                  *
-                 * and finding the roots with the CubicCurve2D.solveCubic(…) method. However the results were worst than using
-                 * fixed t values. Instead we perform another test using the tangent of the curve at point P₁ (and later P₃).
+                 * and finding the roots with the CubicCurve2D.solveCubic(…) method. However, the results were worst than using
+                 * fixed t values. Instead, we perform another test using the tangent of the curve at point P₁ (and later P₃).
                  *
                  *     x′(t) = 3(1−t)²(aₓ − x₀) + 6t(1−t)(bₓ − aₓ) + 3t²(x₄ − bₓ)           and same for y′(t).
                  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java
index 60fa6a8b04..7f7c98ff7a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/IntervalRectangle.java
@@ -48,7 +48,7 @@ import org.apache.sis.internal.util.Strings;
  * </ul>
  *
  * This class does <strong>not</strong> support by itself rectangles crossing the anti-meridian of a geographic CRS.
- * However the {@link #getX()}, {@link #getY()}, {@link #getWidth()} and {@link #getHeight()} methods are defined in
+ * However, the {@link #getX()}, {@link #getY()}, {@link #getWidth()} and {@link #getHeight()} methods are defined in
  * the straightforward way expected by {@link Envelope2D#intersects(Rectangle2D)} and similar methods for computing
  * correct result if the given {@code Rectangle2D} crosses the anti-meridian.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ParameterizedAffine.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ParameterizedAffine.java
index 4060427b9f..3969f2807b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ParameterizedAffine.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/ParameterizedAffine.java
@@ -28,7 +28,7 @@ import org.apache.sis.internal.system.Semaphores;
  * An affine transform that remember the parameters used for its construction.
  * Those parameters may be very different than the usual affine transform parameters.
  *
- * For example an {@link org.apache.sis.internal.referencing.provider.Equirectangular} projection
+ * For example, an {@link org.apache.sis.internal.referencing.provider.Equirectangular} projection
  * can be expressed as an affine transform. In such case, the same affine transform can be described
  * by two equivalent set of parameters:
  *
@@ -112,7 +112,7 @@ public final class ParameterizedAffine extends AffineTransform2D {
     /**
      * Returns the parameter values for this map projection.
      *
-     * <p><b>Hack:</b> this method normally returns the matrix parameters in case of doubt. However if
+     * <p><b>Hack:</b> this method normally returns the matrix parameters in case of doubt. However, if
      * {@link Semaphores#ENCLOSED_IN_OPERATION} is set, then this method returns the map projection parameters
      * even if they are not a complete description of this math transform. This internal hack shall be used
      * only by {@link org.apache.sis.referencing.operation.AbstractCoordinateOperation}.</p>
@@ -121,7 +121,7 @@ public final class ParameterizedAffine extends AffineTransform2D {
      * from a {@code GeographiCRS} base using (latitude, longitude) axis order. We need to concatenate an
      * affine transform performing the axis swapping before the actual map projection. The concatenated
      * transform is part of {@code SingleOperation}, which is itself part of {@code ProjecteCRS}.
-     * Consequently we have two conflicting needs:</p>
+     * Consequently, we have two conflicting needs:</p>
      *
      * <ul>
      *   <li>If this method is queried from a {@code SingleOperation} instance (usually indirectly as part of a
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java
index 68fe40fe7f..ca8cdf69fa 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/j2d/Tile.java
@@ -49,7 +49,7 @@ import org.apache.sis.io.TableAppender;
  *   An {@linkplain ImageReader image reader} can be instantiated before a tile is read.</li>
  *
  *   <li><b>An image input</b> (optional), typically a {@link java.nio.file.Path} or {@link java.net.URL}.
- *   The input is often different for every tile to be read, but this is not mandatory. For example tiles
+ *   The input is often different for every tile to be read, but this is not mandatory. For example, tiles
  *   could be stored at different {@linkplain #getImageIndex() image index} in the same file.</li>
  *
  *   <li><b>An image index</b> to be given to {@link ImageReader#read(int)} for reading the tile.
@@ -96,7 +96,7 @@ import org.apache.sis.io.TableAppender;
  *
  * <h2>Multi-threading</h2>
  * This class is thread-safe. In addition {@code Tile} instances can be considered as immutable after construction.
- * However some properties may be available only after the tiles have been processed by a {@link TileOrganizer},
+ * However, some properties may be available only after the tiles have been processed by a {@link TileOrganizer},
  * or only after {@link #fetchSize()} has been invoked.
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -112,7 +112,7 @@ public class Tile implements Serializable {
 
     /**
      * The upper-left corner in the mosaic (destination image). Should be considered as final,
-     * since this class is supposed to be mostly immutable. However the value can be changed
+     * since this class is supposed to be mostly immutable. However, the value can be changed
      * by {@link #translate(int, int)} before the {@code Tile} instance is made public.
      *
      * @see #getLocation()
@@ -515,7 +515,7 @@ public class Tile implements Serializable {
      * Intentionally no implementation for `equals()` and `hashCode()`. Tile is an "almost immutable" class
      * which can still be modified (only once) by MocaicCalculator, or by read operations during `getSize()`
      * or `getRegion()` execution. This causes confusing behavior when used in an HashMap. We are better to
-     * rely on system identity. For example `DatumShiftGridGroup` rely on the capability to locate Tiles in
+     * rely on system identity. For example, `DatumShiftGridGroup` rely on the capability to locate Tiles in
      * HashMap before and after they have been processed by `TileOrganizer`.
      */
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridFile.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridFile.java
index a5711db1d5..f200d8dd1a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridFile.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridFile.java
@@ -86,7 +86,7 @@ abstract class DatumShiftGridFile<C extends Quantity<C>, T extends Quantity<T>>
      *
      * <h4>Memory consumption</h4>
      * The use of soft references instead of weak references is on the assumption that users typically use
-     * the same few Coordinate Reference Systems for their work. Consequently we presume that users will not
+     * the same few Coordinate Reference Systems for their work. Consequently, we presume that users will not
      * load a lot of grids and are likely to reuse the already loaded grids.
      */
     static final Cache<Object, DatumShiftGridFile<?,?>> CACHE = new Cache<Object, DatumShiftGridFile<?,?>>(4, 32*1024, true) {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridGroup.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridGroup.java
index e4676d3f70..13c890fc11 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridGroup.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/DatumShiftGridGroup.java
@@ -274,7 +274,7 @@ final class DatumShiftGridGroup<C extends Quantity<C>, T extends Quantity<T>> ex
      * has been unable to use directly one of the child transforms — so performance is not the priority in that
      * situation. During inverse transformations, this method is invoked for estimating an initial position before
      * iterative refinements. The given point may be outside all sub-grids (otherwise {@code SpecializableTransform}
-     * would have done the work itself at least in the forward transformation case). Consequently searching a sub-grid
+     * would have done the work itself at least in the forward transformation case). Consequently, searching a sub-grid
      * containing the given point is not sufficient; we need to search for the nearest grid even if the point is outside.
      *
      * @param  gridX   first grid coordinate of the point for which to get the translation.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/EPSGName.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/EPSGName.java
index b209c6176a..e7c5eaa88d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/EPSGName.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/EPSGName.java
@@ -46,7 +46,7 @@ public final class EPSGName {  // TODO: consider extending NamedIdentifier if we
      * Version of the operation method, or {@code null} if unknown.
      *
      * <p>This is unspecified in current Apache SIS implementation.
-     * However future SIS implementations may fetch this information from the EPSG database.
+     * However, future SIS implementations may fetch this information from the EPSG database.
      * In the meantime, we use this constant as a way to track the places in Apache SIS code
      * base where this information is desired.</p>
      */
@@ -57,7 +57,7 @@ public final class EPSGName {  // TODO: consider extending NamedIdentifier if we
      * capable to fetch the remarks from the database using the given identifier code.
      *
      * <p>This is unspecified in current Apache SIS implementation.
-     * However future SIS implementations may fetch this information from the EPSG database.
+     * However, future SIS implementations may fetch this information from the EPSG database.
      * In the meantime, we use this constant as a way to track the places in Apache SIS code
      * base where this information is desired.</p>
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
index 8b0d96ffc9..bfaf1d555b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Equirectangular.java
@@ -343,7 +343,7 @@ public final class Equirectangular extends AbstractProvider {
                .convertBefore(1, null, -φ0);
         /*
          * At this point, we usually invoke 'denormalize.convertAfter(…, a, …)' where 'a' (the semi-major axis length)
-         * is taken as the Earth radius (R). However quoting EPSG: "If the figure of the earth used is an ellipsoid
+         * is taken as the Earth radius (R). However, quoting EPSG: "If the figure of the earth used is an ellipsoid
          * rather than a sphere then R should be calculated as the radius of the conformal sphere at the projection
          * origin at latitude φ1 using the formula for RC given in section 1.2, table 3".
          */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java
index fa5fad4769..094f8c7b40 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/FranceGeocentricInterpolation.java
@@ -82,7 +82,7 @@ import static org.apache.sis.internal.util.Constants.DIM;
  *   <li>Initial Z-axis translation: {@value #TZ} (sign reversed)</li>
  * </ul>
  *
- * However the Apache SIS implementation is designed in such a way that this operation method
+ * However, the Apache SIS implementation is designed in such a way that this operation method
  * could be used for other areas.
  *
  * @author  Simon Reynard (Geomatys)
@@ -104,7 +104,7 @@ public class FranceGeocentricInterpolation extends GeodeticOperation {
      * If the geocentric interpolation is used for other area, other parameter values will be needed.
      *
      * <p>The values used by SIS are from source (RGF93) to target (NTF). This is the opposite of the
-     * direction defined in NTG_88. Consequently the signs need to be the opposite of NTG_88 values.</p>
+     * direction defined in NTG_88. Consequently, the signs need to be the opposite of NTG_88 values.</p>
      */
     public static final double TX = 168, TY = 60, TZ = -320;
 
@@ -112,7 +112,7 @@ public class FranceGeocentricInterpolation extends GeodeticOperation {
      * Precision of offset values in the grid file. The "GR3DF97A.txt" file uses a precision of 0.001.
      * But we define here one more digit in case a user gives a more accurate grid.
      *
-     * Note that value of {@code ulp((float) max(|TX|, |TY|, |TZ|))} is about 3E-5. Consequently the
+     * Note that value of {@code ulp((float) max(|TX|, |TY|, |TZ|))} is about 3E-5. Consequently, the
      * value of {@code PRECISION} should not be lower than 1E-4 (assuming that we want a power of 10).
      */
     static final double PRECISION = 0.0001;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
index 0a32cb4d3f..a850d936dd 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/GeodeticOperation.java
@@ -57,7 +57,7 @@ abstract class GeodeticOperation extends AbstractProvider {
      * <div class="note"><b>Historical note:</b>
      * in ISO 19111:2007, the {@code OperationMethod} type had two attributes for the number of source
      * and target dimensions. Those attributes have been removed in ISO 19111:2019 revision because not
-     * really needed in practice. However the EPSG database still distinguishes between 2D and 3D variants
+     * really needed in practice. However, the EPSG database still distinguishes between 2D and 3D variants
      * for some of those operations, so we still need the capability to switch operation methods according
      * to the number of dimensions.</div>
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3DtoVertical.txt b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3DtoVertical.txt
index 59a16dcbe1..38b21a8e89 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3DtoVertical.txt
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3DtoVertical.txt
@@ -1,5 +1,5 @@
 There is no "Geographic 3D to ellipsoidal height" operation because
-such separation is illegal according ISO 19111.  However Apache SIS
+such separation is illegal according ISO 19111. However, Apache SIS
 may need to perform such separation anyway in some circumstances,
 but it should be only in contexts where SIS can keep trace of other
 dimensions in an "interpolation CRS".  This happen in the following
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalWest.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalWest.java
index 3cfc5c56dd..3d33887ed7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalWest.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/LambertConformalWest.java
@@ -25,7 +25,7 @@ import org.apache.sis.parameter.ParameterBuilder;
 
 /**
  * The provider for <cite>"Lambert Conic Conformal (West Orientated)"</cite> projection (EPSG:9826).
- * In this projection method, the <var>x</var> values increase toward West. However the projection
+ * In this projection method, the <var>x</var> values increase toward West. However, the projection
  * is defined in such a way that the sign of <var>x</var> values are reversed before to apply the
  * <cite>"false easting"</cite> translation. As a consequence of this operation order, despite its
  * name the <cite>"false easting"</cite> is effectively a <cite>"false westing"</cite> (FW) parameter.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java
index 83321cfa5d..ffef870e4a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Mercator2SP.java
@@ -82,7 +82,7 @@ public final class Mercator2SP extends AbstractMercator {
      *
      * <p>This parameter is used by {@link Mercator1SP} and is not formally a parameter of {@code Mercator2SP}
      * projection. Nevertheless we declare it is as an optional parameter because it is sometimes used in Well
-     * Known Text (WKT). However it shall be interpreted as a <cite>Scale factor at the standard parallel</cite>
+     * Known Text (WKT). However, it shall be interpreted as a <cite>Scale factor at the standard parallel</cite>
      * rather than at the natural origin.</p>
      *
      * <!-- Generated by ParameterNameTableGenerator -->
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MillerCylindrical.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MillerCylindrical.java
index 3d42617b1a..120d69b2c4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MillerCylindrical.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MillerCylindrical.java
@@ -32,7 +32,7 @@ import org.apache.sis.metadata.iso.citation.Citations;
  *   <li>The northing is multiplied by 1.25 after the projection.</li>
  * </ol>
  *
- * Note that the Miller projection is typically used with spherical formulas. However the Apache SIS implementation
+ * Note that the Miller projection is typically used with spherical formulas. However, the Apache SIS implementation
  * supports also the ellipsoidal formulas. If spherical formulas are desired, then the parameters shall contain
  * semi-major and semi-minor axis lengths of equal length.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ModifiedAzimuthalEquidistant.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ModifiedAzimuthalEquidistant.java
index 25a6257338..51596c37f6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ModifiedAzimuthalEquidistant.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/ModifiedAzimuthalEquidistant.java
@@ -33,7 +33,7 @@ import org.apache.sis.referencing.operation.projection.NormalizedProjection;
  * The <cite>Modified Azimuthal Equidistant</cite> projection is an approximation of a theoretically
  * more generic oblique Azimuthal Equidistant projection. But Snyder's <u>Map Projection — a working
  * manual</u> book actually gives formulas for the same scope than the one given by EPSG, namely for
- * islands in Micronesia. Consequently we assume that what is commonly presented by other libraries
+ * islands in Micronesia. Consequently, we assume that what is commonly presented by other libraries
  * as a "generic" Azimuthal Equidistant projection is actually the Modified Azimuthal Equidistant
  * approximation.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MolodenskyInterpolation.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MolodenskyInterpolation.java
index 17927f9806..96692aada0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MolodenskyInterpolation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/MolodenskyInterpolation.java
@@ -37,7 +37,7 @@ import org.apache.sis.referencing.operation.transform.InterpolatedMolodenskyTran
  * provided by {@link org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory}.
  * This class extends {@code FranceGeocentricInterpolation} for now because the latter is currently
  * the only operation performing interpolation in the geocentric domain.
- * However this class hierarchy may be revisited in any future SIS version.</p>
+ * However, this class hierarchy may be revisited in any future SIS version.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.7
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java
index f64888861f..688191c262 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/NADCON.java
@@ -50,7 +50,7 @@ import org.apache.sis.measure.Units;
  * The provider for <cite>"North American Datum Conversion"</cite> (EPSG:9613).
  * This transform requires data that are not bundled by default with Apache SIS.
  *
- * <p>The files given in parameters are theoretically binary files. However this provider accepts also ASCII files.
+ * <p>The files given in parameters are theoretically binary files. However, this provider accepts also ASCII files.
  * Those two kinds of files are recognized automatically; there is no need to specify whether the files are ASCII
  * or binary.</p>
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java
index 616e0bb9ee..0c806f2c20 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/PolarStereographicB.java
@@ -90,7 +90,7 @@ public final class PolarStereographicB extends AbstractStereographic {
      *
      * <p>This parameter is used by {@link PolarStereographicA} and is not formally a parameter of
      * {@code PolarStereographicB} projection. Nevertheless we declare it is as an optional parameter
-     * because it is sometimes used in Well Known Text (WKT). However it shall be interpreted as a
+     * because it is sometimes used in Well Known Text (WKT). However, it shall be interpreted as a
      * <cite>Scale factor at the standard parallel</cite> rather than at the natural origin.</p>
      *
      * <!-- Generated by ParameterNameTableGenerator -->
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java
index b36da8b9e7..e8a814b0f8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/VerticalOffset.java
@@ -42,9 +42,9 @@ import org.apache.sis.referencing.operation.transform.MathTransforms;
  * <blockquote>X₂ = m⋅X₁ + offset</blockquote>
  *
  * where <var>m</var> is +1 if source and target axes have the same direction, or -1 if they have opposite direction.
- * Consequently the <var>offset</var> value is always applied in the direction of the target axis. This is different
+ * Consequently, the <var>offset</var> value is always applied in the direction of the target axis. This is different
  * than the Apache SIS design, which always interpret the parameter in the direction of a normalized coordinate axis
- * (up in this case, regardless the source and target coordinate systems). Consequently the sign of the
+ * (up in this case, regardless the source and target coordinate systems). Consequently, the sign of the
  * <cite>"Vertical Offset"</cite> parameter value needs to be reversed if the target coordinate system axis is down.
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java
index 724daed1dc..e3a457ed70 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Convention.java
@@ -116,7 +116,7 @@ public enum Convention {
      *
      * <h4>Differences compared to WKT 2</h4>
      * WKT 1 and WKT 2 differ in their keywords and syntax, but also in more subtle ways regarding axis names,
-     * parameter and code list values. For example in  {@link GeocentricCRS}, WKT 1 uses a legacy set of Cartesian axes
+     * parameter and code list values. For example, in  {@link GeocentricCRS}, WKT 1 uses a legacy set of Cartesian axes
      * which were defined in OGC 01-009. Those axes use the <var>Other</var>, <var>Easting</var> and <var>Northing</var>
      * {@linkplain org.opengis.referencing.cs.AxisDirection axis directions} instead of the geocentric ones.
      * For more uniform handling of CRS objects in client code, SIS parser replaces some WKT 1 conventions by
@@ -150,7 +150,7 @@ public enum Convention {
      * The <cite>Simple Feature</cite> format, also known as “WKT 1”.
      * <cite>Simple Feature</cite> is anterior to OGC 01-009 and defines the same format,
      * but was unclear about the unit of measurement for prime meridians and projection parameters.
-     * Consequently many implementations interpreted those angular units as fixed to degrees instead
+     * Consequently, many implementations interpreted those angular units as fixed to degrees instead
      * than being context-dependent.
      *
      * <p>This convention is identical to {@link #WKT1} except for the following aspects:</p>
@@ -236,7 +236,7 @@ public enum Convention {
      *       which means that the angular units are inferred from the context as required by the
      *       WKT 1 specification.</li>
      *   <li>If {@code true}, uses US unit names instead of the international names.
-     *       For example Americans said {@code "meter"} instead of {@code "metre"}.</li>
+     *       For example, Americans said {@code "meter"} instead of {@code "metre"}.</li>
      * </ul>
      */
     final boolean usesCommonUnits;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java
index 9a8fec1848..cd0984f915 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/FormattableObject.java
@@ -116,7 +116,7 @@ public abstract class FormattableObject {
      *
      * <p>By default this method formats this object according the {@link Convention#WKT2_SIMPLIFIED} rules,
      * except that Unicode characters are kept <i>as-is</i> (they are not converted to ASCII).
-     * Consequently the WKT is not guaranteed to be ISO 19162 compliant.
+     * Consequently, the WKT is not guaranteed to be ISO 19162 compliant.
      * For stricter conformance, use {@link #toWKT()} instead.</p>
      *
      * @return the Well Known Text (WKT) or an alternative representation of this object.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java
index 56f85a70e8..0314f41781 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Formatter.java
@@ -1697,7 +1697,7 @@ public class Formatter implements Localized {
                 /*
                  * The unit that we removed was not the expected one. Probably the user has invoked
                  * addContextualUnit(…) again without a matching call to `restoreContextualUnit(…)`.
-                 * However this check does not work in `Convention.WKT1_COMMON_UNITS` mode, since the
+                 * However, this check does not work in `Convention.WKT1_COMMON_UNITS` mode, since the
                  * map is always empty in that mode.
                  */
                 if (!convention.usesCommonUnits) {
@@ -1742,7 +1742,7 @@ public class Formatter implements Localized {
      * Returns {@code true} if the WKT written by this formatter is not strictly compliant to the WKT specification.
      * This method returns {@code true} if {@link #setInvalidWKT(IdentifiedObject, Exception)} has been invoked at
      * least once. The action to take regarding invalid WKT is caller-dependent.
-     * For example {@link FormattableObject#toString()} will accepts loose WKT formatting and ignore
+     * For example, {@link FormattableObject#toString()} will accepts loose WKT formatting and ignore
      * this flag, while {@link FormattableObject#toWKT()} requires strict WKT formatting and will
      * thrown an exception if this flag is set.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
index 810b443729..4ae099d821 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/GeodeticObjectParser.java
@@ -446,7 +446,7 @@ class GeodeticObjectParser extends MathTransformParser implements Comparator<Coo
              *     }
              *     properties.put(IdentifiedObject.NAME_KEY, name);
              *
-             * However experience shows that it is often wrong in practice, because peoples often
+             * However, experience shows that it is often wrong in practice, because peoples often
              * declare EPSG codes but still use WKT names much shorter than the EPSG names
              * (for example "WGS84" for the datum instead of "World Geodetic System 1984"),
              * so the name in WKT is often not compliant with the name actually defined by the authority.
@@ -675,7 +675,7 @@ class GeodeticObjectParser extends MathTransformParser implements Comparator<Coo
      *
      * <h4>Variants of Cartesian type</h4>
      * The {@link WKTKeywords#Cartesian} type may be used for projected, geocentric or other kinds of CRS.
-     * However while all those variants are of the same CS type, their axis names and directions differ.
+     * However, while all those variants are of the same CS type, their axis names and directions differ.
      * Current implementation uses the following rules:
      *
      * <ul>
@@ -1284,7 +1284,7 @@ class GeodeticObjectParser extends MathTransformParser implements Comparator<Coo
         final Identifier id      = toIdentifier(properties.remove(IdentifiedObject.IDENTIFIERS_KEY));  // See NOTE 2 in parseDerivingConversion.
         /*
          * The map projection method may be specified by an EPSG identifier (or any other authority),
-         * which is preferred to the method name since the latter is potentially ambiguous. However not
+         * which is preferred to the method name since the latter is potentially ambiguous. However, not
          * all CoordinateOperationFactory may accept identifier as an argument to `getOperationMethod(…)`.
          * So if an identifier is present, we will try to use it but fallback on the name if we can
          * not use the identifier.
@@ -1370,7 +1370,7 @@ class GeodeticObjectParser extends MathTransformParser implements Comparator<Coo
              *     parameter values, it shall override any identifiers given within the map projection method and
              *     map projection parameter objects."
              *
-             * However this would require this GeodeticObjectParser to hold a CoordinateOperationAuthorityFactory,
+             * However, this would require this GeodeticObjectParser to hold a CoordinateOperationAuthorityFactory,
              * which we do not yet implement. See https://issues.apache.org/jira/browse/SIS-210
              */
         }
@@ -1750,7 +1750,7 @@ class GeodeticObjectParser extends MathTransformParser implements Comparator<Coo
                  *
                  * An apparent ambiguity exists for Geocentric CRS using a Spherical CS instead of the more
                  * usual Cartesian CS: despite using angular units, we should not use the result of parseUnit
-                 * for those CRS. However this ambiguity should not happen in practice because such Spherical
+                 * for those CRS. However, this ambiguity should not happen in practice because such Spherical
                  * CS have a third axis in metre.  Since the unit is not the same for all axes, csUnit should
                  * be null if the WKT is well-formed.
                  */
@@ -2147,7 +2147,7 @@ class GeodeticObjectParser extends MathTransformParser implements Comparator<Coo
          * or for the whole CRS with the above `csUnit` value. If `csUnit` is null, then an exception will be thrown
          * with a message like "A LengthUnit component is missing in ProjectedCRS".
          *
-         * However we make an exception if we are parsing a BaseProjCRS, since the coordinate system is unspecified
+         * However, we make an exception if we are parsing a BaseProjCRS, since the coordinate system is unspecified
          * in the WKT of base CRS. In this case only, we will default to metre.
          */
         if (csUnit == null && isBaseCRS) {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java
index 5b9837e905..99ceacf4e6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/KeywordCase.java
@@ -20,7 +20,7 @@ package org.apache.sis.io.wkt;
 /**
  * Whether WKT keywords shall be written with lower, upper or camel case styles.
  * The most common usage for WKT keywords is upper case.
- * However with version 2 of Well Known Text, camel case keywords may be easier to read
+ * However, with version 2 of Well Known Text, camel case keywords may be easier to read
  * because WKT 2 has more keywords made by combination of words. Examples:
  *
  * <table class="sis">
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
index 86a740c14e..b345b0d6d2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/MathTransformParser.java
@@ -219,7 +219,7 @@ class MathTransformParser extends AbstractParser {
      * this method is a slight departure of ISO 19162, which said <cite>"Should any attributes or values given
      * in the cited identifier be in conflict with attributes or values given explicitly in the WKT description,
      * the WKT values shall prevail."</cite> But some units can hardly be expressed by the {@code UNIT} element,
-     * because the latter can contain only a conversion factor. For example sexagesimal units (EPSG:9108, 9110
+     * because the latter can contain only a conversion factor. For example, sexagesimal units (EPSG:9108, 9110
      * and 9111) can hardly be expressed in another way than by their EPSG code. Thankfully, identifiers in
      * {@code UNIT} elements are rare, so risk of conflicts should be low.</div>
      *
@@ -273,7 +273,7 @@ class MathTransformParser extends AbstractParser {
         }
         /*
          * Conversion factor can be applied only if the base dimension (angle, linear, scale, etc.) is known.
-         * However before to apply that factor, we may need to fix rounding errors found in some WKT strings.
+         * However, before to apply that factor, we may need to fix rounding errors found in some WKT strings.
          * In particular, the conversion factor for degrees is sometimes written as 0.01745329252 instead of
          * 0.017453292519943295.
          */
@@ -359,7 +359,7 @@ class MathTransformParser extends AbstractParser {
                 param.pullElement(OPTIONAL, ID_KEYWORDS);
                 /*
                  * DEPARTURE FROM ISO 19162: the specification recommends that we use the identifier instead
-                 * than the parameter name. However we do not yet have a "get parameter by ID" in Apache SIS
+                 * than the parameter name. However, we do not yet have a "get parameter by ID" in Apache SIS
                  * or in GeoAPI interfaces. This was not considered necessary since SIS is lenient (hopefully
                  * without introducing ambiguity) regarding parameter names, but we may revisit in a future
                  * version if it become no longer the case. See https://issues.apache.org/jira/browse/SIS-210
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java
index 3087f120a2..427b4f68ad 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Parser.java
@@ -40,7 +40,7 @@ import org.opengis.util.FactoryException;
  * Non-fatal anomalies found in Well Known Texts are reported in a {@linkplain java.util.logging.Logger logger}
  * named {@code "org.apache.sis.io.wkt"}. Warnings may be for unknown or unsupported WKT elements, inconsistent
  * unit definitions (unit symbol, scale factor or EPSG code), unparsable axis abbreviations, <i>etc.</i>
- * However this parser does not verify if the overall parsed object matches the EPSG (or other authority) definition.
+ * However, this parser does not verify if the overall parsed object matches the EPSG (or other authority) definition.
  * For such verification, see {@link org.apache.sis.referencing.CRS#fromWKT(String)}.
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/StoredTree.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/StoredTree.java
index 8f59f56b83..a38a706649 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/StoredTree.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/StoredTree.java
@@ -60,7 +60,7 @@ final class StoredTree implements Serializable {
     /**
      * Unmodifiable copy of {@link Element} without contextual information such as {@link Element#offset}.
      * The removal of contextual information increase greatly the possibility to reuse the same {@code Node}
-     * instances in many {@link StoredTree}s. For example the {@code UNIT["degrees", 0.0174532925199433]} node
+     * instances in many {@link StoredTree}s. For example, the {@code UNIT["degrees", 0.0174532925199433]} node
      * is repeated a lot, so we want to share only one {@code Node} instance for every places in the WKT tree
      * where degrees unit is declared, even if they appear at different offsets in the WKT string.
      *
@@ -84,7 +84,7 @@ final class StoredTree implements Serializable {
         /**
          * Snapshot of {@link Element#children} list. Array content shall not be modified.
          * This array is {@code null} if the keyword was not followed by a pair of brackets
-         * (e.g. "north"). A null value is not equivalent to an empty list. For example the
+         * (e.g. "north"). A null value is not equivalent to an empty list. For example, the
          * list is null when parsing {@code "FOO"} but is empty when parsing {@code "FOO[]"}.
          */
         private final Object[] children;
@@ -232,7 +232,7 @@ final class StoredTree implements Serializable {
 
         /**
          * Returns the string representation of the first value, which is usually the element name.
-         * For example in {@code DATUM["WGS 84", …]} this is "WGS 84". If there are no children then
+         * For example, in {@code DATUM["WGS 84", …]} this is "WGS 84". If there are no children then
          * this method returns the keyword, which is usually an enumeration value (for example "NORTH"}).
          *
          * @see StoredTree#toString()
@@ -301,7 +301,7 @@ final class StoredTree implements Serializable {
      * Root of a tree of {@link Element} snapshots.
      *
      * <h4>Multi-roots</h4>
-     * There is exactly one root in the vast majority of cases. However there is a situation
+     * There is exactly one root in the vast majority of cases. However, there is a situation
      * where we need to allow more roots: when user wants to represent a coordinate system.
      * A WKT 2 coordinate system looks like:
      *
@@ -580,7 +580,7 @@ final class StoredTree implements Serializable {
 
     /**
      * Returns the string representation of the first value of the root element, which is usually the element name.
-     * For example in {@code DATUM["WGS 84", …]} this is "WGS 84". If there are no children then this method returns
+     * For example, in {@code DATUM["WGS 84", …]} this is "WGS 84". If there are no children then this method returns
      * the keyword, which is usually an enumeration value (for example "NORTH"}).
      */
     @Override
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java
index 4add053b65..46dfffd574 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Symbols.java
@@ -572,7 +572,7 @@ public class Symbols implements Localized, Cloneable, Serializable {
      * The {@link NumberFormat} created here does not use scientific notation. This is okay for many
      * WKT formatting purpose since Earth ellipsoid axis lengths in metres are large enough for triggering
      * scientific notation, while we want to express them as normal numbers with centimetre precision.
-     * However this is problematic for small numbers like 1E-5. Callers may need to adjust the precision
+     * However, this is problematic for small numbers like 1E-5. Callers may need to adjust the precision
      * depending on the kind of numbers (length or angle) to format.
      */
     final NumberFormat createNumberFormat() {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
index efdb8d450d..e452999e0b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Transliterator.java
@@ -74,7 +74,7 @@ import org.apache.sis.util.Characters;
  * When using the <em>mathematics</em> convention, θ is the azimuthal angle in the
  * equatorial plane (roughly equivalent to longitude λ) while φ is an angle measured from a pole (also known as
  * colatitude). But when using the <em>physics</em> convention, the meaning of θ and φ are interchanged.
- * Furthermore some other conventions may measure the φ angle from the equatorial plane – like latitude – instead
+ * Furthermore, some other conventions may measure the φ angle from the equatorial plane – like latitude – instead
  * than from the pole. This class does not need to care about the meaning of those angles. The only recommendation
  * is that φ is mapped to <var>U</var> and θ is mapped to <var>V</var>, regardless of their meaning.</div>
  *
@@ -147,7 +147,7 @@ public abstract class Transliterator implements Serializable {
 
     /**
      * Returns a character sequences with the non-ASCII characters replaced or removed.
-     * For example this method replaces “ç” by “c” in “Triangulation fran<b>ç</b>aise”.
+     * For example, this method replaces “ç” by “c” in “Triangulation fran<b>ç</b>aise”.
      * This operation is usually not reversible; there is no converse method.
      *
      * <p>Implementations shall not care about {@linkplain Symbols#getOpeningQuote(int) opening} or
@@ -258,7 +258,7 @@ public abstract class Transliterator implements Serializable {
      *       for {@link AxisDirection#GEOCENTRIC_X}, {@link AxisDirection#GEOCENTRIC_Y GEOCENTRIC_Y}
      *       and {@link AxisDirection#GEOCENTRIC_Z GEOCENTRIC_Z} respectively in a Cartesian CS,
      *       if the given axis name is only an abbreviation.</li>
-     *   <li>Use unique camel-case names for axis names defined by ISO 19111 and ISO 19162. For example this method
+     *   <li>Use unique camel-case names for axis names defined by ISO 19111 and ISO 19162. For example, this method
      *       replaces <cite>“<b>e</b>llipsoidal height”</cite> by <cite>“<b>E</b>llipsoidal height”</cite>.</li>
      * </ul>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java
index 479a731613..eaee295299 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/UnformattableObjectException.java
@@ -26,7 +26,7 @@ import org.opengis.referencing.IdentifiedObject;
  *
  * <div class="note"><b>Example:</b>
  * An engineering CRS cannot be represented in the WKT 1 format if all axes do not use the same
- * unit of measurement. However such CRS can be represented in the WKT 2 format.</div>
+ * unit of measurement. However, such CRS can be represented in the WKT 2 format.</div>
  *
  * This exception may also be thrown by {@link Formatter} if the object given to an
  * {@code append(…)} method is an instance of an unsupported class.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/VerticalInfo.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/VerticalInfo.java
index a3ff20b704..db684f615f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/VerticalInfo.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/VerticalInfo.java
@@ -177,7 +177,7 @@ final class VerticalInfo {
          *
          *   - We generally can reuse the CRS name because those names tend to refer to the datum (which is
          *     unchanged) rather than the coordinate system. Examples: "Low Water depth", "NGF Lallemand height",
-         *     "JGD2011 (vertical) height". However we make an exception if the direction is down, because in such
+         *     "JGD2011 (vertical) height". However, we make an exception if the direction is down, because in such
          *     cases the previous name may contain terms like "depth", which are not appropriate for our new CRS.
          */
         final VerticalCS cs = csFactory.createVerticalCS (properties(axis.getName()), axis);
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
index 458d863121..050fd37a5c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTDictionary.java
@@ -112,7 +112,7 @@ import org.apache.sis.util.SimpleInternationalString;
  * for matching quotes, balanced parenthesis or brackets, and valid number or date formats.
  * If a syntax error is detected, the loading process is interrupted at the point the error occurred;
  * CRS definitions after the error location are not loaded.
- * However WKT keywords and geodetic parameters (e.g. map projections) are not validated at this stage.
+ * However, WKT keywords and geodetic parameters (e.g. map projections) are not validated at this stage.
  *
  * <h3>Late validation</h3>
  * WKT keywords and geodetic parameters inside WKT elements are validated only when {@link #createObject(String)}
@@ -176,7 +176,7 @@ public class WKTDictionary extends GeodeticAuthorityFactory {
      * <div class="note"><b>Implementation note:</b>
      * we manage the locks ourselves instead of using a {@link java.util.concurrent.ConcurrentHashMap}
      * because if a {@link #definitions} value needs to be computed, then we need to block all other
-     * threads anyway since {@link #parser} is not thread-safe. Consequently the high concurrency
+     * threads anyway since {@link #parser} is not thread-safe. Consequently, the high concurrency
      * capability provided by {@code ConcurrentHashMap} does not help us in this case.</div>
      */
     private final ReadWriteLock lock;
@@ -184,7 +184,7 @@ public class WKTDictionary extends GeodeticAuthorityFactory {
     /**
      * CRS definitions associated to <var>authority:version:code</var> keys.
      * Keys are authority codes, ignoring code space (authority) and version.
-     * For example in "EPSG:9.1:4326" the key would be only "4326".
+     * For example, in "EPSG:9.1:4326" the key would be only "4326".
      * Values can be one of the following 4 types:
      *
      * <ol>
@@ -447,7 +447,7 @@ public class WKTDictionary extends GeodeticAuthorityFactory {
      *
      * <h4>Aliases for WKT fragments</h4>
      * Files with more than one WKT definition tend to repeat the same WKT fragments many times.
-     * For example the same {@code BaseGeogCRS[…]} element may be repeated in every {@code ProjectedCRS} definitions.
+     * For example, the same {@code BaseGeogCRS[…]} element may be repeated in every {@code ProjectedCRS} definitions.
      * Redundant fragments can be replaced by aliases for making the file more compact,
      * easier to read, faster to parse and with smaller memory footprint.
      *
@@ -706,7 +706,7 @@ public class WKTDictionary extends GeodeticAuthorityFactory {
         ArgumentChecks.ensureNonNull("objects", objects);
         /*
          * We work with iterator because we do not support parallelism yet.
-         * However a future version may support that, which is why argument
+         * However, a future version may support that, which is why argument
          * type is a `Stream`.
          */
         final Iterator<String> it = objects.iterator();
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
index f98baa586f..5e35ae2dc8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/WKTFormat.java
@@ -942,7 +942,7 @@ public class WKTFormat extends CompoundFormat<Object> {
     private AbstractParser parser(final boolean modifiable) {
         AbstractParser parser = this.parser;
         /*
-         * `parser` is always null on a fresh clone. However the `fragments`
+         * `parser` is always null on a fresh clone. However, the `fragments`
          * map may need to be cloned if the caller intents to modify it.
          */
         if (parser == null || (isCloned & modifiable)) {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java
index 894069977a..35d7745648 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/Warnings.java
@@ -360,7 +360,7 @@ public final class Warnings implements Localized, Serializable {
                 } else {
                     /*
                      * If there is no message, then we must have at least an exception.
-                     * Consequently a NullPointerException in following line would be a bug.
+                     * Consequently, a NullPointerException in following line would be a bug.
                      */
                     final String[] sources = exceptionSources.get(cause);
                     if (sources != null) {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java
index 35902680b7..10f6fa29df 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/io/wkt/package-info.java
@@ -26,20 +26,20 @@
  *   <li>{@link org.opengis.referencing.IdentifiedObject#toWKT()} (GeoAPI formatting method)</li>
  * </ul>
  *
- * However the {@link org.apache.sis.io.wkt.WKTFormat} class provided in this package gives more control.
- * For example this package allows to:
+ * However, the {@link org.apache.sis.io.wkt.WKTFormat} class provided in this package gives more control.
+ * For example, this package allows to:
  *
  * <ul>
  *   <li>Format projection and parameters using the names of a chosen authority.
- *       For example the <cite>"Mercator (variant A)"</cite> projection is named
+ *       For example, the <cite>"Mercator (variant A)"</cite> projection is named
  *       {@code "Mercator_1SP"} by OGC 01-009 and {@code "CT_Mercator"} by GeoTIFF.</li>
  *   <li>Format the elements with different quote characters or brackets style.
- *       For example both {@code ID["EPSG",4326]} and {@code ID("EPSG",4326)} are legal WKT.</li>
+ *       For example, both {@code ID["EPSG",4326]} and {@code ID("EPSG",4326)} are legal WKT.</li>
  *   <li>Format with a different indentation or format the whole WKT on a single line.</li>
  *   <li>Apply syntactic coloring on terminal supporting <cite>ANSI escape codes</cite>
  *       (a.k.a. ECMA-48, ISO/IEC 6429 and X3.64).</li>
  *   <li>Alter the parsing in a way compatible with non-standard (but commonly used) WKT.
- *       For example some others software products ignore the {@code AXIS[…]} elements at parsing time.</li>
+ *       For example, some others software products ignore the {@code AXIS[…]} elements at parsing time.</li>
  *   <li>Report warnings that occurred during parsing or formatting.</li>
  * </ul>
  *
@@ -56,7 +56,7 @@
  * The WKT 1 format has been interpreted differently by various implementers.
  * One noticeable difference is the unit of measurement of prime meridians and projection parameters.
  * The WKT 2 format aims to solve the inter-operability problem caused by such mismatches,
- * but not all software products support this new format. Consequently importing or exporting data from/to a software
+ * but not all software products support this new format. Consequently, importing or exporting data from/to a software
  * with the WKT syntax require knowledge of the WKT variant used by that software. This variant can be specified by
  * the {@link org.apache.sis.io.wkt.Convention} enumeration.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java
index 4e0cc586da..6df857e380 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterDescriptor.java
@@ -499,7 +499,7 @@ public class DefaultParameterDescriptor<T> extends AbstractParameterDescriptor i
                 default: {
                     /*
                      * Tests for name, since parameters with different name have completely different meaning.
-                     * For example there is no difference between "semi_major" and "semi_minor" parameters
+                     * For example, there is no difference between "semi_major" and "semi_minor" parameters
                      * except the name. We do not perform this comparison if the user asked for metadata
                      * comparison, because in such case the names have already been compared by the super-class.
                      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
index 6c423cdcd0..f900dafc56 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValue.java
@@ -922,7 +922,7 @@ convert:            if (componentType != null) {
      * the same {@code DefaultParameterValue} instance on a <cite>best effort</cite> basis.
      *
      * <div class="note"><b>Rational:</b>
-     * the same parameter value is often used in many different coordinate operations. For example all <cite>Universal
+     * the same parameter value is often used in many different coordinate operations. For example, all <cite>Universal
      * Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996) and false easting (500000 metres).
      * </div>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
index e28988010e..53c67eef6b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/DefaultParameterValueGroup.java
@@ -260,7 +260,7 @@ public class DefaultParameterValueGroup extends Parameters implements LenientCom
      * </ul>
      *
      * This convenience method provides a way to get and set parameter values by name.
-     * For example the following idiom fetches a floating point value for the <cite>False easting</cite>
+     * For example, the following idiom fetches a floating point value for the <cite>False easting</cite>
      * and <cite>False northing</cite> parameters and set a new value for the <cite>False easting</cite> one:
      *
      * {@preformat java
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/MatrixParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/MatrixParameters.java
index 536153e1b3..44de58b8a7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/MatrixParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/MatrixParameters.java
@@ -149,7 +149,7 @@ class MatrixParameters extends TensorParameters<Double> {
      * </ul>
      *
      * This method does <strong>not</strong> assign the alpha-numeric names to the EPSG authority in order to avoid
-     * confusion when formatting the parameters as Well Known Text (WKT). However {@link MatrixParametersAlphaNum}
+     * confusion when formatting the parameters as Well Known Text (WKT). However, {@link MatrixParametersAlphaNum}
      * subclass will assign some names to the EPSG authority, as well as their identifier (e.g. EPSG:8641).
      */
     @Override
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
index 5227ee0aa7..ec4fd2e263 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterBuilder.java
@@ -402,11 +402,11 @@ public class ParameterBuilder extends Builder<ParameterBuilder> {
      * for the <cite>semi-major</cite> and <cite>semi-minor axis length</cite>. Those parameters are usually
      * not explicitly included in parameter definitions since the axis lengths can be inferred from the
      * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid ellipsoid}.
-     * However {@link org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory} needs them.
+     * However, {@link org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory} needs them.
      *
      * <p>In addition, this method adds hidden parameters for alternative ways to express some standard parameters.
      * Those hidden parameters never appear in the {@linkplain DefaultParameterDescriptorGroup#descriptors() list
-     * of parameters}. However when one of those parameters is read or written, the work will be delegated to the
+     * of parameters}. However, when one of those parameters is read or written, the work will be delegated to the
      * standard parameters.</p>
      *
      * <table class="sis">
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterFormat.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterFormat.java
index e34af12dd4..2200a2a20a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterFormat.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterFormat.java
@@ -782,7 +782,7 @@ public class ParameterFormat extends TabularFormat<Object> {
     /**
      * Configures the number pattern to use for the given value. The main intent of this method is to ensure that
      * the map projection scale factor (a value close to 1) is formatted with a sufficient number of fraction digits.
-     * A common default NumberFormat precision is 3 digits, which is not sufficient. For example the scale factor of
+     * A common default NumberFormat precision is 3 digits, which is not sufficient. For example, the scale factor of
      * Transverse Mercator projections is 0.9996 (4 digits), and the scale factor of "NTF (Paris) / Lambert zone II"
      * projection is 0.99987742 (8 digits).
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java
index d089552177..85af75aa24 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/ParameterValueList.java
@@ -45,7 +45,7 @@ import org.apache.sis.internal.referencing.Resources;
  *
  * <div class="note"><b>Implementation note:</b>
  * this class reproduces some {@link java.util.ArrayList} functionalities.
- * However we do <strong>not</strong> extend {@code ArrayList} because we really need the default method
+ * However, we do <strong>not</strong> extend {@code ArrayList} because we really need the default method
  * implementations provided by {@code AbstractList} — the optimizations performed by {@code ArrayList}
  * are not suitable here.</div>
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
index ed74415469..85aaf2d889 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/Parameters.java
@@ -83,7 +83,7 @@ import org.apache.sis.util.Debug;
  * when it delegates its work to the {@code parameter(String)} method.
  *
  * <div class="note"><b>Example:</b>
- * The same parameter may be known under different names. For example the
+ * The same parameter may be known under different names. For example, the
  * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid#getSemiMajorAxis()
  * length of the semi-major axis of the ellipsoid} is commonly known as {@code "semi_major"}.
  * But that parameter can also be named {@code "semi_major_axis"}, {@code "earth_radius"} or simply {@code "a"}
@@ -154,7 +154,7 @@ public abstract class Parameters implements ParameterValueGroup, Cloneable {
      *
      * <div class="note"><b>Use case:</b>
      * this method is used for hiding parameters that should be inferred from the context.
-     * For example the {@code "semi_major"} and {@code "semi_minor"} parameters are included
+     * For example, the {@code "semi_major"} and {@code "semi_minor"} parameters are included
      * in the list of {@link org.opengis.referencing.operation.MathTransform} parameters
      * because that class has no way to know the values if they are not explicitly provided.
      * But those semi-axis length parameters should not be included in the list of
@@ -439,7 +439,7 @@ public abstract class Parameters implements ParameterValueGroup, Cloneable {
         }
         /*
          * If there is no ambiguity, we are done. In case of ambiguity we should throw an exception.
-         * However we will not throw the exception if this method is invoked from the getParameter(…)
+         * However, we will not throw the exception if this method is invoked from the getParameter(…)
          * method of a Parameters instance wrapping a non-SIS implementation. The reason is that for
          * foreigner implementations, the package-private getParameter(…) method will conservatively
          * delegate to the public parameter(…) method, in case the implementer overrides it. But for
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java
index 88d7f3e4e7..050efa075c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/TensorParameters.java
@@ -244,7 +244,7 @@ public class TensorParameters<E> implements Serializable {
         WKT1 = new MatrixParameters(numRow, numCol);
         /*
          * For the EPSG convention, there is no "num_row" or "num_col" parameters since the matrix
-         * size if fixed to 3×3. However since we still need them, we will declare them as optional
+         * size if fixed to 3×3. However, since we still need them, we will declare them as optional
          * and we will hide them from the descriptor unless the matrix size is different than 3×3.
          */
         numRow = new DefaultParameterDescriptor<>(IdentifiedObjects.getProperties(numRow),
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java
index 4fa432ec27..7aa46ea260 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/UnmodifiableParameterValue.java
@@ -44,7 +44,7 @@ import org.apache.sis.util.resources.Errors;
  * basis.
  *
  * <div class="note"><b>Rational:</b>
- * the same parameter value is often used in many different coordinate operations. For example all <cite>Universal
+ * the same parameter value is often used in many different coordinate operations. For example, all <cite>Universal
  * Transverse Mercator</cite> (UTM) projections use the same scale factor (0.9996) and false easting (500000 metres).
  * </div>
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/parameter/Verifier.java b/core/sis-referencing/src/main/java/org/apache/sis/parameter/Verifier.java
index 56982bf9ca..9358d2872f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/parameter/Verifier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/parameter/Verifier.java
@@ -184,7 +184,7 @@ final class Verifier {
                         /*
                          * Usual case where the expected value is a singleton. A ClassCastException below could be
                          * a bug in our code logic since non-null units is allowed only with numeric values in SIS
-                         * implementation. However the given descriptor could be a "foreigner" implementation.
+                         * implementation. However, the given descriptor could be a "foreigner" implementation.
                          */
                         try {
                             Number n = converter.convert((Number) value);
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
index d3f4bb5f43..eb03a90a1e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractIdentifiedObject.java
@@ -77,7 +77,7 @@ import static org.apache.sis.internal.util.CollectionsExt.immutableSet;
  * {@linkplain org.apache.sis.referencing.crs.AbstractCRS Coordinate Reference System} (e.g. <cite>"WGS 84 / World Mercator"</cite>) or
  * {@linkplain org.apache.sis.referencing.operation.DefaultConversion map projection}  (e.g. <cite>"Mercator (variant A)"</cite>).
  * Those names, or a code (e.g. {@code "EPSG:3395"}), can be used for fetching an object from a database.
- * However it is not sufficient to know the object name. We also need to know who define that name
+ * However, it is not sufficient to know the object name. We also need to know who define that name
  * (the {@linkplain NamedIdentifier#getAuthority() authority}) since the same objects are often named differently
  * depending on the providers, or conversely the same name is used for different objects depending on the provider.
  *
@@ -92,7 +92,7 @@ import static org.apache.sis.internal.util.CollectionsExt.immutableSet;
  * <h2>Instantiation</h2>
  * This class is conceptually <cite>abstract</cite>, even if it is technically possible to instantiate it.
  * Applications should instead instantiate the most specific subclass having a name starting by {@code Default}.
- * However exceptions to this rule may occur when it is not possible to identify the exact type.
+ * However, exceptions to this rule may occur when it is not possible to identify the exact type.
  *
  * <div class="note"><b>Example:</b>
  * It is sometimes not possible to infer the exact coordinate system type from
@@ -194,7 +194,7 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
 
     /**
      * An identifier which references elsewhere the object's defining information.
-     * Alternatively an identifier by which this object can be referenced.
+     * Alternatively, an identifier by which this object can be referenced.
      *
      * <p><b>Consider this field as final!</b>
      * This field is modified only at unmarshalling time by {@link #setIdentifier(Code)}</p>
@@ -307,7 +307,7 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
      *
      * <h4>Localization</h4>
      * All localizable attributes like {@code "remarks"} may have a language and country code suffix.
-     * For example the {@code "remarks_fr"} property stands for remarks in {@linkplain Locale#FRENCH French} and
+     * For example, the {@code "remarks_fr"} property stands for remarks in {@linkplain Locale#FRENCH French} and
      * the {@code "remarks_fr_CA"} property stands for remarks in {@linkplain Locale#CANADA_FRENCH French Canadian}.
      * They are convenience properties for building the {@code InternationalString} value.
      *
@@ -505,7 +505,7 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
 
     /**
      * Returns identifiers which references elsewhere the object's defining information.
-     * Alternatively identifiers by which this object can be referenced.
+     * Alternatively, identifiers by which this object can be referenced.
      *
      * @return this object identifiers, or an empty set if there is none.
      *
@@ -594,7 +594,7 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
      * See {@link #equals(Object, ComparisonMode)} for more information.
      *
      * <p>This method is also invoked when searching a parameter or operation method for a given name.
-     * For example the same projection is known as {@code "Mercator (variant A)"} (the primary name according EPSG)
+     * For example, the same projection is known as {@code "Mercator (variant A)"} (the primary name according EPSG)
      * and {@code "Mercator (1SP)"} (the legacy name prior EPSG 7.6). Since the latter is still in frequent use, SIS
      * accepts it as an alias of the <cite>Mercator (variant A)</cite> projection.</p>
      *
@@ -671,7 +671,7 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
      * {@link org.apache.sis.parameter.DefaultParameterDescriptor}) will compare the
      * {@linkplain #getName() name} even in {@code IGNORE_METADATA} mode,
      * because objects of those types with different names have completely different meaning.
-     * For example nothing differentiate the {@code "semi_major"} and {@code "semi_minor"} parameters except the name.
+     * For example, nothing differentiate the {@code "semi_major"} and {@code "semi_minor"} parameters except the name.
      * The name comparison may be lenient however, i.e. the rules may accept a name matching an alias.
      * See {@link #isHeuristicMatchForName(String)} for more information.
      *
@@ -1021,7 +1021,7 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
      * be used in other context.</p>
      *
      * <h4>Why there is no <code>setNames(…)</code> method</h4>
-     * Some JAXB implementations never invoke setter method for collections. Instead they invoke the getter and
+     * Some JAXB implementations never invoke setter method for collections. Instead, they invoke the getter and
      * add directly the identifiers in the returned collection. Whether JAXB will perform or not a final call to
      * {@code setNames(…)} is JAXB-implementation dependent (JDK7 does but JDK6 and JDK8 early access do not).
      * It seems a more portable approach (at least for JAXB reference implementations) to design our class
@@ -1044,7 +1044,7 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
      * It would be easier to define a {@code getNames()} method returning all identifiers in an array, and let JAXB
      * invoke {@code setNames(Identifier[])} at unmarshalling time.  But methods expecting an array in argument are
      * invoked by JAXB only after the full element has been unmarshalled. For some {@code AbstractIdentifiedObject}
-     * subclasses, this is too late. For example {@code DefaultOperationMethod} may need to know the operation name
+     * subclasses, this is too late. For example, {@code DefaultOperationMethod} may need to know the operation name
      * before to parse the parameters.
      */
     private final class Names extends AbstractCollection<Identifier> {
@@ -1077,8 +1077,8 @@ public class AbstractIdentifiedObject extends FormattableObject implements Ident
          * as the name and all other identifiers (if any) as aliases.
          *
          * <p>Some (but not all) JAXB implementations never invoke setter method for collections.
-         * Instead they invoke {@link AbstractIdentifiedObject#getNames()} and add directly the identifiers
-         * in the returned collection. Consequently this method must writes directly in the enclosing object.
+         * Instead, they invoke {@link AbstractIdentifiedObject#getNames()} and add directly the identifiers
+         * in the returned collection. Consequently, this method must writes directly in the enclosing object.
          * See <a href="https://java.net/jira/browse/JAXB-488">JAXB-488</a> for more information.</p>
          */
         @Override
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java
index a9f0a44c21..3c51f8aa26 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/AbstractReferenceSystem.java
@@ -38,7 +38,7 @@ import static org.apache.sis.util.collection.Containers.property;
 
 /**
  * Description of a spatial and temporal reference system used by a dataset.
- * Reference systems do not necessarily use coordinates. For example a reference system could use postal codes.
+ * Reference systems do not necessarily use coordinates. For example, a reference system could use postal codes.
  * The specialized case of referencing by coordinates is handled by the
  * {@link org.apache.sis.referencing.crs.AbstractCRS} subclass.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
index cbee4e6717..2c6f38ff1d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/Builder.java
@@ -117,12 +117,12 @@ import static org.apache.sis.util.ArgumentChecks.*;
  *
  *
  * <h2>Builder property lifetimes</h2>
- * Some complex objects require the creation of many components. For example constructing a
+ * Some complex objects require the creation of many components. For example, constructing a
  * {@linkplain org.apache.sis.referencing.crs.AbstractCRS Coordinate Reference System} (CRS) may require constructing a
  * {@linkplain org.apache.sis.referencing.cs.AbstractCS coordinate system}, a
  * {@linkplain org.apache.sis.referencing.datum.AbstractDatum datum} and an
  * {@linkplain org.apache.sis.referencing.datum.DefaultEllipsoid ellipsoid} among other components.
- * However all those components often (but not necessarily) share the same authority, code space and version information.
+ * However, all those components often (but not necessarily) share the same authority, code space and version information.
  * In order to simplify that common usage, two groups of properties have different lifetimes in the {@code Builder} class:
  *
  * <ul>
@@ -785,7 +785,7 @@ public abstract class Builder<B extends Builder<B>> {
         ensureNonNull("authority", authority);
         final int length = (replacements != null) ? replacements.length : 0;
         /*
-         * IdentifiedObjects store the "primary name" separately from aliases. Consequently we will start
+         * IdentifiedObjects store the "primary name" separately from aliases. Consequently, we will start
          * the iteration at index -1 where i=-1 is used as a sentinel value meaning "primary name" before
          * to iterate over the aliases. Note that the type is not the same:
          *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
index d5f7ba7799..23086c8719 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CRS.java
@@ -193,7 +193,7 @@ public final class CRS extends Static {
      *
      * <h4>URI forms</h4>
      * This method accepts also the URN and URL syntaxes.
-     * For example the following codes are considered equivalent to {@code "EPSG:4326"}:
+     * For example, the following codes are considered equivalent to {@code "EPSG:4326"}:
      * <ul>
      *   <li>{@code "EPSG::4326"}</li>
      *   <li>{@code "urn:ogc:def:crs:EPSG::4326"}</li>
@@ -201,7 +201,7 @@ public final class CRS extends Static {
      *   <li>{@code "http://www.opengis.net/gml/srs/epsg.xml#4326"}</li>
      * </ul>
      *
-     * URIs can be combined for creating larger objects. For example the following URIs combine a
+     * URIs can be combined for creating larger objects. For example, the following URIs combine a
      * two-dimensional WGS84 reference system (EPSG:4326) with a Mean Sea Level height (EPSG:5714).
      * The result is a three-dimensional {@linkplain org.apache.sis.referencing.crs.DefaultCompoundCRS
      * compound coordinate reference system}:
@@ -523,7 +523,7 @@ public final class CRS extends Static {
          *
          *   - If the projected CRS contains fully the region of interest, then it will be returned.
          *     The preference is given to the projected CRS because geometric operations are likely
-         *     to be more accurate in that space. Furthermore forward conversions from geographic to
+         *     to be more accurate in that space. Furthermore, forward conversions from geographic to
          *     projected CRS are usually faster than inverse conversions.
          *
          *   - Otherwise (i.e. if the region of interest is likely to be wider than the projected CRS
@@ -643,7 +643,7 @@ public final class CRS extends Static {
         ArgumentChecks.ensureNonNull("targetCRS", targetCRS);
         final CoordinateOperationContext context = CoordinateOperationContext.fromBoundingBox(areaOfInterest);
         /*
-         * In principle following code should just delegate to factory.createOperation(…). However that operation
+         * In principle following code should just delegate to factory.createOperation(…). However, that operation
          * may fail if a connection to the EPSG database has been found, but the EPSG tables do not yet exist in
          * that database and we do not have the SQL scripts for creating them.
          */
@@ -1060,7 +1060,7 @@ public final class CRS extends Static {
      *
      * In case of doubt, this method conservatively returns {@code false}.
      *
-     * @todo Future SIS implementation may extend the above conditions list. For example a radar station could
+     * @todo Future SIS implementation may extend the above conditions list. For example, a radar station could
      *       use a polar coordinate system in a <code>DerivedCRS</code> instance based on a projected CRS.
      *       Conversely, a future SIS versions may impose more conditions on <code>EngineeringCRS</code>.
      *       See <a href="http://issues.apache.org/jira/browse/SIS-161">SIS-161</a>.
@@ -1200,8 +1200,8 @@ public final class CRS extends Static {
      * component of a geographic CRS. This is what {@code getVerticalComponent(…)} does when the
      * {@code allowCreateEllipsoidal} argument is {@code false}.
      *
-     * <p>However in some exceptional cases, handling ellipsoidal heights like any other kind of heights
-     * may simplify the task. For example when computing <em>difference</em> between heights above the
+     * <p>However, in some exceptional cases, handling ellipsoidal heights like any other kind of heights
+     * may simplify the task. For example, when computing <em>difference</em> between heights above the
      * same datum, the impact of ignoring locations may be smaller (but not necessarily canceled).
      * Orphan {@code VerticalCRS} may also be useful for information purpose like labeling a plot axis.
      * If the caller feels confident that ellipsoidal heights are safe for his task, he can set the
@@ -1364,7 +1364,7 @@ public final class CRS extends Static {
      *   <li>Otherwise (i.e. no component match), this method returns {@code null}.</li>
      * </ul>
      *
-     * This method does <strong>not</strong> build new CRS from the components. For example this method does not
+     * This method does <strong>not</strong> build new CRS from the components. For example, this method does not
      * create a {@link CompoundCRS} or a three-dimensional CRS if the given range spans more than one component.
      *
      * @param  crs    the coordinate reference system to decompose, or {@code null}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
index e8ec071907..8bf54a8ca4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/CommonCRS.java
@@ -1217,7 +1217,7 @@ public enum CommonCRS {
      *
      * <div class="note"><b>Note:</b>
      * We do not provide a {@code GEOIDAL} value because its definition depends on the realization epoch.
-     * For example EGM84, EGM96 and EGM2008 are applications of three different geoid models on the WGS 84 ellipsoid.
+     * For example, EGM84, EGM96 and EGM2008 are applications of three different geoid models on the WGS 84 ellipsoid.
      * The {@link #MEAN_SEA_LEVEL} value can be used instead as an approximation of geoidal heights.</div>
      *
      * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java
index 6c9f46481b..12aab7b9df 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/EPSGFactoryFallback.java
@@ -303,7 +303,7 @@ final class EPSGFactoryFallback extends GeodeticAuthorityFactory
                 for (final CommonCRS crs : CommonCRS.values()) {
                     /*
                      * In a complete EPSG dataset we could have an ambiguity below because the same code can be used
-                     * for datum, ellipsoid and CRS objects. However in the particular case of this EPSG-subset, we
+                     * for datum, ellipsoid and CRS objects. However, in the particular case of this EPSG-subset, we
                      * ensured that there is no such collision - see CommonCRSTest.ensureNoCodeCollision().
                      */
                     if ((kind & ELLIPSOID) != 0  &&  n == crs.ellipsoid) return crs.ellipsoid();
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodesicsOnEllipsoid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodesicsOnEllipsoid.java
index 5f8835e6b6..3c3d799e58 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodesicsOnEllipsoid.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodesicsOnEllipsoid.java
@@ -94,7 +94,7 @@ class GeodesicsOnEllipsoid extends GeodeticCalculator {
      * but this extra accuracy is not guaranteed because it is hard to achieve in all cases.
      *
      * <p><b>Note:</b> when the iteration loop detects that it reached this requested accuracy, the loop
-     * completes the iteration step which was in progress. Consequently the final accuracy is one iteration
+     * completes the iteration step which was in progress. Consequently, the final accuracy is one iteration
      * better than the accuracy computed from this value.</p>
      *
      * <h4>Maintenance</h4>
@@ -263,7 +263,7 @@ class GeodesicsOnEllipsoid extends GeodeticCalculator {
          * in registers. Maybe some compilers could even detect when the same multiplication is done two times.
          *
          * Note: for each line below, we could compute at construction time the parts at the right of ε.
-         * However since they are only a few additions and multiplications, it may not be worth to vastly
+         * However, since they are only a few additions and multiplications, it may not be worth to vastly
          * increase the number of fields in `GeodesicOnEllipsoid` for that purpose, especially if compiler
          * can optimize itself those duplicated multiplications.
          */
@@ -479,7 +479,7 @@ class GeodesicsOnEllipsoid extends GeodeticCalculator {
             α0(sinα1, cosα1, sinβ1, cosβ1);
             /*
              * Note:  Karney said that for equatorial geodesics (φ₁=0 and α₁=π/2), calculation of σ₁ is indeterminate
-             * and σ₁=0 should be taken. The indetermination appears as atan2(0,0). However this expression evaluates
+             * and σ₁=0 should be taken. The indetermination appears as atan2(0,0). However, this expression evaluates
              * to 0 in Java, as required by Math.atan2(y,x) specification, which is what we want. So there is no need
              * for a special case.
              */
@@ -666,7 +666,7 @@ class GeodesicsOnEllipsoid extends GeodeticCalculator {
             /*
              * Usual case (non-antipodal). Estimation is based on variation of geodetic longitude λ
              * and spherical longitude ω on the auxiliary sphere. Karney makes a special case for
-             * Δλ = 0 and Δλ = π by defining α₁ = Δλ. However formulas below produce the same result.
+             * Δλ = 0 and Δλ = π by defining α₁ = Δλ. However, formulas below produce the same result.
              */
             double w = (cosβ1 + cosβ2) / 2;
             w = sqrt(1 - eccentricitySquared * (w*w));
@@ -952,7 +952,7 @@ class GeodesicsOnEllipsoid extends GeodeticCalculator {
          *
          *     Ψ(φ) = log(tan(PI/4 + φ/2) * pow((1 - ℯsinφ) / (1 + ℯsinφ), ℯ/2));
          *
-         * (ℯ is the eccentricity, not squared). However we need only the isometric latitudes difference:
+         * (ℯ is the eccentricity, not squared). However, we need only the isometric latitudes difference:
          *
          *     ΔΨ = Ψ(φ₂) - Ψ(φ₁)
          *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java
index 6db53cf36b..063dbd1cff 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/GeodeticCalculator.java
@@ -211,7 +211,7 @@ public class GeodeticCalculator {
      *     For representing a displacement in degrees, divide by {@linkplain #dφ_dy(double) ∂y/∂φ}.</li>
      * </ul>
      *
-     * Those vectors may not be normalized to unitary vectors. For example {@code msinα} is {@code sinα} multiplied
+     * Those vectors may not be normalized to unitary vectors. For example, {@code msinα} is {@code sinα} multiplied
      * by an unknown constant <var>m</var>. It is often not needed to know <var>m</var> value because most formulas
      * are written in a way that cancel the magnitude. If nevertheless needed, normalization is applied by dividing
      * those fields by {@code m = hypot(msinα, mcosα)}.
@@ -838,7 +838,7 @@ public class GeodeticCalculator {
      *
      * This method tries to stay within the given tolerance threshold of the geodesic track.
      * The {@code tolerance} parameter should not be too small for avoiding creation of unreasonably long chain of Bézier curves.
-     * For example a value of 1/10 of geodesic length may be sufficient.
+     * For example, a value of 1/10 of geodesic length may be sufficient.
      *
      * <div class="note"><b>Note:</b>
      * this method depends on the presence of {@code java.desktop} module. This constraint may be addressed
@@ -888,7 +888,7 @@ public class GeodeticCalculator {
      *
      * This method tries to stay within the given tolerance threshold of the geodesic track.
      * The {@code tolerance} parameter should not be too small for avoiding creation of unreasonably long chain of Bézier curves.
-     * For example a value of 1/10 of geodesic length may be sufficient.
+     * For example, a value of 1/10 of geodesic length may be sufficient.
      *
      * <div class="note"><b>Note:</b>
      * this method depends on the presence of {@code java.desktop} module. This constraint may be addressed
@@ -924,7 +924,7 @@ public class GeodeticCalculator {
     /**
      * Builds a geodesic path as a sequence of Bézier curves. The start point and end points are the points
      * in enclosing {@link GeodeticCalculator} at the time this class is instantiated. The start coordinates
-     * given by {@link #φ1} and {@link #λ1} shall never change for this whole builder lifetime. However the
+     * given by {@link #φ1} and {@link #λ1} shall never change for this whole builder lifetime. However, the
      * end coordinates ({@link #φ2}, {@link #λ2}) will vary at each step.
      */
     private class PathBuilder extends Bezier {
@@ -1008,7 +1008,7 @@ public class GeodeticCalculator {
              * screen with (longitude, latitude) axes, the angles seen on screen are not the real angles measured on Earth.
              * In order to see the "real" angles, we need to draw the shape on a conformal projection such as Mercator.
              * Said otherwise, the angle value computed from the (dx,dy) vector is "real" only in a conformal projection.
-             * Consequently if the output CRS is a Mercator projection, then the angle computed from the (dx,dy) vector
+             * Consequently, if the output CRS is a Mercator projection, then the angle computed from the (dx,dy) vector
              * at the end of this method should be the ending azimuth angle unchanged. We achieve this equivalence by
              * multiplying mcosα2 by a factor which will cancel the ∂y/∂φ factor of Mercator projection at that latitude.
              * Note that there is no need to scale msinα2 since ∂x/∂λ = 1 everywhere on Mercator projection with a=1.
@@ -1100,7 +1100,7 @@ public class GeodeticCalculator {
     /**
      * The provider of "Azimuthal Equidistant (Spherical)" or "Modified Azimuthal Equidistant" projection.
      * Usually it is not necessary to keep a reference to the provider because {@link #projectionFactory}
-     * finds them automatically. However by keeping a reference to it, we save the search phase.
+     * finds them automatically. However, by keeping a reference to it, we save the search phase.
      *
      * @see #createProjectionAroundStart()
      */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java
index a09e60ccc2..18c4ad75c6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/IdentifiedObjects.java
@@ -313,7 +313,7 @@ public final class IdentifiedObjects extends Static {
      * </ul>
      *
      * This method is can be used for fetching a more human-friendly identifier than the numerical values
-     * typically returned by {@link IdentifiedObject#getIdentifiers()}. However the returned value is not
+     * typically returned by {@link IdentifiedObject#getIdentifiers()}. However, the returned value is not
      * guaranteed to be unique.
      *
      * @param  object  the identified object, or {@code null}.
@@ -417,7 +417,7 @@ public final class IdentifiedObjects extends Static {
      * <p><strong>Note that this method checks the identifier validity.</strong>
      * If the given object declares explicitly an identifier, then this method will instantiate an object from the
      * authority factory using that identifier and compare it with the given object. If the comparison fails, then
-     * this method returns {@code null}. Consequently this method may return {@code null} even if the given object
+     * this method returns {@code null}. Consequently, this method may return {@code null} even if the given object
      * declares explicitly its identifier. If the declared identifier is wanted unconditionally,
      * one can use the following pattern instead:
      *
@@ -528,7 +528,7 @@ public final class IdentifiedObjects extends Static {
      * <p><strong>Note that this method checks the identifier validity.</strong>
      * If the given object declares explicitly an identifier, then this method will instantiate an object from the
      * EPSG factory using that identifier and compare it with the given object. If the comparison fails, then this
-     * method returns {@code null}. Consequently this method may return {@code null} even if the given object
+     * method returns {@code null}. Consequently, this method may return {@code null} even if the given object
      * declares explicitly its identifier. If the declared identifier is wanted unconditionally,
      * one can use the following pattern instead:
      *
@@ -764,7 +764,7 @@ public final class IdentifiedObjects extends Static {
      * </ul>
      *
      * This method is provided because the {@link GenericName#toString()} behavior is specified by its javadoc,
-     * while {@link Identifier} has no such contract. For example like most ISO 19115 objects in SIS,
+     * while {@link Identifier} has no such contract. For example, like most ISO 19115 objects in SIS,
      * the {@link org.apache.sis.metadata.iso.DefaultIdentifier} implementation is formatted as a tree.
      * This static method can be used when a "name-like" representation is needed for any implementation.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
index 00801ba712..369e3214a7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
@@ -252,7 +252,7 @@ public class ImmutableIdentifier extends FormattableObject implements Identifier
      *
      * <h4>Localization</h4>
      * {@code "description"} is a localizable attributes which may have a language and country
-     * code suffix. For example the {@code "description_fr"} property stands for description in
+     * code suffix. For example, the {@code "description_fr"} property stands for description in
      * {@linkplain Locale#FRENCH French} and the {@code "description_fr_CA"} property stands
      * for description in {@linkplain Locale#CANADA_FRENCH French Canadian}.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/NameIterator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/NameIterator.java
index 2b95229850..f42c35919b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/NameIterator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/NameIterator.java
@@ -32,7 +32,7 @@ import static org.apache.sis.internal.util.Strings.appendUnicodeIdentifier;
  * An iterator over the {@linkplain IdentifiedObject#getName() name} of an identified object followed by
  * {@linkplain IdentifiedObject#getAlias() aliases} which are instance of {@link Identifier}.
  * This iterator is used for {@link AbstractIdentifiedObject} XML marshalling because GML merges the name
- * and aliases in a single {@code <gml:name>} property. However this iterator is useful only if the aliases
+ * and aliases in a single {@code <gml:name>} property. However, this iterator is useful only if the aliases
  * are instances of {@link NamedIdentifier}, or any other implementation which is both a name and an identifier.
  *
  * <p>This class also opportunistically provide helper methods for {@link AbstractIdentifiedObject} marshalling.</p>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
index 2570eca82f..6603f81713 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractCRS.java
@@ -66,7 +66,7 @@ import static org.apache.sis.internal.referencing.WKTUtilities.toFormattable;
  *   int dimension = crs.getCoordinateSystem().getDimension();
  * }
  *
- * However most subclasses restrict the allowed number of dimensions.
+ * However, most subclasses restrict the allowed number of dimensions.
  *
  * <h2>Instantiation</h2>
  * This class is conceptually <cite>abstract</cite>, even if it is technically possible to instantiate it.
@@ -344,7 +344,7 @@ public class AbstractCRS extends AbstractReferenceSystem implements CoordinateRe
                  * Copy properties (scope, domain of validity) except the identifier (e.g. "EPSG:4326")
                  * because the modified CRS is no longer conform to the authoritative definition.
                  * If name contains a namespace (e.g. "EPSG"), remove that namespace for the same reason.
-                 * For example "EPSG:WGS 84" will become simply "WGS 84".
+                 * For example, "EPSG:WGS 84" will become simply "WGS 84".
                  */
                 Map<String,?> properties = IdentifiedObjects.getProperties(this, IDENTIFIERS_KEY);
                 Identifier name = getName();
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
index 4b3a1316d9..2d31473db8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/AbstractDerivedCRS.java
@@ -153,7 +153,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> extends AbstractCRS impl
      *
      * <p><b>WARNING:</b> this method is invoked at construction time and will invoke indirectly
      * (through {@link DefaultConversion}) the {@link #getCoordinateSystem()} method on {@code this}.
-     * Consequently this method shall be invoked only after the construction of this {@code AbstractDerivedCRS}
+     * Consequently, this method shall be invoked only after the construction of this {@code AbstractDerivedCRS}
      * instance is advanced enough for allowing the {@code getCoordinateSystem()} method to execute.
      * Subclasses may consider to make the {@code getCoordinateSystem()} method final for better guarantees.</p>
      */
@@ -174,7 +174,7 @@ abstract class AbstractDerivedCRS<C extends Conversion> extends AbstractCRS impl
      * Returns the type of conversion associated to this {@code AbstractDerivedCRS}.
      *
      * <p><b>WARNING:</b> this method is invoked (indirectly) at construction time.
-     * Consequently it shall return a constant value - this method is not allowed to
+     * Consequently, it shall return a constant value - this method is not allowed to
      * depend on the object state.</p>
      */
     abstract Class<C> getConversionType();
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
index 18c4e25747..b7f572b173 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultCompoundCRS.java
@@ -82,7 +82,7 @@ import org.apache.sis.io.wkt.Convention;
  * </div>
  *
  * Strictly speaking, only the flat list on the left side is allowed by OGC/ISO specifications.
- * However Apache SIS relaxes this rule by allowing hierarchies as shown on the right side. This
+ * However, Apache SIS relaxes this rule by allowing hierarchies as shown on the right side. This
  * flexibility allows SIS to preserve information about the (<var>x</var>,<var>y</var>,<var>z</var>)
  * part (e.g. the EPSG identifier) that would otherwise been lost. Users can obtain the list of their
  * choice by invoking {@link #getSingleComponents()} or {@link #getComponents()} respectively.
@@ -102,7 +102,7 @@ import org.apache.sis.io.wkt.Convention;
  *   <li>{@code GeocentricCRS} or three-dimensional {@code GeographicCRS} can be combined with {@code TemporalCRS}.</li>
  * </ul>
  *
- * However users are encouraged to follow ISO 19162 restriction for better portability.
+ * However, users are encouraged to follow ISO 19162 restriction for better portability.
  *
  * <h2>Immutability and thread safety</h2>
  * This class is immutable and thus thread-safe if the property <em>values</em> (not necessarily the map itself)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
index 1973129014..d0b4aca653 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultDerivedCRS.java
@@ -301,7 +301,7 @@ public class DefaultDerivedCRS extends AbstractDerivedCRS<Conversion> implements
                     /*
                      * This case may happen for baseCRS of kind GeodeticCRS, ProjectedCRS or EngineeringCRS.
                      * But only the latter is associated to EngineeringDatum; the two formers are associated
-                     * to GeodeticDatum. Consequently we can implement the EngineeringCRS.getDatum() method
+                     * to GeodeticDatum. Consequently, we can implement the EngineeringCRS.getDatum() method
                      * only if the base CRS is itself of kind EngineeringCRS.  Otherwise we will return the
                      * "type-neutral" DefaultDerivedCRS implementation.  Note that even in the latter case,
                      * the WKT format will still be able to detect that the WKT keyword is "EngineeringCRS".
@@ -630,7 +630,7 @@ public class DefaultDerivedCRS extends AbstractDerivedCRS<Conversion> implements
 
     /**
      * A derived geodetic CRS.  Note that base CRS of kind {@link GeodeticCRS} can be used both with this class
-     * and with {@link org.apache.sis.referencing.crs.DefaultDerivedCRS.Engineering}. Consequently an ambiguity
+     * and with {@link org.apache.sis.referencing.crs.DefaultDerivedCRS.Engineering}. Consequently, an ambiguity
      * may exist when choosing the kind if {@code DerivedCRS} to create for a given {@code GeodeticCRS}.
      */
     @XmlTransient
@@ -914,7 +914,7 @@ public class DefaultDerivedCRS extends AbstractDerivedCRS<Conversion> implements
      *
      * <div class="note"><b>Note:</b>
      * there is no setter at this time because SIS does not store this information in a {@code DefaultDerivedCRS}
-     * field. Instead, we rely on the interface that we implement. For example a {@code DefaultDerivedCRS} of type
+     * field. Instead, we rely on the interface that we implement. For example, a {@code DefaultDerivedCRS} of type
      * {@code SC_DerivedCRSType.vertical} will implement the {@link VerticalCRS} interface.</div>
      */
     @XmlElement(name = "derivedCRSType", required = true)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
index 39f071c8d8..a15aa3a391 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultEngineeringCRS.java
@@ -313,7 +313,7 @@ public class DefaultEngineeringCRS extends AbstractCRS implements EngineeringCRS
      *     }
      * }
      *
-     * However our attempts to apply this approach worked for {@code DefaultParameterValue} but not for this class:
+     * However, our attempts to apply this approach worked for {@code DefaultParameterValue} but not for this class:
      * for an unknown reason, the unmarshalled CS object is empty.</div>
      *
      * @see <a href="http://issues.apache.org/jira/browse/SIS-166">SIS-166</a>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
index ccb184fa5d..21b4782194 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultGeodeticCRS.java
@@ -254,7 +254,7 @@ class DefaultGeodeticCRS extends AbstractCRS implements GeodeticCRS { // If made
         }
         /*
          * For WKT 1, the keyword depends on the subclass: "GeogCS" for GeographicCRS or "GeocCS" for GeocentricCRS.
-         * However we cannot rely on the subclass for choosing the keyword, because after XML unmarhaling we only
+         * However, we cannot rely on the subclass for choosing the keyword, because after XML unmarhaling we only
          * have a GeodeticCRS. We need to make the choice in this base class. The CS type is a sufficient criterion.
          */
         if (isWKT1) {
@@ -324,7 +324,7 @@ class DefaultGeodeticCRS extends AbstractCRS implements GeodeticCRS { // If made
      *     }
      * }
      *
-     * However our attempts to apply this approach worked for {@code DefaultParameterValue} but not for this class:
+     * However, our attempts to apply this approach worked for {@code DefaultParameterValue} but not for this class:
      * for an unknown reason, the unmarshalled CS object is empty.</div>
      *
      * @see <a href="http://issues.apache.org/jira/browse/SIS-166">SIS-166</a>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
index 5041b9da27..c7b5cb3bac 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/DefaultImageCRS.java
@@ -306,7 +306,7 @@ public class DefaultImageCRS extends AbstractCRS implements ImageCRS {
      *     }
      * }
      *
-     * However our attempts to apply this approach worked for {@code DefaultParameterValue} but not for this class:
+     * However, our attempts to apply this approach worked for {@code DefaultParameterValue} but not for this class:
      * for an unknown reason, the unmarshalled CS object is empty.</div>
      *
      * @see <a href="http://issues.apache.org/jira/browse/SIS-166">SIS-166</a>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/SubTypes.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/SubTypes.java
index c463dc1d41..7feb5c79e7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/SubTypes.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/crs/SubTypes.java
@@ -130,7 +130,7 @@ final class SubTypes implements Comparator<Object> {
                 /*
                  * Result of XML unmarshalling — keep as-is. We avoid creating a new object because it
                  * would break object identities specified in GML document by the xlink:href attribute.
-                 * However we may revisit this policy in the future. See SC_CRS.setElement(AbstractCRS).
+                 * However, we may revisit this policy in the future. See SC_CRS.setElement(AbstractCRS).
                  */
                 return (DefaultGeodeticCRS) object;
             }
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
index 366976ac88..1787bf4fd2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AbstractCS.java
@@ -62,7 +62,7 @@ import static org.apache.sis.util.ArgumentChecks.*;
  *
  * <p>This class is conceptually <cite>abstract</cite>, even if it is technically possible to instantiate it.
  * Typical applications should create instances of the most specific subclass with {@code Default} prefix instead.
- * An exception to this rule may occurs when it is not possible to identify the exact type. For example it is not
+ * An exception to this rule may occurs when it is not possible to identify the exact type. For example, it is not
  * possible to infer the exact coordinate system from <cite>Well Known Text</cite> (WKT) version 1 in some cases
  * (e.g. in a {@code LOCAL_CS} element). In such exceptional situation, a plain {@code AbstractCS} object may be
  * instantiated.</p>
@@ -182,7 +182,7 @@ public class AbstractCS extends AbstractIdentifiedObject implements CoordinateSy
             ensureNonNullElement("axes[#].unit", i, unit);
             /*
              * Ensures that axis direction and units are compatible with the
-             * coordinate system to be created. For example CartesianCS will
+             * coordinate system to be created. For example, CartesianCS will
              * accept only linear or dimensionless units.
              */
             switch (validateAxis(direction, unit)) {
@@ -405,7 +405,7 @@ public class AbstractCS extends AbstractIdentifiedObject implements CoordinateSy
                     final CoordinateSystem fromDB = ((CSAuthorityFactory) factory).createCoordinateSystem(epsg.toString());
                     if (fromDB instanceof AbstractCS) {
                         /*
-                         * We should compare axes strictly using Arrays.equals(…). However axes in different order
+                         * We should compare axes strictly using Arrays.equals(…). However, axes in different order
                          * get different codes in EPSG database, which may them not strictly equal. We would need
                          * another comparison mode ignoring only the authority code. We don't add this complexity
                          * for now, and rather rely on the check for EPSG code done by the caller. If the original
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
index cb866ea9c7..ec8e45eb98 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxesConvention.java
@@ -82,7 +82,7 @@ import org.apache.sis.measure.Units;
  * The axis order is specified by the authority (typically a national agency) defining the Coordinate Reference System
  * (CRS). The order depends on the CRS type and the country defining the CRS. In the case of geographic CRS, the
  * (<var>latitude</var>, <var>longitude</var>) axis order is widely used by geographers and pilotes for centuries.
- * However software developers tend to consistently use the (<var>x</var>,<var>y</var>) order for every kind of CRS.
+ * However, software developers tend to consistently use the (<var>x</var>,<var>y</var>) order for every kind of CRS.
  * Those different practices resulted in contradictory definitions of axis order for almost every CRS of kind
  * {@code GeographicCRS}, for some {@code ProjectedCRS} in the South hemisphere (South Africa, Australia, <i>etc.</i>)
  * and for some polar projections among others.
@@ -99,7 +99,7 @@ import org.apache.sis.measure.Units;
  * <h2>Note on range of longitude values</h2>
  * Most geographic CRS have a longitude axis defined in the [-180 … +180]° range. All map projections in Apache SIS are
  * designed to work in that range. This is also the range of {@link Math} trigonometric functions like {@code atan2(y,x)}.
- * However some data use the [0 … 360]° range instead. A geographic CRS can be shifted to that range of longitude values
+ * However, some data use the [0 … 360]° range instead. A geographic CRS can be shifted to that range of longitude values
  * using the {@link #POSITIVE_RANGE} enumeration value. The choice of longitude range will impact not only some
  * coordinate conversions, but also the methods that verify the <cite>domain of validity</cite>
  * (e.g. {@link org.apache.sis.geometry.GeneralEnvelope#normalize()}).
@@ -136,7 +136,7 @@ public enum AxesConvention implements AxisFilter {
      * <div class="note"><b>Rational:</b>
      * The reason why we do not normalize the range and the prime meridian is because doing so
      * would cause the conversion between old and new coordinate systems to be non-affine for axes
-     * having {@link org.opengis.referencing.cs.RangeMeaning#WRAPAROUND}. Furthermore changing the
+     * having {@link org.opengis.referencing.cs.RangeMeaning#WRAPAROUND}. Furthermore, changing the
      * prime meridian would be a datum change rather than a coordinate system change, and datum
      * changes are more difficult to handle by coordinate operation factories.
      * </div>
@@ -271,11 +271,11 @@ public enum AxesConvention implements AxisFilter {
      *
      * <h4>Usage</h4>
      * The most frequent usage of this enum is for shifting longitude values from the [-180 … +180]° range
-     * to the [0 … 360]° range. However this enum could also be used with climatological calendars if their
+     * to the [0 … 360]° range. However, this enum could also be used with climatological calendars if their
      * time axis has a wrapround range meaning.
      *
      * <p>Note that conversions from an coordinate system using the [-180 … +180]° range to a coordinate system
-     * using the [0 … 360]° range may not be affine. For example the data in the West hemisphere ([-180 … 0]°)
+     * using the [0 … 360]° range may not be affine. For example, the data in the West hemisphere ([-180 … 0]°)
      * may need to move on the right side of the East hemisphere ([180 … 360]°).
      * Some geometries may need to be separated in two parts, and others may need to be merged.</p>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java
index 01bf6af5f5..b437269198 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/AxisFilter.java
@@ -33,7 +33,7 @@ import javax.measure.Unit;
  * </div>
  *
  * <p>Note that filtering one or more axes may result in a change of coordinate system type.
- * For example excluding the <var>z</var> axis of a {@linkplain DefaultCylindricalCS cylindrical} coordinate system
+ * For example, excluding the <var>z</var> axis of a {@linkplain DefaultCylindricalCS cylindrical} coordinate system
  * results in a {@linkplain DefaultPolarCS polar} coordinate system.</p>
  *
  * <h2>Default implementation</h2>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
index 531b4a2401..31120f94a1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/CoordinateSystems.java
@@ -114,7 +114,7 @@ public final class CoordinateSystems extends Static {
          * Some EPSG direction names are of the form "South along 180 deg". We check that the
          * direction before "along" is valid and create a new axis direction if it is. We can
          * not just replace "South along 180 deg" by "South" because the same CRS may use two
-         * of those directions. For example EPSG:32661 has the following axis direction:
+         * of those directions. For example, EPSG:32661 has the following axis direction:
          *
          * South along 180 deg
          * South along 90 deg East
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
index e73f10478a..851dc82bd0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/DefaultCoordinateSystemAxis.java
@@ -78,7 +78,7 @@ import static org.apache.sis.internal.referencing.NilReferencingObject.UNNAMED;
  * <h2>Axis names</h2>
  * In some case, the axis name is constrained by ISO 19111 depending on the
  * {@linkplain org.opengis.referencing.crs.CoordinateReferenceSystem coordinate reference system} type.
- * This constraint works in two directions. For example the names <cite>"geodetic latitude"</cite> and
+ * This constraint works in two directions. For example, the names <cite>"geodetic latitude"</cite> and
  * <cite>"geodetic longitude"</cite> shall be used to designate the coordinate axis names associated
  * with a {@link org.opengis.referencing.crs.GeographicCRS}. Conversely, these names shall not be used
  * in any other context. See the GeoAPI {@link CoordinateSystemAxis} javadoc for more information.
@@ -161,7 +161,7 @@ public class DefaultCoordinateSystemAxis extends AbstractIdentifiedObject implem
 
     /**
      * Aliases for the "x" and "y" abbreviations (special cases). "x" and "y" are sometimes used (especially in WKT)
-     * for meaning "Easting" and "Northing". However we shall not add "x" and "y" as aliases in the {@link #ALIASES}
+     * for meaning "Easting" and "Northing". However, we shall not add "x" and "y" as aliases in the {@link #ALIASES}
      * map, because experience has shown that doing so cause a lot of undesirable side effects. The "x" abbreviation
      * is used for too many things ("Easting", "Westing", "Geocentric X", "Display right", "Display left") and likewise
      * for "y". Declaring them as aliases introduces confusion in many places. Instead, the "x" and "y" cases are
@@ -638,10 +638,10 @@ public class DefaultCoordinateSystemAxis extends AbstractIdentifiedObject implem
         Identifier name = that.getName();
         if (name != UNNAMED) {
             /*
-             * Checking the abbreviation is not sufficient. For example the polar angle and the
+             * Checking the abbreviation is not sufficient. For example, the polar angle and the
              * spherical latitude have the same abbreviation (θ). Legacy names like "Longitude"
              * (in addition to ISO 19111 "Geodetic longitude") bring more potential confusion.
-             * Furthermore, not all implementers use the greek letters. For example most CRS in
+             * Furthermore, not all implementers use the greek letters. For example, most CRS in
              * WKT format use the "Lat" abbreviation instead of the greek letter φ.
              * For comparisons without metadata, we ignore the unreliable abbreviation and check
              * the axis name instead. These names are constrained by ISO 19111 specification
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java
index 8010bc2365..e9a41d00f1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/cs/Normalizer.java
@@ -382,7 +382,7 @@ final class Normalizer implements Comparable<Normalizer> {
      *
      * <p>This method shifts the axis {@linkplain CoordinateSystemAxis#getMinimumValue() minimum} and
      * {@linkplain CoordinateSystemAxis#getMaximumValue() maximum} values by a multiple of half the range
-     * (typically 180°). This method does not change the meaning of coordinate values. For example a longitude
+     * (typically 180°). This method does not change the meaning of coordinate values. For example, a longitude
      * of -60° still locate the same point in the old and the new coordinate system. But the preferred way to
      * locate that point become the 300° value if the longitude range has been shifted to positive values.</p>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
index 9eb7670f2f..c95153d524 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/BursaWolfParameters.java
@@ -465,7 +465,7 @@ public class BursaWolfParameters extends FormattableObject implements Cloneable,
      * <h4>Inverse transformation</h4>
      * The inverse transformation can be approximated by reversing the sign of the 7 parameters before to use them
      * in the above matrix. This is often considered sufficient since <cite>position vector transformations</cite>
-     * are themselves approximations. However Apache SIS will rather use
+     * are themselves approximations. However, Apache SIS will rather use
      * {@link org.apache.sis.referencing.operation.matrix.MatrixSIS#inverse()} in order to increase the chances
      * that concatenation of transformations <var>A</var> → <var>B</var> followed by <var>B</var> → <var>A</var>
      * gives back the identity transform.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java
index c71cf609e7..0d1b02f53c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java
@@ -73,7 +73,7 @@ import org.apache.sis.measure.Units;
  *   <li><b>Datum shift by geographic translations</b><br>
  *   NADCON and NTv2 grids are defined with longitude (<var>λ</var>) and latitude (<var>φ</var>) inputs in angular
  *   <em>degrees</em> and give (<var>Δλ</var>, <var>Δφ</var>) translations in angular <em>seconds</em>.
- *   However SIS stores the translation values in units of grid cell rather than angular seconds.
+ *   However, SIS stores the translation values in units of grid cell rather than angular seconds.
  *   The translations will be applied by {@link org.apache.sis.referencing.operation.transform.InterpolatedTransform}
  *   directly on the given (<var>λ</var>,<var>φ</var>) coordinates.
  *   </li>
@@ -100,7 +100,7 @@ import org.apache.sis.measure.Units;
  * Implementations of this class shall be immutable and thread-safe.
  *
  * <h2>Number of dimensions</h2>
- * Input coordinates and translation vectors can have any number of dimensions. However in the current implementation,
+ * Input coordinates and translation vectors can have any number of dimensions. However, in the current implementation,
  * only the two first dimensions are used for interpolating the translation vectors. This restriction appears in the
  * following field and method signatures:
  *
@@ -120,7 +120,7 @@ import org.apache.sis.measure.Units;
  *
  * <h2>Longitude wraparound</h2>
  * Some grids are defined over an area beyond the [−180° … +180°] range of longitudes.
- * For example NADCON grid for Alaska is defined in a [−194° … −127.875°] range,
+ * For example, NADCON grid for Alaska is defined in a [−194° … −127.875°] range,
  * in which case a longitude of 170° needs to be replaced by −190° before it can be processed by the grid.
  * The default {@code DatumShiftGrid} class does not apply longitude wraparound automatically
  * (it does not even know which axis, if any, is longitude),
@@ -324,7 +324,7 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
              *
              *    env.setRange(i, -0.5, gridSize[i] - 0.5);
              *
-             * However it was causing spurious overlaps when two grids are side-by-side
+             * However, it was causing spurious overlaps when two grids are side-by-side
              * (no overlapping) but one grid has larger cells than the other other grid.
              * The 0.5 cell expansion caused the grid with larger cells to overlap the
              * grid with smaller cells. This case happens with NTv2 datum shift grid.
@@ -777,7 +777,7 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
     /**
      * Invoked when a {@code gridX} or {@code gridY} coordinate is outside the range of valid grid coordinates.
      * This method can replace the invalid coordinate by a valid one. The main purpose is to handle datum shift
-     * grids crossing the anti-meridian. For example NADCON grid for Alaska is defined in a [−194° … −127.875°]
+     * grids crossing the anti-meridian. For example, NADCON grid for Alaska is defined in a [−194° … −127.875°]
      * longitude range, so a longitude of 170° needs to be converted to a longitude of −190° before it can be
      * processed by that grid.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
index e6946dda4a..4ee9e84a07 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultGeodeticDatum.java
@@ -73,7 +73,7 @@ import static org.apache.sis.internal.referencing.WKTUtilities.toFormattable;
  * <ol class="verbose">
  *   <li><b>Fallback for datum shifts</b><br>
  *     There is different methods for transforming coordinates from one geodetic datum to another datum,
- *     and Bursa-Wolf parameters are used with some of them. However different set of parameters may exist
+ *     and Bursa-Wolf parameters are used with some of them. However, different set of parameters may exist
  *     for the same pair of (<var>source</var>, <var>target</var>) datum, so it is often not sufficient to
  *     know those datum. The (<var>source</var>, <var>target</var>) pair of CRS are often necessary,
  *     sometimes together with the geographic extent of the coordinates to transform.
@@ -600,7 +600,7 @@ public class DefaultGeodeticDatum extends AbstractDatum implements GeodeticDatum
                 /*
                  * Bursa-Wolf parameters are considered ignorable metadata. This is needed in order to get
                  * equalsIgnoreMetadata(…) to return true when comparing WGS84 datums with and without the
-                 * WKT 1 "TOWGS84[0,0,0,0,0,0,0]" element. Furthermore those Bursa-Wolf parameters are not
+                 * WKT 1 "TOWGS84[0,0,0,0,0,0,0]" element. Furthermore, those Bursa-Wolf parameters are not
                  * part of ISO 19111 specification.
                  */
             }
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
index a0a974fd0e..d13e602c7b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultPrimeMeridian.java
@@ -341,15 +341,15 @@ public class DefaultPrimeMeridian extends AbstractIdentifiedObject implements Pr
      *
      * <h4>Rational</h4>
      * According the ISO 19162 standard, it is legal to omit the {@code PrimeMeridian} angular unit when
-     * that unit is the same than the unit of the axes of the enclosing {@code GeographicCRS}. However the
+     * that unit is the same than the unit of the axes of the enclosing {@code GeographicCRS}. However, the
      * relationship between the CRS axes and the prime meridian is less obvious in WKT2 than it was in WKT1,
      * because the WKT2 {@code UNIT[…]} element is far from the {@code PRIMEM[…]} element while it was just
-     * below it in WKT1.   Furthermore, the {@code PRIMEM[…]} unit is one source of incompatibility between
+     * below it in WKT1. Furthermore, the {@code PRIMEM[…]} unit is one source of incompatibility between
      * various WKT1 parsers (i.e. some popular libraries are not conform to OGC 01-009 and ISO 19162).
      * So we are safer to unconditionally format any unit other than degrees, even if we could legally
      * omit them.
      *
-     * <p>However in order to keep the WKT slightly simpler in {@link Convention#WKT2_SIMPLIFIED} mode,
+     * <p>However, in order to keep the WKT slightly simpler in {@link Convention#WKT2_SIMPLIFIED} mode,
      * we make an exception to the above-cited safety if the {@code UNIT[…]} element is formatted right
      * below the {@code PRIMEM[…]} one, which happen if we are inside a base CRS.
      * See {@link #isElementOfBaseCRS(Formatter)} for more discussion.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
index 9d8aab5e8f..d1ee13c462 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DefaultVerticalDatum.java
@@ -277,7 +277,7 @@ public class DefaultVerticalDatum extends AbstractDatum implements VerticalDatum
             default: {
                 /*
                  * VerticalDatumType is considered as metadata because it is related to the anchor definition,
-                 * which is itself considered as metadata. Furthermore GeodeticObjectParser and EPSGDataAccess
+                 * which is itself considered as metadata. Furthermore, GeodeticObjectParser and EPSGDataAccess
                  * do not always set this property to the same value: the former uses the information provided
                  * by the coordinate system axis while the other does not.
                  */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java
index c3868daa5a..350109340b 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/AuthorityFactoryProxy.java
@@ -38,7 +38,7 @@ import org.apache.sis.internal.util.Strings;
  * Delegates object creations to one of the {@code create} methods in a backing {@code AuthorityFactory}.
  * It is possible to use the generic {@link AuthorityFactory#createObject(String)} method instead of this class,
  * but some factories are more efficient when we use the most specific {@code create} method.
- * For example when using a {@linkplain org.apache.sis.referencing.factory.sql.EPSGDataAccess},
+ * For example, when using a {@linkplain org.apache.sis.referencing.factory.sql.EPSGDataAccess},
  * invoking {@link GeodeticAuthorityFactory#createProjectedCRS(String)} instead of
  * {@code AuthorityFactory.createObject(String)} method reduce the amount of tables to be queried.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/CommonAuthorityFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/CommonAuthorityFactory.java
index 620690aca4..fbb893350e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/CommonAuthorityFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/CommonAuthorityFactory.java
@@ -181,7 +181,7 @@ import static java.util.logging.Logger.getLogger;
  *
  * <h2>Note on codes in CRS namespace</h2>
  * The format is usually "{@code CRS:}<var>n</var>" where <var>n</var> is a number like 27, 83 or 84.
- * However this factory is lenient and allows the {@code CRS} part to be repeated as in {@code "CRS:CRS84"}.
+ * However, this factory is lenient and allows the {@code CRS} part to be repeated as in {@code "CRS:CRS84"}.
  * It also accepts {@code "OGC"} as a synonymous of the {@code "CRS"} namespace.
  *
  * <div class="note"><b>Examples:</b>
@@ -425,7 +425,7 @@ public class CommonAuthorityFactory extends GeodeticAuthorityFactory implements
         if (parsed.isNumeric && parsed.parameters().length == 0) {
             /*
              * For codes in the "AUTO(2)" namespace without parameters, we cannot rely on the default implementation
-             * because it would fail to create the ProjectedCRS instance. Instead we return a generic description.
+             * because it would fail to create the ProjectedCRS instance. Instead, we return a generic description.
              * Note that we do not execute this block if parametes were specified. If there is parameters,
              * then we instead rely on the default implementation for a more accurate description text.
              * Note also that we do not restrict to "AUTOx" namespaces because erroneous namespaces exist
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactory.java
index 382ce24749..ba8cf41646 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactory.java
@@ -85,7 +85,7 @@ import static java.util.logging.Logger.getLogger;
  * else in the Java virtual machine, but will be discarded (and recreated on the fly if needed) otherwise.
  *
  * <h2>Multi-threading</h2>
- * The cache managed by this class is concurrent. However the Data Access Objects (DAO) are assumed non-concurrent.
+ * The cache managed by this class is concurrent. However, the Data Access Objects (DAO) are assumed non-concurrent.
  * If two or more threads are accessing this factory at the same time, then two or more Data Access Object instances
  * may be created. The maximal amount of instances to create is specified at {@code ConcurrentAuthorityFactory}
  * construction time. If more Data Access Object instances are needed, some of the threads will block until an
@@ -247,7 +247,7 @@ public abstract class ConcurrentAuthorityFactory<DAO extends GeodeticAuthorityFa
     /**
      * {@code true} if the call to {@link #closeExpired()} is scheduled for future execution in the background
      * cleaner thread. A value of {@code true} implies that this factory contains at least one active data access.
-     * However the reciprocal is not true: this field may be set to {@code false} while a DAO is currently in use
+     * However, the reciprocal is not true: this field may be set to {@code false} while a DAO is currently in use
      * because this field is set to {@code true} only when a worker factory is {@linkplain #release released}.
      *
      * <p>Note that we cannot use {@code !availableDAOs.isEmpty()} as a replacement of {@code isCleanScheduled}
@@ -526,7 +526,7 @@ public abstract class ConcurrentAuthorityFactory<DAO extends GeodeticAuthorityFa
     /**
      * {@code true} if the call to {@link #closeExpired()} is scheduled for future execution in the background
      * cleaner thread. A value of {@code true} implies that this factory contains at least one active data access.
-     * However the reciprocal is not true: this field may be set to {@code false} while a DAO is currently in use
+     * However, the reciprocal is not true: this field may be set to {@code false} while a DAO is currently in use
      * because this field is set to {@code true} only when a worker factory is {@linkplain #release released}.
      *
      * <p>This method is used only for testing purpose.</p>
@@ -1779,7 +1779,7 @@ public abstract class ConcurrentAuthorityFactory<DAO extends GeodeticAuthorityFa
      * <h4>Synchronization note</h4>
      * Our public API claims that {@link IdentifiedObjectFinder}s are not thread-safe.
      * Nevertheless we synchronize this particular implementation for safety, because the consequence of misuse
-     * are more dangerous than other implementations. Furthermore this is also a way to assert that no code path
+     * are more dangerous than other implementations. Furthermore, this is also a way to assert that no code path
      * go to the {@link #create(AuthorityFactoryProxy, String)} method from a non-overridden public method.
      *
      * @author  Martin Desruisseaux (IRD, Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
index 1e783b0c63..cdd7cb9ddd 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/GeodeticObjectFactory.java
@@ -179,7 +179,7 @@ import org.apache.sis.xml.XML;
  *
  * <h2>Localization</h2>
  * All localizable attributes like {@code "remarks"} may have a language and country code suffix.
- * For example the {@code "remarks_fr"} property stands for remarks in {@linkplain Locale#FRENCH French} and
+ * For example, the {@code "remarks_fr"} property stands for remarks in {@linkplain Locale#FRENCH French} and
  * the {@code "remarks_fr_CA"} property stands for remarks in {@linkplain Locale#CANADA_FRENCH French Canadian}.
  * They are convenience properties for building the {@code InternationalString} value.
  *
@@ -1623,7 +1623,7 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * If the given text contains non-fatal anomalies
      * (unknown or unsupported WKT elements, inconsistent unit definitions, unparsable axis abbreviations, <i>etc.</i>),
      * warnings may be reported in a {@linkplain java.util.logging.Logger logger} named {@code "org.apache.sis.io.wkt"}.
-     * However this parser does not verify if the overall parsed object matches the EPSG (or other authority) definition,
+     * However, this parser does not verify if the overall parsed object matches the EPSG (or other authority) definition,
      * since this geodetic object factory is not an {@linkplain GeodeticAuthorityFactory authority factory}.
      * For such verification, see the {@link org.apache.sis.referencing.CRS#fromWKT(String)} convenience method.
      *
@@ -1631,7 +1631,7 @@ public class GeodeticObjectFactory extends AbstractFactory implements CRSFactory
      * The default implementation uses a shared instance of {@link org.apache.sis.io.wkt.WKTFormat}
      * with the addition of thread-safety. This is okay for occasional use,
      * but is sub-optimal if this method is extensively used in a multi-thread environment.
-     * Furthermore this method offers no control on the WKT {@linkplain org.apache.sis.io.wkt.Convention conventions}
+     * Furthermore, this method offers no control on the WKT {@linkplain org.apache.sis.io.wkt.Convention conventions}
      * in use and on the handling of {@linkplain org.apache.sis.io.wkt.Warnings warnings}.
      * Applications which need to parse a large amount of WKT strings should consider to use
      * the {@link org.apache.sis.io.wkt.WKTFormat} class instead of this method.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java
index 1a51a0dfdf..4bdedb862d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectFinder.java
@@ -251,7 +251,7 @@ public class IdentifiedObjectFinder {
     /**
      * Sets whether the search should ignore coordinate system axes.
      * If this property is set to {@code true}, then the search will compare only the coordinate system type
-     * and dimension. The axis names, orientation and units will be ignored. For example the {@code find(…)}
+     * and dimension. The axis names, orientation and units will be ignored. For example, the {@code find(…)}
      * method may return a Coordinate Reference System object with (<var>latitude</var>, <var>longitude</var>)
      * axes even if the given object had (<var>longitude</var>, <var>latitude</var>) axes.
      *
@@ -565,7 +565,7 @@ public class IdentifiedObjectFinder {
      * Returns a set of authority codes that <strong>may</strong> identify the same object than the specified one.
      * The returned set must contains <em>at least</em> the code of every objects that are
      * {@link ComparisonMode#APPROXIMATE approximately equal} to the specified one.
-     * However the set may conservatively contains the code for more objects if an exact search is too expensive.
+     * However, the set may conservatively contains the code for more objects if an exact search is too expensive.
      *
      * <p>This method is invoked by the default {@link #find(IdentifiedObject)} method implementation.
      * The caller iterates through the returned codes, instantiate the objects and compare them with
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java
index ab0c253bc3..c8f6794fc4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/IdentifiedObjectSet.java
@@ -53,7 +53,7 @@ import org.apache.sis.util.Classes;
  * <p>Elements can be added to this collection with calls to {@link #addAuthorityCode(String)} for deferred
  * {@linkplain #createObject(String) object creation}, or to {@link #add(IdentifiedObject)} for objects
  * that are already instantiated. This collection cannot contain two {@code IdentifiedObject} instances
- * having the same identifier. However the identifiers used by this class can be controlled by overriding
+ * having the same identifier. However, the identifiers used by this class can be controlled by overriding
  * {@link #getAuthorityCode(IdentifiedObject)}.</p>
  *
  * <p>Iterations over elements in this collection preserve insertion order.</p>
@@ -309,7 +309,7 @@ public class IdentifiedObjectSet<T extends IdentifiedObject> extends AbstractSet
                      * The check for 'containsKey' is a paranoiac check in case the element has been removed
                      * in another thread while we were creating the object. This is likely to be unnecessary
                      * in the vast majority of cases where the set of codes is never modified after this set
-                     * has been published. However, if someone decided to do such concurrent modifications,
+                     * has been published. However if someone decided to do such concurrent modifications,
                      * not checking for concurrent removal could be a subtle and hard-to-find bug, so we are
                      * better to be safe. Note that if a concurrent removal happened, we still return the non-null
                      * object but we do not put it in this IdentifiedObjectSet. This behavior is as if this method
@@ -395,7 +395,7 @@ public class IdentifiedObjectSet<T extends IdentifiedObject> extends AbstractSet
      * will be re-thrown as an unchecked {@link BackingStoreException}.
      *
      * <p>This iterator is <strong>not</strong> thread safe – iteration should be done in a single thread.
-     * However the iterator is robust to concurrent changes in {@code IdentifiedObjectSet} during iteration.</p>
+     * However, the iterator is robust to concurrent changes in {@code IdentifiedObjectSet} during iteration.</p>
      *
      * @return an iterator over all {@code IdentifiedObject} instances in this set, in insertion order.
      * @throws BackingStoreException if an error occurred while creating the iterator.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/LazySynchronizedIterator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/LazySynchronizedIterator.java
index e4c7bae868..e633537994 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/LazySynchronizedIterator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/LazySynchronizedIterator.java
@@ -25,7 +25,7 @@ import org.apache.sis.internal.util.AbstractIterator;
  * All uses of an {@code Iterable<E>} (including its iterator) is synchronized on that {@code Iterable} instance.
  *
  * <p>Note that despite the above-cited synchronization, this iterator is <strong>not</strong> thread-safe:
- * each thread needs to use its own iterator instance. However provided that the above condition is met,
+ * each thread needs to use its own iterator instance. However, provided that the above condition is met,
  * different threads can safely use their iterators concurrently even if the underlying {@code Iterable}s
  * were not thread-safe, because of the synchronization on {@code Iterable<E>} instances.</p>
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MissingFactoryResourceException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MissingFactoryResourceException.java
index c01e491ac8..185cac82a0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MissingFactoryResourceException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MissingFactoryResourceException.java
@@ -26,7 +26,7 @@ import org.opengis.util.FactoryException;
  *
  * <h2>Relationship with other exceptions</h2>
  * This exception means that the factory failed to create a particular object.
- * However the factory may succeed in creating other objects.
+ * However, the factory may succeed in creating other objects.
  * By contrast, {@link UnavailableFactoryException} means that the whole factory cannot be used at all.
  *
  * <p>This exception is <strong>not</strong> for unimplemented operations (for example map projections not yet supported).
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
index 6b86fc9711..5128c2ad48 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/MultiAuthoritiesFactory.java
@@ -88,7 +88,7 @@ import org.apache.sis.util.collection.BackingStoreException;
  * </ul>
  *
  * In such cases, the <var>type</var> specified in the URN may be used for invoking a more specific method.
- * However {@code MultiAuthoritiesFactory} uses the type information in the URN only for
+ * However, {@code MultiAuthoritiesFactory} uses the type information in the URN only for
  * delegating to a more specific method, never for delegating to a less specific method.
  * An exception will be thrown if the type in the URN is incompatible with the invoked method.
  *
@@ -142,7 +142,7 @@ import org.apache.sis.util.collection.BackingStoreException;
  *
  * <h2>Multi-threading</h2>
  * This class is thread-safe if all delegate factories are themselves thread-safe.
- * However the factory <em>providers</em>, which are given to the constructor as {@link Iterable} instances,
+ * However, the factory <em>providers</em>, which are given to the constructor as {@link Iterable} instances,
  * do not need to be thread-safe. See constructor Javadoc for more information.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
@@ -166,7 +166,7 @@ public class MultiAuthoritiesFactory extends GeodeticAuthorityFactory implements
      *
      * <p>The array may contain {@code null} elements when there is no provider for a given type.
      * Content of this array shall be immutable after construction time in order to avoid the need
-     * for synchronization when reading the array. However usage of an {@code Iterable} element
+     * for synchronization when reading the array. However, usage of an {@code Iterable} element
      * shall be synchronized on that {@code Iterable}.</p>
      */
     private final Iterable<? extends AuthorityFactory>[] providers;
@@ -216,7 +216,7 @@ public class MultiAuthoritiesFactory extends GeodeticAuthorityFactory implements
      *
      * <p>The {@code Iterable}s do not need to be thread-safe.
      * {@code MultiAuthoritiesFactory} will use them only in blocks synchronized on the {@code Iterable} instance.
-     * For example all usages of {@code crsFactory} will be done inside a {@code synchronized(crsFactory)} block.</p>
+     * For example, all usages of {@code crsFactory} will be done inside a {@code synchronized(crsFactory)} block.</p>
      *
      * <h4>Name collision</h4>
      * If an {@code Iterable} contains more than one factory for the same namespace and version,
@@ -304,7 +304,7 @@ public class MultiAuthoritiesFactory extends GeodeticAuthorityFactory implements
      *
      * <p>The {@link Set#contains(Object)} method of the returned set is lenient:
      * it accepts various ways to format a code even if the iterator returns only one form.
-     * For example the {@code contains(Object)} method may return {@code true} for {@code "EPSG:4326"},
+     * For example, the {@code contains(Object)} method may return {@code true} for {@code "EPSG:4326"},
      * {@code "EPSG::4326"}, {@code "urn:ogc:def:crs:EPSG::4326"}, <i>etc.</i> even if
      * the iterator returns only {@code "EPSG:4326"}.</p>
      *
@@ -555,7 +555,7 @@ public class MultiAuthoritiesFactory extends GeodeticAuthorityFactory implements
      *
      * <p>This iterator takes care of synchronization on the {@code Iterable<AuthorityFactory>} instances.
      * Note that despite the above-cited synchronization, the returned iterator is <strong>not</strong>
-     * thread-safe: each thread needs to use its own iterator instance. However provided that the above
+     * thread-safe: each thread needs to use its own iterator instance. However, provided that the above
      * condition is met, threads can safely use their iterators concurrently.</p>
      */
     final Iterator<AuthorityFactory> getAllFactories() {
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ReferenceKeeper.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ReferenceKeeper.java
index c03788c9ac..162659725f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ReferenceKeeper.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/ReferenceKeeper.java
@@ -33,7 +33,7 @@ import org.apache.sis.internal.util.StandardDateFormat;
  *       We have to maintain them in a separated collection.</li>
  *   <li>We have to be careful about the references kept in this object. The purpose is to prevent garbage collection,
  *       so {@link Object#equals(Object)} is not the appropriate contract for deciding which elements to put.
- *       For example a call to {@code Map.put(key, value)} may update the value without replacing the key if an
+ *       For example, a call to {@code Map.put(key, value)} may update the value without replacing the key if an
  *       entry already exists in the map, in which case the instance that is protected against garbage collection
  *       is not the intended one.</li>
  *   <li>We tried to use {@link java.util.LinkedHashMap} as a LRU map in a previous version.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
index 5058945bcf..b4999725b8 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/AuthorityCodes.java
@@ -40,7 +40,7 @@ import org.apache.sis.util.collection.IntegerList;
  *
  * <h2>Garbage collection</h2>
  * This method does not implement {@link AutoCloseable} because the same instance may be shared by many users,
- * since {@link EPSGDataAccess#getAuthorityCodes(Class)} caches {@code AuthorityCodes} instances. Furthermore we can
+ * since {@link EPSGDataAccess#getAuthorityCodes(Class)} caches {@code AuthorityCodes} instances. Furthermore, we can
  * not rely on the users closing {@code AuthorityCodes} themselves because this is not part of the usual contract
  * for Java collection classes (we could document that recommendation in method Javadoc, but not every developers
  * read Javadoc). Relying on the garbage collector for disposing this resource is far from ideal, but alternatives
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/BursaWolfInfo.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/BursaWolfInfo.java
index 3c19974980..eafa4f1bc0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/BursaWolfInfo.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/BursaWolfInfo.java
@@ -58,7 +58,7 @@ final class BursaWolfInfo {
      * The target CRS for which to collect Bursa-Wolf parameters. Apache SIS accepts an arbitrary number of targets,
      * but the {@code TOWGS84} element only needs the parameters toward the EPSG:4326 coordinate reference system.
      * For now we fix the number of target CRS to only 1, but we can increase that amount in a future SIS version
-     * if needed. However it is better to restrict the target CRS to those that use a world-wide datum only.
+     * if needed. However, it is better to restrict the target CRS to those that use a world-wide datum only.
      */
     static final int TARGET_CRS = 4326;
 
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java
index 193c695a75..d72294b1e1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGCodeFinder.java
@@ -114,7 +114,7 @@ final class EPSGCodeFinder extends IdentifiedObjectFinder {
      *
      * <div class="note"><b>Implementation note:</b>
      * The {@code super.find(…)} method performs a check (not documented in public API) for detecting
-     * when it is invoked recursively, which is the case here. Consequently the {@code super.find(…)}
+     * when it is invoked recursively, which is the case here. Consequently, the {@code super.find(…)}
      * behavior below is slightly different than usual: since invoked recursively, {@code super.find(…)}
      * checks the cache of the {@link ConcurrentAuthorityFactory} wrapper. If found, the dependency will
      * also be stored in the cache. This is desirable because this method may be invoked (indirectly) in
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
index c8723ed594..f4a9c48357 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/EPSGDataAccess.java
@@ -131,9 +131,9 @@ import static org.apache.sis.internal.referencing.ServicesForMetadata.CONNECTION
  * Current version of this class requires EPSG database version 6.6 or above.
  *
  * <h2>Object identifier (code or name)</h2>
- * EPSG codes are numerical identifiers. For example code 3395 stands for <cite>"WGS 84 / World Mercator"</cite>.
+ * EPSG codes are numerical identifiers. For example, code 3395 stands for <cite>"WGS 84 / World Mercator"</cite>.
  * Coordinate Reference Objects are normally created from their numerical codes, but this factory accepts also names.
- * For example {@code createProjectedCRS("3395")} and {@code createProjectedCRS("WGS 84 / World Mercator")} both fetch
+ * For example, {@code createProjectedCRS("3395")} and {@code createProjectedCRS("WGS 84 / World Mercator")} both fetch
  * the same object.
  * However, names may be ambiguous since the same name may be used for more than one object.
  * This is the case of <cite>"WGS 84"</cite> for instance.
@@ -1007,7 +1007,7 @@ codes:  for (int i=0; i<codes.length; i++) {
     /**
      * Makes sure that an object constructed from the database is not incoherent.
      * If the code supplied to a {@code createFoo(String)} method exists in the database,
-     * then we should find only one record. However we will do a paranoiac check and verify if there is
+     * then we should find only one record. However, we will do a paranoiac check and verify if there is
      * more records, using a {@code while (results.next())} loop instead of {@code if (results.next())}.
      * This method is invoked in the loop for making sure that, if there is more than one record
      * (which should never happen), at least they have identical content.
@@ -1121,7 +1121,7 @@ codes:  for (int i=0; i<codes.length; i++) {
          * record is really from the table we are looking for since different tables may have objects with the same ID.
          *
          * Some aliases are identical to the name except that some letters are replaced by their accented letters.
-         * For example "Reseau Geodesique Francais" → "Réseau Géodésique Français". If we find such alias, replace
+         * For example, "Reseau Geodesique Francais" → "Réseau Géodésique Français". If we find such alias, replace
          * the name by the alias so we have proper display in user interface. Notes:
          *
          *   - WKT formatting will still be compliant with ISO 19162 because the WKT formatter replaces accented
@@ -1431,7 +1431,7 @@ codes:  for (int i=0; i<codes.length; i++) {
                      *   PROJECTED CRS
                      *
                      *   NOTE: This method invokes itself indirectly, through createGeographicCRS.
-                     *         Consequently we cannot use `result` anymore after this block.
+                     *         Consequently, we cannot use `result` anymore after this block.
                      * ---------------------------------------------------------------------- */
                     case "projected": {
                         final String csCode  = getString(code, result,  8);
@@ -1487,7 +1487,7 @@ codes:  for (int i=0; i<codes.length; i++) {
                             try {
                                 /*
                                  * For a ProjectedCRS, the baseCRS is always geographic. So in theory we would not
-                                 * need the `instanceof` check. However the EPSG dataset version 8.9 also uses the
+                                 * need the `instanceof` check. However, the EPSG dataset version 8.9 also uses the
                                  * "projected" type for CRS that are actually derived CRS. See EPSG:5820 and 5821.
                                  *
                                  * TODO: there is an ambiguity when the source CRS is geographic but the operation
@@ -1677,7 +1677,7 @@ codes:  for (int i=0; i<codes.length; i++) {
                     /*
                      * Parse the date manually because it is declared as a VARCHAR instead of DATE in original
                      * SQL scripts. Apache SIS installer replaces VARCHAR by DATE, but we have no guarantee that
-                     * we are reading an EPSG database created by our installer. Furthermore an older version of
+                     * we are reading an EPSG database created by our installer. Furthermore, an older version of
                      * EPSG installer was using SMALLINT instead of DATE, because scripts before EPSG 9.0 were
                      * reporting only the epoch year.
                      */
@@ -2577,7 +2577,7 @@ codes:  for (int i=0; i<codes.length; i++) {
                      * Search for units.   We typically have many different units but all of the same dimension
                      * (for example metres, kilometres, feet, etc.). In such case, the units Set will have only
                      * one element and that element will be the most frequently used unit.  But some parameters
-                     * accept units of different dimensions. For example the "Coordinate 1 of evaluation point"
+                     * accept units of different dimensions. For example, the "Coordinate 1 of evaluation point"
                      * (EPSG:8617) parameter value may be in metres or in degrees.   In such case the units Set
                      * will have two elements.
                      */
@@ -2713,7 +2713,7 @@ next:                   while (r.next()) {
                     /*
                      * Wrap the unchecked ParameterNotFoundException into the checked NoSuchIdentifierException,
                      * which is a FactoryException subclass.  Note that in principle, NoSuchIdentifierException is for
-                     * MathTransforms rather than parameters. However we are close in spirit here since we are setting
+                     * MathTransforms rather than parameters. However, we are close in spirit here since we are setting
                      * up MathTransform's parameters. Using NoSuchIdentifierException allows CoordinateOperationSet to
                      * know that the failure is probably caused by a MathTransform not yet supported in Apache SIS
                      * (or only partially supported) rather than some more serious failure in the database side.
@@ -2895,7 +2895,7 @@ next:                   while (r.next()) {
                      *
                      * In EPSG database 6.7, all defining conversions are projections and their dimensions are always 2.
                      * However, this default number of dimensions is not generalizable to other kind of operation methods.
-                     * For example the "Geocentric translation" operation method has 3-dimensional source and target CRS.
+                     * For example, the "Geocentric translation" operation method has 3-dimensional source and target CRS.
                      */
                     boolean isDimensionKnown = true;
                     final int sourceDimensions, targetDimensions;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
index 455376f9c0..a23bcc37ff 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/SQLTranslator.java
@@ -43,7 +43,7 @@ import org.apache.sis.internal.metadata.sql.SQLUtilities;
  * <div class="note"><b>Example</b>
  * SQL statements for an EPSG dataset hosted on the <cite>PostgreSQL</cite> database need to have their brackets
  * ({@code '['} and {@code ']'}) replaced by the quote character ({@code '"'}) before to be sent to the database
- * driver. Furthermore table names may be different. So the following MS-Access query:
+ * driver. Furthermore, table names may be different. So the following MS-Access query:
  *
  * <ul>
  *   <li>{@code SELECT * FROM [Coordinate Reference System]}</li>
@@ -91,7 +91,7 @@ import org.apache.sis.internal.metadata.sql.SQLUtilities;
  *
  * By default this class auto-detects the schema that contains the EPSG tables and whether the table names are
  * the ones used by EPSG in the MS-Access version or the PostgreSQL, MySQL or Oracle version of the database.
- * Consequently it is legal to use the MS-Access table names, which are more readable, in a PostgreSQL database.
+ * Consequently, it is legal to use the MS-Access table names, which are more readable, in a PostgreSQL database.
  *
  * <h2>Thread safety</h2>
  * All {@code SQLTranslator} instances given to the {@link EPSGFactory} constructor
@@ -177,7 +177,7 @@ public class SQLTranslator implements Function<String,String> {
 
     /**
      * Whether the table names are prefixed by {@value #TABLE_PREFIX}. When installed by Apache SIS,
-     * the table names are not prefixed if the tables are stored in a schema. However the dataset may
+     * the table names are not prefixed if the tables are stored in a schema. However, the dataset may
      * have been installed manually by users following different rules.
      */
     private boolean isPrefixed;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
index 4dff311acd..4df3c3a943 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/TableInfo.java
@@ -80,7 +80,7 @@ final class TableInfo {
                 /*
                  * Above declaration could omit Derived, Temporal and Parametric cases because they are not defined
                  * by the EPSG repository (at least as of version 8.9). In particular we are not sure if EPSG would
-                 * chose to use "time" or "temporal". However omitting those types slow down a lot the search for
+                 * chose to use "time" or "temporal". However, omitting those types slow down a lot the search for
                  * CRS matching an existing one (even if it still work).
                  */
 
@@ -233,7 +233,7 @@ final class TableInfo {
     /**
      * Returns {@code true} if the given table {@code name} matches the {@code expected} name.
      * The given {@code name} may be prefixed by {@code "epsg_"} and may contain abbreviations of the full name.
-     * For example {@code "epsg_coordoperation"} is considered as a match for {@code "Coordinate_Operation"}.
+     * For example, {@code "epsg_coordoperation"} is considered as a match for {@code "Coordinate_Operation"}.
      *
      * <p>The table name should be one of the values enumerated in the {@code epsg_table_name} type of the
      * {@code EPSG_Prepare.sql} file.</p>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java
index 72828144d1..3c8f9c0fc4 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/factory/sql/package-info.java
@@ -46,9 +46,9 @@
  * <h2>The EPSG dataset</h2>
  * A widely-used factory is the <a href="https://epsg.org/">EPSG geodetic dataset</a>.
  * EPSG codes are numerical identifiers.
- * For example {@code "EPSG:4326"} is the EPSG identifier for the <cite>"WGS 84"</cite> geographic CRS.
+ * For example, {@code "EPSG:4326"} is the EPSG identifier for the <cite>"WGS 84"</cite> geographic CRS.
  * As an extension, the Apache SIS implementation accepts names as well as numeric identifiers.
- * For example the two following method calls fetch the same object:
+ * For example, the two following method calls fetch the same object:
  *
  * <ul>
  *   <li>{@code createProjectedCRS("27572")}</li>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
index d217f1843c..0056044b46 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractCoordinateOperation.java
@@ -775,7 +775,7 @@ check:      for (int isTarget=0; ; isTarget++) {        // 0 == source check; 1
      *
      * <div class="note"><b>Inverse relationship:</b>
      * sometimes the target dimensions returned by this method can be mapped directly to wraparound axes in source CRS,
-     * but this is not always the case. For example consider the following operation chain:
+     * but this is not always the case. For example, consider the following operation chain:
      *
      * <div style="text-align:center">source projected CRS ⟶ base CRS ⟶ target geographic CRS</div>
      *
@@ -862,7 +862,7 @@ check:      for (int isTarget=0; ; isTarget++) {        // 0 == source check; 1
                      * its "from base" conversion. The flag should never be set in any other circumstance,
                      * since this is an internal Apache SIS mechanism. If we know that we are comparing the
                      * AbstractDerivedCRS.fromBase conversion, then (in the way Apache SIS is implemented)
-                     * this.sourceCRS == AbstractDerivedCRS.baseCRS. Consequently we can relax the check of
+                     * this.sourceCRS == AbstractDerivedCRS.baseCRS. Consequently, we can relax the check of
                      * sourceCRS axis order if the mode is ComparisonMode.IGNORE_METADATA.
                      */
                     boolean debug = false;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
index a44cc95a55..850def6aa2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/AbstractSingleOperation.java
@@ -129,7 +129,7 @@ class AbstractSingleOperation extends AbstractCoordinateOperation implements Sin
         this.method = method;
         /*
          * Undocumented property, because SIS usually infers the parameters from the MathTransform.
-         * However there is a few cases, for example the Molodenski transform, where we cannot infer the
+         * However, there is a few cases, for example the Molodenski transform, where we cannot infer the
          * parameters easily because the operation is implemented by a concatenation of math transforms.
          */
         setParameterValues(Containers.property(properties, CoordinateOperations.PARAMETERS_KEY, ParameterValueGroup.class), null);
@@ -315,14 +315,14 @@ class AbstractSingleOperation extends AbstractCoordinateOperation implements Sin
          * dimensions, already checked above. We could also argue that `OperationMethod.parameters` are not metadata,
          * but their values should have been taken in account for the MathTransform creation, compared above.
          *
-         * Comparing the MathTransforms instead of parameters avoid the problem of implicit parameters. For example in
+         * Comparing the MathTransforms instead of parameters avoid the problem of implicit parameters. For example, in
          * a ProjectedCRS, the "semiMajor" and "semiMinor" axis lengths are sometimes provided as explicit parameters,
          * and sometimes inferred from the geodetic datum. The two cases would be different set of parameters from the
          * OperationMethod's point of view, but still result in the creation of identical MathTransforms.
          *
          * Another rational for treating OperationMethod as metadata is that SIS's MathTransform providers extend
-         * DefaultOperationMethod. Consequently there is a wide range of subclasses, which make the comparisons more
-         * difficult. For example Mercator1SP and Mercator2SP providers are two different ways to describe the same
+         * DefaultOperationMethod. Consequently, there is a wide range of subclasses, which make the comparisons more
+         * difficult. For example, Mercator1SP and Mercator2SP providers are two different ways to describe the same
          * projection. The SQL-backed EPSG factory uses yet another implementation.
          *
          * NOTE: A previous implementation made this final check:
@@ -382,7 +382,7 @@ class AbstractSingleOperation extends AbstractCoordinateOperation implements Sin
      * The {@code ParameterValueGroup} wrapper is a GeoAPI addition done for allowing usage of its
      * methods as a convenience (e.g. {@link ParameterValueGroup#parameter(String)}).
      *
-     * <p>However it could happen that the user really wanted to specify a {@code ParameterValueGroup} as the
+     * <p>However, it could happen that the user really wanted to specify a {@code ParameterValueGroup} as the
      * sole {@code <gml:parameterValue>} element. We currently have no easy way to distinguish those cases.
      * See {@link DefaultOperationMethod#getDescriptors()} for more discussion.</p>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java
index e21d570f5d..64cc01964d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationContext.java
@@ -194,7 +194,7 @@ public class CoordinateOperationContext implements Serializable {
      * A value of 0 means to search for the most accurate operation.
      *
      * <p>When searching for the most accurate operation, SIS considers only the operations specified by the authority.
-     * For example the <cite>Molodensky</cite> method is a better datum shift approximation than <cite>Abridged Molodensky</cite>.
+     * For example, the <cite>Molodensky</cite> method is a better datum shift approximation than <cite>Abridged Molodensky</cite>.
      * But if all coordinate operations defined by the authority use the Abridged Molodensky method, then SIS will ignore
      * the Molodensky one.</p>
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationFinder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
index b4879cecca..d535142f81 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationFinder.java
@@ -545,7 +545,7 @@ public class CoordinateOperationFinder extends CoordinateOperationRegistry {
             /*
              * Above booleans should never be true at the same time. If it nevertheless happen (we are paranoiac;
              * maybe a lazy user implemented all interfaces in a single class), do not apply any geographic ↔
-             * geocentric conversion. Instead do as if the coordinate system types were the same.
+             * geocentric conversion. Instead, do as if the coordinate system types were the same.
              */
             if (isGeocentricToGeographic ^ isGeographicToGeocentric) {
                 identifier = GEOCENTRIC_CONVERSION;
@@ -565,7 +565,7 @@ public class CoordinateOperationFinder extends CoordinateOperationRegistry {
          * Conceptually, all transformations below could done by first converting from the source coordinate
          * system to geocentric Cartesian coordinates (X,Y,Z), apply an affine transform represented by the
          * datum shift matrix, then convert from the (X′,Y′,Z′) coordinates to the target coordinate system.
-         * However there is two exceptions to this path:
+         * However, there is two exceptions to this path:
          *
          *   1) In the particular where both the source and target CS are ellipsoidal, we may use the
          *      Molodensky approximation as a shortcut (if the desired accuracy allows).
@@ -879,7 +879,7 @@ public class CoordinateOperationFinder extends CoordinateOperationRegistry {
          * Check axis directions. The method `swapAndScaleAxes` should returns a matrix of size 2×2.
          * The element at index (0,0) may be +1 if source and target axes are in the same direction,
          * or -1 if there are in opposite direction ("PAST" vs "FUTURE"). The value may be something
-         * else than ±1 if a unit conversion is applied too.  For example the value is 60 if time in
+         * else than ±1 if a unit conversion is applied too.  For example, the value is 60 if time in
          * sourceCRS is in hours while time in targetCRS is in minutes.
          *
          * The "epoch shift" previously computed is a translation. Consequently, it is added to element (0,1).
@@ -934,7 +934,7 @@ public class CoordinateOperationFinder extends CoordinateOperationRegistry {
         }
         /*
          * At this point, a coordinate operation has been found for all components of the target CRS.
-         * However the CoordinateOperation.getSourceCRS() values are not necessarily in the same order
+         * However, the CoordinateOperation.getSourceCRS() values are not necessarily in the same order
          * than in the `sourceComponents` list given to this method, and some dimensions may be dropped.
          * The matrix computed by sourceToSelected(…) gives us the rearrangement needed for the coordinate
          * operations that we just found.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
index 61ce83783f..03c3eec299 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/CoordinateOperationRegistry.java
@@ -670,7 +670,7 @@ class CoordinateOperationRegistry {
                 continue;                                   // Try again with the next best case.
             }
             /*
-             * It is possible that the CRS given to this method were not quite right.  For example the user
+             * It is possible that the CRS given to this method were not quite right.  For example, the user
              * may have created his CRS from a WKT using a different axis order than the order specified by
              * the authority and still (wrongly) call those CRS "EPSG:xxxx".  So we check if the source and
              * target CRS for the operation we just created are equivalent to the CRS specified by the user.
@@ -712,7 +712,7 @@ class CoordinateOperationRegistry {
      *
      * <div class="note"><b>Note:</b>
      * in many cases, the inverse operation is numerically less accurate than the direct operation because it
-     * uses approximations like series expansions or iterative methods. However the numerical errors caused by
+     * uses approximations like series expansions or iterative methods. However, the numerical errors caused by
      * those approximations are not of interest here, because they are usually much smaller than the inaccuracy
      * due to the stochastic nature of coordinate transformations (not to be confused with coordinate conversions;
      * see ISO 19111 for more information).</div>
@@ -773,7 +773,7 @@ class CoordinateOperationRegistry {
     /**
      * Completes (if necessary) the given coordinate operation for making sure that the source CRS
      * is the given one and the target CRS is the given one.  In principle, the given CRS shall be
-     * equivalent to the operation source/target CRS. However discrepancies happen if the user CRS
+     * equivalent to the operation source/target CRS. However, discrepancies happen if the user CRS
      * have flipped axis order, or if we looked for 2D operation while the user provided 3D CRS.
      *
      * @param  operation  the coordinate operation to complete.
@@ -1085,7 +1085,7 @@ class CoordinateOperationRegistry {
              *   - Longitude rotation (EPSG:9601). Note that this is a transformation rather than a conversion.
              *   - Geographic3D to 2D conversion (EPSG:9659).
              *
-             * However there is a few special cases where we may be able to add a dimension in a non-linear operation.
+             * However, there is a few special cases where we may be able to add a dimension in a non-linear operation.
              * We can attempt those special cases by just giving the same parameters to the math transform factory
              * together with the desired CRS. Examples of such special cases are:
              *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
index b3c683203b..8d9f24b2ad 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperation.java
@@ -173,8 +173,8 @@ final class DefaultConcatenatedOperation extends AbstractCoordinateOperation imp
      * in the given {@code operations} list, which make things clearer.
      *
      * <div class="note"><b>Note:</b>
-     * according ISO 19111, the accuracy attribute is allowed only for transformations. However this restriction
-     * is not enforced everywhere. For example the EPSG database declares an accuracy of 0 meter for conversions,
+     * according ISO 19111, the accuracy attribute is allowed only for transformations. However, this restriction
+     * is not enforced everywhere. For example, the EPSG database declares an accuracy of 0 meter for conversions,
      * which is conceptually exact. In this class we are departing from strict interpretation of the specification
      * since we are adding accuracy information to a concatenated operation. This departure should be considered
      * as a convenience feature only; accuracies are really relevant in transformations only.</div>
@@ -250,7 +250,7 @@ final class DefaultConcatenatedOperation extends AbstractCoordinateOperation imp
              * operation on the assumption that its accuracy was computed by the same algorithm than this method).
              * See javadoc for a rational about why we take only transformations in account. If more than one
              * transformation is found, clear the collection and abandon the attempt to set the accuracy information.
-             * Instead the user will get a better result by invoking PositionalAccuracyConstant.getLinearAccuracy(…)
+             * Instead, the user will get a better result by invoking PositionalAccuracyConstant.getLinearAccuracy(…)
              * since that method conservatively computes the sum of all linear accuracy.
              */
             if (setAccuracy && (op instanceof Transformation || op instanceof ConcatenatedOperation)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
index 90e254759c..b4a172cd94 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultConversion.java
@@ -125,10 +125,10 @@ public class DefaultConversion extends AbstractSingleOperation implements Conver
      * </table>
      *
      * <h4>Relationship between datum</h4>
-     * By definition, coordinate <b>conversions</b> do not change the datum. Consequently the given {@code sourceCRS}
+     * By definition, coordinate <b>conversions</b> do not change the datum. Consequently, the given {@code sourceCRS}
      * and {@code targetCRS} should use the same datum. If the datum is not the same, then the coordinate operation
      * should probably be a {@linkplain DefaultTransformation transformation} instead.
-     * However Apache SIS does not enforce that condition, but we encourage users to follow it.
+     * However, Apache SIS does not enforce that condition, but we encourage users to follow it.
      * The reason why SIS is tolerant is because some gray areas may exist about whether an operation
      * should be considered as a conversion or a transformation.
      *
@@ -136,9 +136,9 @@ public class DefaultConversion extends AbstractSingleOperation implements Conver
      * converting time instants from a {@linkplain org.apache.sis.referencing.crs.DefaultTemporalCRS temporal CRS} using
      * the <cite>January 1st, 1950</cite> epoch to another temporal CRS using the <cite>January 1st, 1970</cite> epoch
      * is a datum change, since the epoch is part of {@linkplain org.apache.sis.referencing.datum.DefaultTemporalDatum
-     * temporal datum} definition. However such operation does not have all the accuracy issues of transformations
+     * temporal datum} definition. However, such operation does not have all the accuracy issues of transformations
      * between geodetic datum (empirically determined, over-determined systems, stochastic nature of the parameters).
-     * Consequently some users may consider sufficient to represent temporal epoch changes as conversions instead
+     * Consequently, some users may consider sufficient to represent temporal epoch changes as conversions instead
      * than transformations.</div>
      *
      * Note that while Apache SIS accepts to construct {@code DefaultConversion} instances
@@ -418,7 +418,7 @@ public class DefaultConversion extends AbstractSingleOperation implements Conver
              * of a derived CRS, because this method is invoked indirectly by SIS AbstractDerivedCRS constructor
              * before its `conversionFromBase` field is set. Since the Apache SIS implementations of derived CRS
              * map the datum to getConversionFromBase().getSourceCRS().getDatum(), invoking targetCRS.getDatum()
-             * below may result in a NullPointerException. Instead we verify that `this` conversion use the same
+             * below may result in a NullPointerException. Instead, we verify that `this` conversion use the same
              * datum for source and target CRS, since DerivedCRS and ProjectedCRS are expected to have the same
              * datum than their source CRS.
              */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
index e195d20aaf..7801da0439 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultOperationMethod.java
@@ -83,7 +83,7 @@ import static org.apache.sis.util.ArgumentChecks.*;
  *   <li>“<cite>False northing</cite>” in metres. Default value is 0 m.</li>
  * </ul></div>
  *
- * In Apache SIS implementation, the {@linkplain #getName() name} is the only mandatory property. However it is
+ * In Apache SIS implementation, the {@linkplain #getName() name} is the only mandatory property. However, it is
  * recommended to provide also {@linkplain #getIdentifiers() identifiers} (e.g. “EPSG:9804” in the above example)
  * since names can sometimes be ambiguous or be spelled in different ways.
  *
@@ -456,7 +456,7 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
      * <ul class="verbose">
      *   <li>If the given method is an instance of {@code DefaultOperationMethod}, then delegate to
      *     {@link #redimension(int, int)} in order to allow subclasses to defines their own policy.
-     *     For example the <cite>Molodensky</cite> method needs to override.</li>
+     *     For example, the <cite>Molodensky</cite> method needs to override.</li>
      *   <li>Otherwise for each dimension (<var>source</var> and <var>target</var>):
      *     <ul>
      *       <li>If the corresponding dimension of the given method is {@code null}, then
@@ -506,7 +506,7 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
      * </ul>
      *
      * Subclasses should override this method if they can work with different number of dimensions.
-     * For example a <cite>Molodensky</cite> transform usually works in a three-dimensional space,
+     * For example, a <cite>Molodensky</cite> transform usually works in a three-dimensional space,
      * but can also work in a two-dimensional space by assuming that the ellipsoidal height is zero
      * everywhere.
      *
@@ -784,7 +784,7 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
              * Unfortunately in many cases we do not know the operation type, because the method that we
              * invoked - getOperationType() - is not a standard OGC/ISO property, so this information is
              * usually not provided in XML documents for example.  The user could also have instantiated
-             * DirectOperationMethod directly without creating a subclass. Consequently we also accept to
+             * DirectOperationMethod directly without creating a subclass. Consequently, we also accept to
              * format the keyword as "PROJECTION" if the operation type *could* be a projection. This is
              * the second check in the following 'if' statement.
              *
@@ -853,7 +853,7 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
     /**
      * Invoked by JAXB for marshalling a citation to the formula. In principle at most one of
      * {@code getFormulaCitation()} and {@link #getFormulaDescription()} methods can return a
-     * non-null value. However SIS accepts both coexist (but this is invalid GML).
+     * non-null value. However, SIS accepts both coexist (but this is invalid GML).
      */
     @XmlElement(name = "formulaCitation")
     private Citation getFormulaCitation() {
@@ -864,7 +864,7 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
     /**
      * Invoked by JAXB for marshalling the formula literally. In principle at most one of
      * {@code getFormulaDescription()} and {@link #getFormulaCitation()} methods can return
-     * a non-null value. However SIS accepts both to coexist (but this is invalid GML).
+     * a non-null value. However, SIS accepts both to coexist (but this is invalid GML).
      */
     @XmlElement(name = "formula")
     private String getFormulaDescription() {
@@ -902,7 +902,7 @@ public class DefaultOperationMethod extends AbstractIdentifiedObject implements
      * The {@code ParameterDescriptorGroup} wrapper is a GeoAPI addition done for allowing usage of its
      * methods as a convenience (e.g. {@link ParameterDescriptorGroup#descriptor(String)}).
      *
-     * <p>However it could happen that the user really wanted to specify a {@code ParameterDescriptorGroup} as
+     * <p>However, it could happen that the user really wanted to specify a {@code ParameterDescriptorGroup} as
      * the sole {@code <gml:parameter>} element. We currently have no easy way to distinguish those cases.</p>
      *
      * <div class="note"><b>Tip:</b>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
index bda3d4cbac..f0a5b093c2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/DefaultPassThroughOperation.java
@@ -199,7 +199,7 @@ public class DefaultPassThroughOperation extends AbstractCoordinateOperation imp
         } else if (operation != null) {
             /*
              * Should not happen with objects created by public methods since the constructor created the transform itself.
-             * However may happen with operations parsed from GML. As a fallback, search in the components of CompoundCRS.
+             * However, may happen with operations parsed from GML. As a fallback, search in the components of CompoundCRS.
              * This is not a universal fallback, but works for the most straightforward cases.
              */
             final CoordinateReferenceSystem sourceCRS = super.getSourceCRS();
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java
index ca6f4df649..41c50daba7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/InverseOperationMethod.java
@@ -127,7 +127,7 @@ final class InverseOperationMethod extends DefaultOperationMethod {
      *
      * <div class="note"><b>Note:</b>
      * in many cases, the inverse operation is numerically less accurate than the direct operation because it
-     * uses approximations like series expansions or iterative methods. However the numerical errors caused by
+     * uses approximations like series expansions or iterative methods. However, the numerical errors caused by
      * those approximations are not of interest here, because they are usually much smaller than the inaccuracy
      * due to the stochastic nature of coordinate transformations (not to be confused with coordinate conversions;
      * see ISO 19111 for more information).</div>
@@ -165,7 +165,7 @@ final class InverseOperationMethod extends DefaultOperationMethod {
                              * The parameter descriptor does not specify whether the values for the inverse operation
                              * have the same sign or opposite sign. We could heuristically presume that we can invert
                              * the sign if the minimum value has the opposite sign than the maximum value  (as in the
-                             * [-10 … 10] range), but such assumption is dangerous. For example the values in a matrix
+                             * [-10 … 10] range), but such assumption is dangerous. For example, the values in a matrix
                              * could be bounded to a range like [-1 … 1], which would mislead above heuristic rule.
                              *
                              * Note that abandoning here does not mean that we will never know the parameter values.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/LooselyDefinedMethod.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/LooselyDefinedMethod.java
index ad64c90fcb..192719d1c5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/LooselyDefinedMethod.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/LooselyDefinedMethod.java
@@ -24,12 +24,12 @@ import org.apache.sis.parameter.DefaultParameterDescriptorGroup;
  * Operation methods that do not match exactly any of the predefined "standard" methods and for which
  * we do not define unambiguous sets of parameters. Those methods could be replaced by concatenations
  * of standard methods, but doing so would require more development work.  In the meantime, we define
- * those methods for avoiding to mislead users. For example we should not call a coordinate operation
+ * those methods for avoiding to mislead users. For example, we should not call a coordinate operation
  * "Affine" if it also performs conversion from geographic to geocentric coordinates.
  *
  * <h2>Restrictions</h2>
  * We do not provide any mechanism for instantiating a {@code CoordinateOperation} from those methods.
- * Consequently a coordinate operation can be formatted in WKT with those operation methods, but can
+ * Consequently, a coordinate operation can be formatted in WKT with those operation methods, but can
  * not be parsed. Attempt to parse such WKT will result in an error saying that the method is unknown.
  * This is better than formatting WKT with a standard but wrong operation name, in which case parsing
  * the WKT would produce unexpected results.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java
index bb46bf9fee..070465adf7 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/MismatchedDatumException.java
@@ -30,7 +30,7 @@ package org.apache.sis.referencing.operation;
  * org.opengis.referencing.crs.CoordinateReferenceSystem,
  * org.opengis.referencing.operation.OperationMethod,
  * org.opengis.referencing.operation.MathTransform) its constructor}.
- * However SIS is stricter at {@linkplain org.apache.sis.referencing.crs.DefaultDerivedCRS Derived CRS}
+ * However, SIS is stricter at {@linkplain org.apache.sis.referencing.crs.DefaultDerivedCRS Derived CRS}
  * construction time.</div>
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
index de0cf8f8b3..93cc65273e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/SubOperationInfo.java
@@ -82,7 +82,7 @@ final class SubOperationInfo {
 
     /**
      * The constant values to store in target coordinates, or {@code null} if none. This array is usually null.
-     * It may be non-null if no source CRS component has been found for a target CRS component. For example if
+     * It may be non-null if no source CRS component has been found for a target CRS component. For example, if
      * the source CRS has (<var>x</var>, <var>y</var>) axes and the target CRS has (<var>x</var>, <var>y</var>,
      * <var>t</var>) axes, then this array may be set to a non-null value for specifying the <var>t</var> value.
      * The array length is the number of dimensions in the full (usually compound) target CRS, but only the
@@ -202,7 +202,7 @@ next:   for (int targetComponentIndex = 0; targetComponentIndex < infos.length;
                                      * to (GeodeticCRS₂, VerticalCRS₂) target.  The source GeodeticCRS₁ should be mapped
                                      * to exactly one target component (which is GeodeticCRS₂)  and  VerticalCRS₁ mapped
                                      * to VerticalCRS₂.  But the operation on vertical coordinates may need GeodeticCRS₁
-                                     * for doing its work, so GeodeticCRS₁ is needed twice.  However when needed for the
+                                     * for doing its work, so GeodeticCRS₁ is needed twice. However, when needed for the
                                      * vertical coordinate operation, the GeodeticCRS₁ is used as an "interpolation CRS".
                                      * Interpolation CRS are handled in other code paths; it is not the business of this
                                      * SourceComponent class to care about them. From the point of view of this class,
@@ -228,7 +228,7 @@ next:   for (int targetComponentIndex = 0; targetComponentIndex < infos.length;
             /*
              * If we reach this point, we have not been able to find a source CRS that we can map to the target CRS.
              * Usually this is fatal; returning null will instruct the caller to throw `OperationNotFoundException`.
-             * However in some contexts (e.g. when searching for an operation between two `GridGeometry` instances)
+             * However, in some contexts (e.g. when searching for an operation between two `GridGeometry` instances)
              * it is possible to assign a constant value to the target coordinates. Those values cannot be guessed
              * by `sis-referencing`; they must be provided by caller. If such constants are specified, then we will
              * try to apply them.
@@ -323,7 +323,7 @@ next:   for (int targetComponentIndex = 0; targetComponentIndex < infos.length;
      * }
      * </div>
      *
-     * Furthermore some dimensions may be dropped,
+     * Furthermore, some dimensions may be dropped,
      * e.g. from (<var>x</var>, <var>y</var>, <var>t</var>) to (<var>x</var>, <var>y</var>).
      *
      * @param  sourceDimensions  number of dimensions in the source {@link CompoundCRS}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
index 0aa5200149..b17eba9dc5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LinearTransformBuilder.java
@@ -81,7 +81,7 @@ import org.apache.sis.util.Classes;
  * the <i>sources</i> coordinates are pixel indices and the <i>targets</i> are (longitude, latitude) coordinates,
  * but we suspect that the <i>sources to targets</i> transform is some undetermined map projection, maybe Mercator.
  * A linear approximation between those coordinates will give poor results; the results would be much better if all
- * (longitude, latitude) coordinates were converted to the right projection first. However that map projection may
+ * (longitude, latitude) coordinates were converted to the right projection first. However, that map projection may
  * not be known, but we can try to guess it by trials-and-errors using a set of plausible projections.
  * That set can be specified by {@link #addLinearizers(Map, int...)}.
  * If the {@link #create(MathTransformFactory)} method finds that one of the specified projections seems a good fit,
@@ -621,7 +621,7 @@ search: for (int j=numPoints; --j >= 0;) {
      *
      * <p>All source positions shall have the same number of dimensions (the <cite>source dimension</cite>),
      * and all target positions shall have the same number of dimensions (the <cite>target dimension</cite>).
-     * However the source dimension does not need to be the same than the target dimension.
+     * However, the source dimension does not need to be the same than the target dimension.
      * Apache SIS currently supports only one- or two-dimensional source positions,
      * together with arbitrary target dimension.</p>
      *
@@ -1219,7 +1219,7 @@ search:         for (int j=domain(); --j >= 0;) {
             }
         }
         /*
-         * If some coordinates have been shifted, the range may become unreasonable. For example we may get a range
+         * If some coordinates have been shifted, the range may become unreasonable. For example, we may get a range
          * of [-440 … -160]° of longitude. Shift again in the direction that provide the best intersection with the
          * original range. Note that original range itself is sometimes "unreasonable". In that case we fallback on
          * values centered around zero, which matches common practice and reduces the risk of rounding errors.
@@ -1468,7 +1468,7 @@ search:         for (int j=domain(); --j >= 0;) {
                 /*
                  * Finished to try all transforms. If all of them failed, wrap the `TransformException`.
                  * We use a sub-type of `FactoryException` which allows callers to add their own information.
-                 * For example the caller may know that the grid was possibly out of CRS domain of validity
+                 * For example, the caller may know that the grid was possibly out of CRS domain of validity
                  * and wanted to try anyway (it can be difficult to predict in advance if it will work).
                  */
                 if (bestTransform == null) {
@@ -1586,7 +1586,7 @@ search:         for (int j=domain(); --j >= 0;) {
      *
      * <p>The envelope returned by {@link #getTargetEnvelope()} and all control points
      * returned by {@link #getControlPoint(int[])} are projected by the selected transform.
-     * Consequently if the target coordinates of original control points are desired,
+     * Consequently, if the target coordinates of original control points are desired,
      * then the transform returned by {@code create(…)} needs to be concatenated with
      * the {@linkplain MathTransform#inverse() inverse} of the transform returned by
      * this {@code linearizer()} method.</p>
@@ -1596,7 +1596,7 @@ search:         for (int j=domain(); --j >= 0;) {
      * control points target coordinates}. The returned transform will contain an operation step performing
      * axis filtering and swapping implied by the {@code projToGrid} argument that was given to the
      * <code>{@linkplain #addLinearizers(Map, int...) addLinearizers}(…, projToGrid)}</code> method.
-     * Consequently if the {@code projToGrid} argument was not an arithmetic progression,
+     * Consequently, if the {@code projToGrid} argument was not an arithmetic progression,
      * then the transform returned by this method will not be one of the instances given to
      * {@code addLinearizers(…)}.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java
index 07c2dd9545..3db9e31e16 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridBuilder.java
@@ -743,7 +743,7 @@ public class LocalizationGridBuilder extends TransformBuilder {
      * possibly modified as described in the <cite>axis order</cite> section below.
      *
      * <p>All control points returned by {@link #getControlPoint(int, int)} are projected by the selected transform.
-     * Consequently if the target coordinates of original control points are desired, then the transform computed by
+     * Consequently, if the target coordinates of original control points are desired, then the transform computed by
      * this builder needs to be concatenated with the {@linkplain MathTransform#inverse() inverse} of the transform
      * returned by this method. This is done automatically in the {@link #create(MathTransformFactory) create(…)}
      * method if the {@code compensate} flag given to {@code addLinearizers(…)} method was {@code true}.
@@ -752,7 +752,7 @@ public class LocalizationGridBuilder extends TransformBuilder {
      * <h4>Axis order</h4>
      * The returned transform will contain an operation step performing axis filtering and swapping implied by the
      * {@code projToGrid} argument that was given to the <code>{@linkplain #addLinearizers(Map, boolean, int...)
-     * addLinearizers}(…, projToGrid)}</code> method. Consequently if the {@code projToGrid} argument was not an
+     * addLinearizers}(…, projToGrid)}</code> method. Consequently, if the {@code projToGrid} argument was not an
      * arithmetic progression, then the transform returned by this method will not be one of the instances given
      * to {@code addLinearizers(…)}.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridException.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridException.java
index 7003fd064c..f2483ae330 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridException.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/LocalizationGridException.java
@@ -28,7 +28,7 @@ import org.apache.sis.referencing.factory.FactoryDataException;
  *
  * <h2>Additional information on exception cause</h2>
  * It is sometimes difficult to determine the root cause of this exception.
- * For example grid points slightly outside the CRS domain of validity will not necessarily cause a failure.
+ * For example, grid points slightly outside the CRS domain of validity will not necessarily cause a failure.
  * A strategy can be to try to build the grid anyway, and in case of failure declare that the grid was maybe
  * too far from CRS domain of validity. Because the potential causes are better known by the code that wants
  * a localization grid instead of the {@link LocalizationGridBuilder} class, {@code LocalizationGridException}
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ProjectedTransformTry.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ProjectedTransformTry.java
index 3269e2b343..58cfd9bb0a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ProjectedTransformTry.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ProjectedTransformTry.java
@@ -350,7 +350,7 @@ final class ProjectedTransformTry implements Comparable<ProjectedTransformTry>,
     final MatrixSIS replaceTransformed(MatrixSIS transform, final MatrixSIS newValues) {
         /*
          * The two matrices shall have the same number of columns because they were computed with
-         * LinearTransformBuilder instances having the same sources. However the two matrices may
+         * LinearTransformBuilder instances having the same sources. However, the two matrices may
          * have a different number of rows since the number of target dimensions may differ.
          */
         assert newValues.getNumCol() == transform.getNumCol();
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java
index 2ec783c20e..301ad0670d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/ResidualGrid.java
@@ -136,14 +136,14 @@ final class ResidualGrid extends DatumShiftGrid<Dimensionless,Dimensionless> {
     /**
      * If grid coordinates in some target dimensions are cyclic, the period in number of cells.
      * For each scalar value in the {@link LocalizationGridBuilder#periods} array (in units of
-     * target CRS), the corresponding period in number of cells is a vector. For example a 360°
+     * target CRS), the corresponding period in number of cells is a vector. For example, a 360°
      * shift in longitude does not necessarily correspond to an horizontal or vertical offset
      * in grid indices; it may be a combination of both if the grid is inclined.
      *
      * <p>We should have as many vectors as non-zero values in {@link LocalizationGridBuilder#periods}.
      * Each {@code periodVector} (in cell units) should be computed from a {@code periods} vector with
      * exactly one non-zero value (in CRS units) for allowing shifts in different CRS dimensions to be
-     * applied independently. Consequently this field should actually be of type {@code double[][]}.
+     * applied independently. Consequently, this field should actually be of type {@code double[][]}.
      * But current version uses only one vector for avoiding the complexity of searching how to combine
      * multiple vectors. It is okay for the usual case where only one CRS axis has wraparound range,
      * but may need to be revisited in the future.</p>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/readme.html b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/readme.html
index 4404d58145..b7d3de314c 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/readme.html
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/builder/readme.html
@@ -25,7 +25,7 @@
       The assumption that all errors are in geospatial coordinates is reasonable if the linear regression is used directly.
       But in <code>LocalizationGridBuilder</code> context, having the smallest errors on geospatial coordinates
       may not be so important because those errors are corrected by the residual grids during <em>forward</em> transformations.
-      However during <em>inverse</em> transformations, it may be useful that grid indices estimated by the linear regression
+      However, during <em>inverse</em> transformations, it may be useful that grid indices estimated by the linear regression
       are as close as possible to the real grid indices in order to allow iterations to converge faster
       (such iterations exist only in inverse operations, not in forward operations).
       For that reason, <code>LocalizationGridBuilder</code> may want to minimize errors on grid indices instead of geospatial coordinates.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
index d30958cdda..6e3db1a00a 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/GeneralMatrix.java
@@ -51,7 +51,7 @@ class GeneralMatrix extends MatrixSIS implements ExtendedPrecisionMatrix {
 
     /**
      * Threshold value relative to 1 ULP of the greatest magnitude of elements added in a sum.
-     * For example in a sum like {@code A + B + C + D}, if the greatest term in absolute value
+     * For example, in a sum like {@code A + B + C + D}, if the greatest term in absolute value
      * is {@code C}, then the threshold is <code>Math.ulp(C) * {@value}</code>.  If the sum is
      * lower than that threshold, then the result is assumed to be zero.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
index 0075faa366..a5ba531d0f 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/Matrices.java
@@ -328,7 +328,7 @@ public final class Matrices extends Static {
      * <h4>Crossing the anti-meridian of a Geographic CRS</h4>
      * If the given envelopes cross the date line, then this method requires their {@code getSpan(int)} method
      * to behave as documented in the {@link org.apache.sis.geometry.AbstractEnvelope#getSpan(int)} javadoc.
-     * Furthermore the matrix created by this method will produce expected results only for source or destination
+     * Furthermore, the matrix created by this method will produce expected results only for source or destination
      * points before the date line, since the wrap around operation cannot be represented by an affine transform.
      *
      * <h4>Example</h4>
@@ -393,7 +393,7 @@ public final class Matrices extends Static {
     }
 
     /**
-     * Creates a transform matrix changing axis order and/or direction. For example the transform may convert
+     * Creates a transform matrix changing axis order and/or direction. For example, the transform may convert
      * (<i>northing</i>, <i>westing</i>) coordinates into (<i>easting</i>, <i>northing</i>) coordinates.
      * This method tries to associate each {@code dstAxes} direction to either an equals {@code srcAxis}
      * direction, or to an opposite {@code srcAxis} direction.
@@ -469,7 +469,7 @@ public final class Matrices extends Static {
      * <h4>Crossing the anti-meridian of a Geographic CRS</h4>
      * If the given envelopes cross the date line, then this method requires their {@code getSpan(int)} method
      * to behave as documented in the {@link org.apache.sis.geometry.AbstractEnvelope#getSpan(int)} javadoc.
-     * Furthermore the matrix created by this method will produce expected results only for source or destination
+     * Furthermore, the matrix created by this method will produce expected results only for source or destination
      * points on one side of the date line (depending on whether axis direction is reversed), since the wrap around
      * operation cannot be represented by an affine transform.
      *
@@ -581,7 +581,7 @@ public final class Matrices extends Static {
 
     /**
      * Creates a matrix which converts a subset of coordinates using the transform given by another matrix.
-     * For example giving (<var>latitude</var>, <var>longitude</var>, <var>height</var>) coordinates,
+     * For example, giving (<var>latitude</var>, <var>longitude</var>, <var>height</var>) coordinates,
      * a pass through operation can convert the height values from feet to metres without affecting
      * the (<var>latitude</var>, <var>longitude</var>) values.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NonSquareMatrix.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NonSquareMatrix.java
index 8a7b88c28c..e9eebd7762 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NonSquareMatrix.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/NonSquareMatrix.java
@@ -154,7 +154,7 @@ final class NonSquareMatrix extends GeneralMatrix {
      * <p>Note that the above strategy assumes that the matrix is used for an affine transform, which is not always
      * true (it could be the matrix of a map projection derivative for instance). If the matrix is not for an affine
      * transform, then the last column has no special meaning and the above strategy is somewhat asymmetric.
-     * However it will still produce NaN for the full row in matrix multiplications.</p>
+     * However, it will still produce NaN for the full row in matrix multiplications.</p>
      *
      * <p>Conversely, if the matrix has more rows than columns (in a system of linear equations, the system would
      * be <cite>overdetermined</cite>), then we omit the rows containing only zero or NaN values. After the matrix
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java
index 1cbd737608..c3bf3a02a9 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/matrix/package-info.java
@@ -57,7 +57,7 @@
  *
  * <p>The current implementation uses
  * <a href="https://en.wikipedia.org/wiki/Double-double_%28arithmetic%29#Double-double_arithmetic">double-double
- * arithmetic</a>. However this may change in any future SIS version.</p>
+ * arithmetic</a>. However, this may change in any future SIS version.</p>
  *
  * <h2>Related projects</h2>
  * This package is <strong>not</strong> designed for large matrices, and is rooted in
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java
index 08d885e928..449cf07b14 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/package-info.java
@@ -49,13 +49,13 @@
  *
  * <ul>
  *   <li><b>Longitude rotation</b> (EPSG:9601) — the longitude offset may be specified in any units,
- *     but SIS unconditionally converts the value to degrees. Consequently the user is responsible
+ *     but SIS unconditionally converts the value to degrees. Consequently, the user is responsible
  *     for converting the longitude axis of source and target CRS to degrees before this operation is applied.</li>
  * </ul>
  *
  * <h2><cite>Early binding</cite> versus <cite>late binding</cite> implementations</h2>
  * There is sometimes multiple ways of transforming coordinates for a given pair of source and target CRS.
- * For example the {@linkplain org.apache.sis.referencing.datum.BursaWolfParameters Bursa-Wolf parameters}
+ * For example, the {@linkplain org.apache.sis.referencing.datum.BursaWolfParameters Bursa-Wolf parameters}
  * may vary depending on the area of interest, like in the transformations from NAD27 to WGS84.
  * Even for a fixed set of Bursa-Wolf parameter, there is various ways to use them (<cite>Molodensky</cite>,
  * <cite>Abridged Molodensky</cite>, <cite>Geocentric translation</cite>, <cite>etc.</cite>).
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
index d95b00cfa9..a4bd0b0299 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AlbersEqualArea.java
@@ -65,7 +65,7 @@ public class AlbersEqualArea extends AuthalicConversion {
      * This is defined as {@literal n = (m₁² – m₂²) / (α₂ – α₁)} in §1.3.13 of IOGP Publication 373-7-2 (april 2015).
      *
      * <p>In Apache SIS implementation, we use modified formulas in which the (1 - ℯ²) factor is omitted in
-     * {@link #qm(double)} calculation. Consequently what we get is a modified value <var>nm</var> which is
+     * {@link #qm(double)} calculation. Consequently, what we get is a modified value <var>nm</var> which is
      * related to Snyder's <var>n</var> value by {@literal n = nm / (1 - ℯ²)}.  The omitted (1 - ℯ²) factor
      * is either taken in account by the (de)normalization matrix, or cancels with other (1 - ℯ²) factors
      * when we develop the formulas.</p>
@@ -273,7 +273,7 @@ public class AlbersEqualArea extends AuthalicConversion {
         /*
          * Note: Snyder 14-19 gives  q = (C - ρ²n²/a²)/n  where  ρ = √(x² + (ρ₀ - y)²).
          * But in Apache SIS implementation, ρ₀ has already been subtracted by the matrix before we reach this point.
-         * So we can simplify by ρ² = x² + y². Furthermore the matrix also divided x and y by a (the semi-major axis
+         * So we can simplify by ρ² = x² + y². Furthermore, the matrix also divided x and y by a (the semi-major axis
          * length) before this method, and multiplied by n. so what we have is actually (ρ⋅n/a)² = x² + y².
          * So the formula become:
          *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java
index 6d87a8bd1d..3dfcd5f019 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/AuthalicConversion.java
@@ -25,8 +25,8 @@ import static org.apache.sis.math.MathFunctions.atanh;
 /**
  * Base class of projections doing conversions between <cite>geodetic</cite> latitude and <cite>authalic</cite> latitude.
  * This is used by <cite>equal-area</cite> projections such as {@link AlbersEqualArea} and {@link CylindricalEqualArea}.
- * However not all equal-area projections extend this base class, and conversely not all sub-classes are equal-area.
- * For example the {@link Sinusoidal} projection, despite being equal-area, uses different formulas.
+ * However, not all equal-area projections extend this base class, and conversely not all sub-classes are equal-area.
+ * For example, the {@link Sinusoidal} projection, despite being equal-area, uses different formulas.
  *
  * <p>Note that no projection can be both conformal and equal-area. So the formulas in this class
  * are usually mutually exclusive with formulas in {@link ConformalProjection} class.</p>
@@ -34,7 +34,7 @@ import static org.apache.sis.math.MathFunctions.atanh;
  * <h2>Note on class naming</h2>
  * Lee (1944) defines an <cite>authalic map projection</cite> to be one in which at any point the scales in
  * two orthogonal directions are inversely proportional. Those map projections have a constant areal scale.
- * However this {@code AuthalicConversion} is <strong>not</strong> necessarily an authalic projection.
+ * However, this {@code AuthalicConversion} is <strong>not</strong> necessarily an authalic projection.
  * Subclasses may want to use the latitude conversion formulas for other purposes.
  *
  * <h3>References</h3>
@@ -67,7 +67,7 @@ abstract class AuthalicConversion extends NormalizedProjection {
      *
      *     <blockquote>φ = c₂⋅sin(2β) + c₄⋅sin(4β) + c₈⋅sin(6β)</blockquote>
      *
-     * However we rewrite above series expansion for taking advantage of trigonometric identities.
+     * However, we rewrite above series expansion for taking advantage of trigonometric identities.
      * The equation become (with different <var>c</var> values):
      *
      *     <blockquote>sin(2β)⋅(c₂ + cos(2β)⋅(c₄ + cos(2β)⋅c₆))</blockquote>
@@ -231,7 +231,7 @@ abstract class AuthalicConversion extends NormalizedProjection {
     /**
      * Computes the latitude using equation 3-18 from Snyder, followed by iterative resolution of Snyder 3-16.
      * In theory, the series expansion given by equation 3-18 (φ ≈ c₂⋅sin(2β) + c₄⋅sin(4β) + c₈⋅sin(8β)) should
-     * be used in replacement of the iterative method. However in practice the series expansion seems to not
+     * be used in replacement of the iterative method. However, in practice the series expansion seems to not
      * have a sufficient amount of terms for achieving the centimetric precision, so we "finish" it by the
      * iterative method. The series expansion is nevertheless useful for reducing the number of iterations.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java
index f74b06d38d..ce976e1f19 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ConformalProjection.java
@@ -24,8 +24,8 @@ import static java.lang.Math.*;
 /**
  * Base class of {@link LambertConicConformal}, {@link Mercator} and {@link PolarStereographic} projections.
  * Those projections have in common the property of being <cite>conformal</cite>, i.e. they preserve angles locally.
- * However we do not put this base class in public API because not all conformal projections extend this base class.
- * For example the {@link TransverseMercator} projection, despite being conformal, uses very different formulas.
+ * However, we do not put this base class in public API because not all conformal projections extend this base class.
+ * For example, the {@link TransverseMercator} projection, despite being conformal, uses very different formulas.
  *
  * <p>Note that no projection can be both conformal and equal-area. So the formulas in this class are usually
  * mutually exclusive with formulas in {@link AuthalicConversion} class (used for equal-area projections).</p>
@@ -44,7 +44,7 @@ import static java.lang.Math.*;
  *
  * <p>The Transverse Mercator projection is also conformal, but does not use the formulas provided in this class.
  * It will instead compute the coefficients itself and use its own, more complex, formulas with those coefficients.
- * However the formulas provided in this {@code ConformalProjection} class can be seen as a special case of
+ * However, the formulas provided in this {@code ConformalProjection} class can be seen as a special case of
  * Transverse Mercator formulas for <var>x</var> = 0.</p>
  *
  * <div class="note"><b>Reference:</b>
@@ -90,7 +90,7 @@ abstract class ConformalProjection extends NormalizedProjection {
      *
      *     <blockquote>c₂⋅sin(2χ) + c₄⋅sin(4χ) + c₆⋅sin(6χ) + c₈⋅sin(8χ)</blockquote>
      *
-     * However we rewrite above series expansion for taking advantage of trigonometric identities.
+     * However, we rewrite above series expansion for taking advantage of trigonometric identities.
      * The equation become (with different <var>c</var> values):
      *
      *     <blockquote>sin(2χ)⋅(c₂ + cos(2χ)⋅(c₄ + cos(2χ)⋅(c₆ + cos(2χ)⋅c₈)))</blockquote>
@@ -224,7 +224,7 @@ abstract class ConformalProjection extends NormalizedProjection {
         /*
          * We should never reach this point for map projections on Earth. But if the ellipsoid is for some
          * other planet having a high eccentricity, then the above series expansion may not be sufficient.
-         * Try to improve by iteratively solving equation (7-9) from Snyder. However instead of using
+         * Try to improve by iteratively solving equation (7-9) from Snyder. However, instead of using
          * Snyder (7-11) as the starting point, we take the result of above calculation as the initial φ.
          * Assuming that it is closer to the real φ value, this save us some iteration loops and usually
          * gives us more accurate results (according MercatorMethodComparison tests).
@@ -274,7 +274,7 @@ abstract class ConformalProjection extends NormalizedProjection {
      *
      * <h4>The π/2 special case</h4>
      * The value at {@code Math.PI/2} is not exactly infinity because there is no exact representation of π/2.
-     * However since the conversion of 90° to radians gives {@code Math.PI/2}, we can presume that the user was
+     * However, since the conversion of 90° to radians gives {@code Math.PI/2}, we can presume that the user was
      * expecting infinity. The caller should check for the PI/2 special case himself if desired, as this method
      * does nothing special about it.
      *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
index 658944a7ec..e87eb66889 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/CylindricalEqualArea.java
@@ -56,7 +56,7 @@ import static org.apache.sis.internal.referencing.provider.LambertCylindricalEqu
  * The parallels and the meridians are straight lines and cross at right angles.
  * The scale is true along standard parallels, but distortion increase greatly at other locations.
  * Distortions are so great that there is little use of this projection for world mapping purposes.
- * However this projection may be useful for computing areas.
+ * However, this projection may be useful for computing areas.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.2
@@ -183,13 +183,13 @@ public class CylindricalEqualArea extends AuthalicConversion {
         k0.multiplyGuessError(initializer.getAndStore(Mercator1SP.SCALE_FACTOR));
         /*
          * In most Apache SIS map projection implementations, the scale factor is handled by the super-class by
-         * specifying a ParameterRole.SCALE_FACTOR. However in the case of this CylindricalEqualArea we rather
+         * specifying a ParameterRole.SCALE_FACTOR. However, in the case of this CylindricalEqualArea we rather
          * handle the scale factor ourselves, because we do not perform the same multiplication on both axes:
          *
          *      x shall be multiplied by k₀
          *      y shall be divided by k₀
          *
-         * Furthermore we also multiply y by (1-ℯ²)/2 for avoiding the need to recompute this constant during
+         * Furthermore, we also multiply y by (1-ℯ²)/2 for avoiding the need to recompute this constant during
          * the projection of every point.
          */
         final DoubleDouble ik = new DoubleDouble(1d);
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java
index 0f12fd3cf7..d40d51b8af 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Initializer.java
@@ -164,7 +164,7 @@ final class Initializer {
                 }
                 /*
                  * The ellipsoid parameters (a, b or ivf) are assumed accurate in base 10 rather than in base 2,
-                 * because they are defined by authorities. For example the semi-major axis length of the WGS84
+                 * because they are defined by authorities. For example, the semi-major axis length of the WGS84
                  * ellipsoid is equal to exactly 6378137 metres by definition of that ellipsoid. The DoubleDouble
                  * constructor applies corrections for making those values more accurate in base 10 rather than 2.
                  */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java
index 15237fe8df..4988187be6 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertAzimuthalEqualArea.java
@@ -113,7 +113,7 @@ public class LambertAzimuthalEqualArea extends AuthalicConversion {
         /*
          * In the polar case we have cos(φ₀) ≈ 0 and cos(β₀) ≈ 0, which cause D = 0/0.
          * Trying to evaluate the indeterminate with L'Hôpital's rule produce infinity.
-         * Consequently a different set of formulas for the polar form must be used not
+         * Consequently, a different set of formulas for the polar form must be used not
          * only here but also in the `transform(…)` and `inverseTransform(…)` methods.
          */
         final MatrixSIS denormalize = getContextualParameters().getMatrix(ContextualParameters.MatrixRole.DENORMALIZATION);
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
index bd00063c48..9f4113fc0e 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LambertConicConformal.java
@@ -157,9 +157,9 @@ public class LambertConicConformal extends ConformalProjection {
      *       inverse transform methods become basically the same than the ones in {@link PolarStereographic},
      *       but (de)normalization matrices contain NaN values.</li>
      *   <li>Depending on how the formulas are written, <var>n</var> may be positive in the South hemisphere and
-     *       negative in the North hemisphere (or conversely). However Apache SIS adjusts the coefficients of the
+     *       negative in the North hemisphere (or conversely). However, Apache SIS adjusts the coefficients of the
      *       (de)normalization matrices in order to keep <var>n</var> positive, because the formulas are slightly
-     *       more accurate for positive <var>n</var> values. However this adjustment is optional and can be disabled
+     *       more accurate for positive <var>n</var> values. However, this adjustment is optional and can be disabled
      *       in the constructor.</li>
      * </ul>
      */
@@ -290,7 +290,7 @@ public class LambertConicConformal extends ConformalProjection {
         /*
          * Compute constants. We do not need to use special formulas for the spherical case below,
          * since   rν(sinφ) = 1   and   expΨ(φ) = tan(π/4 + φ/2)   when the eccentricity is zero.
-         * However we need special formulas for φ1 ≈ φ2 in the calculation of n, otherwise we got
+         * However, we need special formulas for φ1 ≈ φ2 in the calculation of n, otherwise we got
          * a 0/0 indetermination.
          */
         final double sinφ1 = sin(φ1);
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LongitudeWraparound.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LongitudeWraparound.java
index fa98f64068..777fa341ab 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LongitudeWraparound.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/LongitudeWraparound.java
@@ -49,7 +49,7 @@ import org.apache.sis.measure.Longitude;
  * need to use is Δλ=−29°.</div>
  *
  * In order to avoid wraparound operations as much as possible, we test only the bound where anti-meridian
- * problem may happen; no wraparound will be applied for the opposite bound. Furthermore we add or subtract
+ * problem may happen; no wraparound will be applied for the opposite bound. Furthermore, we add or subtract
  * 360° only once. Even if the point did many turns around the Earth, the 360° shift will still be applied
  * at most once. The desire to apply the minimal amount of shifts is the reason why we do not use
  * {@link Math#IEEEremainder(double, double)}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
index 50ecccf171..bd998ea76d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mercator.java
@@ -209,7 +209,7 @@ public class Mercator extends ConformalProjection {
             case SPHERICAL: {
                 /*
                  * According to EPSG guide, the latitude of conformal sphere radius should be the latitude of origin.
-                 * However that origin is fixed to 0° by EPSG guide, which makes radius calculation ineffective when
+                 * However, that origin is fixed to 0° by EPSG guide, which makes radius calculation ineffective when
                  * using the official parameters. We could fallback on the standard parallel (φ1) if φ0 is not set,
                  * but for now we wait to see for real cases. Some arguments that may be worth consideration:
                  *
@@ -265,7 +265,7 @@ public class Mercator extends ConformalProjection {
         /*
          * In theory, the "Latitude of 1st standard parallel" and the "Scale factor at natural origin" parameters
          * are mutually exclusive. The former is for projections of category "2SP" (namely variant B and C) while
-         * the latter is for projections "1SP" (namely variant A and spherical). However we let users specify both
+         * the latter is for projections "1SP" (namely variant A and spherical). However, we let users specify both
          * if they really want, since we sometimes see such CRS definitions.
          */
         final double φ1 = toRadians(initializer.getAndStore(Mercator2SP.STANDARD_PARALLEL));
@@ -314,7 +314,7 @@ public class Mercator extends ConformalProjection {
          *     tan(π/4 + φ/2)        which implies        tan( 0 )   when   φ = -90°    (south pole)
          *                                                tan(π/2)   when   φ = +90°    (north pole)
          *
-         * The case for the North pole has no exact representation. Furthermore IEEE 754 arithmetic has
+         * The case for the North pole has no exact representation. Furthermore, IEEE 754 arithmetic has
          * better precision for values close to zero, which favors the South hemisphere in the above term.
          * The code below reverses the sign of latitudes before the map projection, then reverses the sign
          * of results after the projection. This has the effect of interchanging the favorized hemisphere.
@@ -408,7 +408,7 @@ subst:  if (variant.spherical || (eccentricity == 0 && getClass() == Mercator.cl
         final double sinφ = sin(φ);
         if (dstPts != null) {
             /*
-             * Projection of zero is zero. However the formulas below have a slight rounding error
+             * Projection of zero is zero. However, the formulas below have a slight rounding error
              * which produce values close to 1E-10, so we will avoid them when y=0. In addition of
              * avoiding rounding error, this also preserve the sign (positive vs negative zero).
              */
@@ -548,7 +548,7 @@ subst:  if (variant.spherical || (eccentricity == 0 && getClass() == Mercator.cl
             final double φ = srcPts[srcOff+1];
             if (dstPts != null) {
                 /*
-                 * Projection of zero is zero. However the formulas below have a slight rounding error
+                 * Projection of zero is zero. However, the formulas below have a slight rounding error
                  * which produce values close to 1E-10, so we will avoid them when y=0. In addition of
                  * avoiding rounding error, this also preserve the sign (positive vs negative zero).
                  */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/MeridianArcBased.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/MeridianArcBased.java
index 58e43ced02..3060547ad0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/MeridianArcBased.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/MeridianArcBased.java
@@ -88,7 +88,7 @@ abstract class MeridianArcBased extends NormalizedProjection {
          * That more accurate formula is implemented in MeridianArcTest for comparison purposes.
          * Then we transform that formula as below:
          *
-         *    1) Multiply by b²/a = (1 - ℯ²). This is done by combining some terms. For example (1 - ℯ²)⋅(1 + ¾ℯ²) =
+         *    1) Multiply by b²/a = (1 - ℯ²). This is done by combining some terms. For example, (1 - ℯ²)⋅(1 + ¾ℯ²) =
          *       (1 + ¾ℯ²) - (1ℯ² + ¾ℯ⁴) = 1 - ¼ℯ² - ¾ℯ⁴. Note that we get the first two terms of EPSG formula, which
          *       already include the multiplication by (1 - ℯ²).
          *
@@ -213,9 +213,9 @@ abstract class MeridianArcBased extends NormalizedProjection {
         φ += cos(φ)*sinφ*(ci1 + sinφ2*(ci2 + sinφ2*(ci3 + sinφ2*ci4)));                 // Snyder 3-26.
         /*
          * We could improve accuracy by continuing from here with Newton's iterative method
-         * (see MeridianArcTest.inverse(…) for implementation). However those iterations requires
+         * (see MeridianArcTest.inverse(…) for implementation). However, those iterations requires
          * calls to distance(double, …), which is itself an approximation based on series expansion.
-         * Consequently the accuracy of iterative method cannot be better than distance(…) accuracy.
+         * Consequently, the accuracy of iterative method cannot be better than distance(…) accuracy.
          */
         return φ;
     }
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
index dd0a820377..0b130d8619 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ModifiedAzimuthalEquidistant.java
@@ -247,7 +247,7 @@ public class ModifiedAzimuthalEquidistant extends AzimuthalEquidistant {
          * Since D ≥ max(|x|,|y|) we get x/D and y/D close to zero.
          *
          * Note: the D ≥ max(|x|,|y|) assumption may not be always true (see `Formulas.fastHypot(…)`).
-         * Consequently sin(α) or cos(α) may be slightly greater than 1. However they are multiplied by terms
+         * Consequently, sin(α) or cos(α) may be slightly greater than 1. However, they are multiplied by terms
          * involving eccentricity, which are smaller than 1. An empirical verification is done with cos(φ₀) = 1
          * in AzimuthalEquidistantTest.testValuesNearZero().
          */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java
index d150f41dc5..8366498831 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Mollweide.java
@@ -44,7 +44,7 @@ import static org.apache.sis.internal.referencing.provider.Mollweide.*;
  * </ul>
  *
  * @todo This projection is not {@link org.apache.sis.math.FunctionProperty#SURJECTIVE surjective}.
- *       Consequently {@link org.apache.sis.referencing.CRS#suggestCommonTarget CRS.suggestCommonTarget(…)}
+ *       Consequently, {@link org.apache.sis.referencing.CRS#suggestCommonTarget CRS.suggestCommonTarget(…)}
  *       may not work correctly if a CRS uses this projection.
  *       See <a href="https://issues.apache.org/jira/browse/SIS-427">SIS-427</a>.
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
index 4a23470b1f..88e25dc746 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/NormalizedProjection.java
@@ -515,7 +515,7 @@ public abstract class NormalizedProjection extends AbstractMathTransform2D imple
      * }
      *
      * Subclasses can override this method if they wish to use alternative implementations under some circumstances.
-     * For example many subclasses will replace {@code this} by a specialized implementation if they detect that the
+     * For example, many subclasses will replace {@code this} by a specialized implementation if they detect that the
      * ellipsoid is actually spherical.
      *
      * @param  factory  the factory to use for creating the transform.
@@ -541,7 +541,7 @@ public abstract class NormalizedProjection extends AbstractMathTransform2D imple
      * need to use is Δλ=−29°.</div>
      *
      * In order to avoid wraparound operations as much as possible, we test only the bound where anti-meridian
-     * problem may happen; no wraparound will be applied for the opposite bound. Furthermore we add or subtract
+     * problem may happen; no wraparound will be applied for the opposite bound. Furthermore, we add or subtract
      * 360° only once. Even if the point did many turns around the Earth, the 360° shift will still be applied
      * at most once. The desire to apply the minimal amount of shifts is the reason why we do not use
      * {@link Math#IEEEremainder(double, double)}.
@@ -577,7 +577,7 @@ public abstract class NormalizedProjection extends AbstractMathTransform2D imple
      *
      * <div class="note"><b>Example:</b>
      * the {@link ObliqueStereographic} formulas do not work anymore when the latitude of origin is 90°N or 90°S,
-     * because some internal coefficients become infinite. However the {@link PolarStereographic} implementation
+     * because some internal coefficients become infinite. However, the {@link PolarStereographic} implementation
      * is designed especially for those special cases. So the {@code ObliqueStereographic.createMapProjection(…)}
      * method can redirect to {@code PolarStereographic.createMapProjection(…)} when it detects such cases.</div>
      *
@@ -764,7 +764,7 @@ public abstract class NormalizedProjection extends AbstractMathTransform2D imple
      *
      * <h4>Argument checks</h4>
      * The input longitude and latitude are usually (but not always) in the range [-π … π] and [-π/2 … π/2] respectively.
-     * However values outside those ranges are accepted on the assumption that most implementations use those values
+     * However, values outside those ranges are accepted on the assumption that most implementations use those values
      * only in trigonometric functions like {@linkplain Math#sin(double) sine} and {@linkplain Math#cos(double) cosine}.
      * If this assumption is not applicable to a particular subclass, then it is implementer responsibility to check
      * the range.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
index 0f76ced43d..61eb1fce5d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/ObliqueStereographic.java
@@ -281,7 +281,7 @@ public class ObliqueStereographic extends NormalizedProjection {
          * The conformal longitude is  Λ = n⋅(λ - λ₀) + Λ₀  where λ is the geodetic longitude.
          * But in Apache SIS implementation, the multiplication by  n  has been merged in the
          * constructor with other linear operations performed by the "normalization" matrix.
-         * Consequently the value obtained at srcPts[srcOff] is already Λ - Λ₀, not λ - λ₀.
+         * Consequently, the value obtained at srcPts[srcOff] is already Λ - Λ₀, not λ - λ₀.
          */
         final double cosΛ = cos(Λ);
         final double sinΛ = sin(Λ);
@@ -349,7 +349,7 @@ public class ObliqueStereographic extends NormalizedProjection {
         final double j = atan2(x, g - y) - i;
         /*
          * The conformal longitude is  Λ = j + 2i + Λ₀.  In the particular case of stereographic projection,
-         * the geodetic longitude λ is equal to Λ. Furthermore in Apache SIS implementation, Λ₀ is added by
+         * the geodetic longitude λ is equal to Λ. Furthermore, in Apache SIS implementation, Λ₀ is added by
          * the denormalization matrix and shall not be handled here. The only remaining part is λ = j + 2i.
          */
         final double λ = j + 2*i;
@@ -416,7 +416,7 @@ public class ObliqueStereographic extends NormalizedProjection {
             /*
              * Formulas below are the same than the elliptical formulas after the geodetic coordinates
              * have been converted to conformal coordinates.  In this spherical case we do not need to
-             * perform such conversion. Instead we have directly   χ = φ  and  Λ = λ.   The simplified
+             * perform such conversion. Instead, we have directly   χ = φ  and  Λ = λ.  The simplified
              * EPSG formulas then become the same than Snyder formulas for the spherical case.
              */
             final double sinφ      = sin(φ);
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
index c591c27941..ded3c8a9df 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/SatelliteTracking.java
@@ -176,7 +176,7 @@ public class SatelliteTracking extends NormalizedProjection {
              *     f = p2_on_p1 * cos_i - 1;
              *     n = sin_i / (f*f);                                       // Snyder equation 28-18.
              *
-             * However since equation 28-17 still work, we keep it for avoiding discontinuity.
+             * However, since equation 28-17 still work, we keep it for avoiding discontinuity.
              */
             if (abs(φ2 - φ1) < ANGULAR_TOLERANCE) {
                 n = sinφ1 * (p2_on_p1 * (2*cos2_i - cos2_φ1) - cos_i)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java
index a2a2682524..80a2c549f9 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Sinusoidal.java
@@ -186,7 +186,7 @@ public class Sinusoidal extends MeridianArcBased {
         final double rν    = sqrt(rν2);                                 // Reciprocal of the radius of curvature.
         final double dx_dλ = cosφ / rν;                                 // Part of Snyder 30-8.
         /*
-         * Note: in theory x/cos(φ) is indeterminate at φ=±π/2. However in this code,
+         * Note: in theory x/cos(φ) is indeterminate at φ=±π/2. However, in this code,
          * that indetermination never happen because there is no exact representation
          * of π/2 in base 2, so cos(φ) can never return 0.
          */
@@ -288,7 +288,7 @@ public class Sinusoidal extends MeridianArcBased {
             final double x = srcPts[srcOff  ];
             final double φ = srcPts[srcOff+1];
             /*
-             * Note: in theory x/cos(φ) is indeterminate at φ=±π/2. However in this code,
+             * Note: in theory x/cos(φ) is indeterminate at φ=±π/2. However, in this code,
              * that indetermination never happen because there is no exact representation
              * of π/2 in base 2, so cos(φ) can never return 0.
              */
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
index ec54045437..611c19b477 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/TransverseMercator.java
@@ -319,7 +319,7 @@ public class TransverseMercator extends NormalizedProjection {
         denormalize.convertBefore(1, B, M0);
         /*
          * When rewriting equations using trigonometric identities, some constants appear.
-         * For example sin(2θ) = 2⋅sinθ⋅cosθ, so we can factor out the 2 constant into the
+         * For example, sin(2θ) = 2⋅sinθ⋅cosθ, so we can factor out the 2 constant into the
          * corresponding `c` field.  Note: this factorization can only be performed after
          * the constructor finished to compute other constants.
          */
@@ -429,7 +429,7 @@ public class TransverseMercator extends NormalizedProjection {
      *
      * <h5>Case of 82.6…° &lt; ∆λ ≤ 90°</h5>
      * Karney (2009) uses an “extended” domain of transverse Mercator projection for ∆λ ≥ (1 − ℯ)⋅90°,
-     * but Apache SIS does not support such extension. Consequently ∆λ values between (1 − ℯ)⋅90° and 90°
+     * but Apache SIS does not support such extension. Consequently, ∆λ values between (1 − ℯ)⋅90° and 90°
      * should be considered invalid but are not rejected by Apache SIS. Note that those invalid values are
      * consistent with the {@linkplain #inverseTransform(double[], int, double[], int) reverse projection}
      * (i.e. applying a projection followed by a reverse projection gives approximately the original values).
@@ -444,7 +444,7 @@ public class TransverseMercator extends NormalizedProjection {
      * Longitude values at a distance greater than 90° from the central meridian are rejected.
      * A {@link ProjectionException} is thrown in that case. This limit exists because the
      * Transverse Mercator projection is conceptually a Mercator projection rotated by 90°.
-     * Consequently <var>x</var> values tend toward infinity for ∆λ close to ±90°
+     * Consequently, <var>x</var> values tend toward infinity for ∆λ close to ±90°
      *
      * @return the matrix of the projection derivative at the given source position,
      *         or {@code null} if the {@code derivate} argument is {@code false}.
@@ -563,7 +563,7 @@ public class TransverseMercator extends NormalizedProjection {
         /*
          * The projection of (λ,φ) is given by (η⋅B, ξ⋅B+M₀) — ignoring scale factors and false easting/northing.
          * But the B and M₀ parameters have been merged by the constructor with other linear operations in the
-         * "denormalization" matrix. Consequently we only need to compute (η,ξ) below.
+         * "denormalization" matrix. Consequently, we only need to compute (η,ξ) below.
          */
         if (dstPts != null) {
             // η(λ,φ)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
index 0fa929c114..9511a41810 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/package-info.java
@@ -61,7 +61,7 @@
  * <h2>Axis units and orientation</h2>
  * Many {@linkplain org.apache.sis.referencing.crs.DefaultGeographicCRS geographic coordinate reference systems}
  * use axis in (<var>latitude</var>, <var>longitude</var>) order, but not all. Axis order, orientation and units
- * are CRS-dependent. For example some CRS use longitude values increasing toward
+ * are CRS-dependent. For example, some CRS use longitude values increasing toward
  * {@linkplain org.opengis.referencing.cs.AxisDirection#EAST East}, while some others use longitude values
  * increasing toward {@linkplain org.opengis.referencing.cs.AxisDirection#WEST West}.
  * The axis order must be specified in all CRS, and any method working with them should take their
@@ -138,7 +138,7 @@
  * relative to the central meridian (not necessarily Greenwich). Its results are typically (<var>x</var>, <var>y</var>)
  * coordinates having ({@linkplain org.opengis.referencing.cs.AxisDirection#EAST East},
  * {@linkplain org.opengis.referencing.cs.AxisDirection#NORTH North}) axis orientation.
- * However in some cases the actual input and output coordinates may be different than the above by some scale factor,
+ * However, in some cases the actual input and output coordinates may be different than the above by some scale factor,
  * translation or rotation, if the projection implementation choose to combine some linear coefficients with the
  * above-cited normalization and denormalization affine transforms.</p>
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractLinearTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractLinearTransform.java
index d4d0910515..050b568397 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractLinearTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractLinearTransform.java
@@ -307,8 +307,8 @@ abstract class AbstractLinearTransform extends AbstractMathTransform implements
         /*
          * At this point the transforms are considered equal. In theory we would not need to check
          * the inverse transforms since if A and B are equal, then A⁻¹ and B⁻¹ should be equal too.
-         * However in Apache SIS this is not exactly true because computation of inverse transforms
-         * avoid NaN values in some circumstances. For example the inverse of a 2×3 matrix normally
+         * However, in Apache SIS this is not exactly true because computation of inverse transforms
+         * avoid NaN values in some circumstances. For example, the inverse of a 2×3 matrix normally
          * sets the "new" dimensions to NaN, but in the particular case where the transform is used
          * for a "Geographic 2D to 3D" conversion it will rather set the new dimensions to zero. So
          * A⁻¹ and B⁻¹ may differ in their "NaN versus 0" values even if A and B are equal.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java
index 25f819366b..8ad28d4391 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform.java
@@ -66,7 +66,7 @@ import static org.apache.sis.util.ArgumentChecks.ensureDimensionMatches;
  *   <li>{@link #transform(double[], int, double[], int, boolean)}</li>
  * </ul>
  *
- * However more performance may be gained by overriding the other {@code transform(…)} methods as well.
+ * However, more performance may be gained by overriding the other {@code transform(…)} methods as well.
  *
  * <h2>Immutability and thread safety</h2>
  * All Apache SIS implementations of {@code MathTransform} are immutable and thread-safe.
@@ -160,14 +160,14 @@ public abstract class AbstractMathTransform extends FormattableObject
      * because this method ignores "real world" considerations such as datum and country boundaries.
      *
      * <p>This method is for allowing callers to crop their data for removing areas that may cause numerical problems.
-     * For example results of Mercator projection tend to infinity when the latitude value approaches a pole.
+     * For example, results of Mercator projection tend to infinity when the latitude value approaches a pole.
      * For avoiding data structures with unreasonably large values or {@link Double#NaN},
      * we commonly crop data to some arbitrary maximal latitude value (typically 80 or 84°) before projection.
      * Those limits are arbitrary, the transform does not become suddenly invalid after a limit.
      * The {@link DomainDefinition} gives some controls on the criteria for choosing a limit.</p>
      *
      * <p>Many transforms, in particular all affine transforms, have no mathematical limits.
-     * Consequently the default implementation returns an empty value.
+     * Consequently, the default implementation returns an empty value.
      * Again it does not mean that the {@linkplain org.apache.sis.referencing.operation.AbstractCoordinateOperation
      * coordinate operation} has no geospatial domain of validity, but the latter is not the purpose of this method.
      * This method is (for example) for preventing a viewer to crash when attempting to render a world-wide image.</p>
@@ -360,7 +360,7 @@ public abstract class AbstractMathTransform extends FormattableObject
      *     return derivative;
      * }
      *
-     * However this method provides two advantages:
+     * However, this method provides two advantages:
      *
      * <ul>
      *   <li>It is usually easier to implement for {@code AbstractMathTransform} subclasses.
@@ -555,7 +555,7 @@ public abstract class AbstractMathTransform extends FormattableObject
         }
         /*
          * We need to check if writing the transformed coordinates in the same array than the source
-         * coordinates will cause an overlapping problem. However we can consider the whole buffer as
+         * coordinates will cause an overlapping problem. However, we can consider the whole buffer as
          * if it was a single coordinate tuple with a very large dimension. Doing so increase the chances
          * that IterationStrategy.suggest(...) doesn't require us another buffer  (hint: the -1 in
          * suggest(...) mathematic matter and reflect the contract saying that the input coordinates
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
index e30ed9374e..73652c6f38 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/AbstractMathTransform2D.java
@@ -43,7 +43,7 @@ import org.apache.sis.internal.referencing.j2d.ShapeUtilities;
  *   <li>{@link #transform(double[], int, double[], int, boolean)}</li>
  * </ul>
  *
- * However more performance may be gained by overriding the other {@code transform} methods as well.
+ * However, more performance may be gained by overriding the other {@code transform} methods as well.
  *
  * <h2>Immutability and thread safety</h2>
  * All Apache SIS implementations of {@code MathTransform2D} are immutable and thread-safe.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
index f3cab3a5f3..2d6084806d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ConcatenatedTransform.java
@@ -202,7 +202,7 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
         if (tr1.isIdentity()) return tr2;
         if (tr2.isIdentity()) return tr1;
         /*
-         * Give a chance to AbstractMathTransform to return an optimized object. For example LogarithmicTransform
+         * Give a chance to AbstractMathTransform to return an optimized object. For example, LogarithmicTransform
          * concatenated with ExponentialTransform can produce a new formula, PassThrouthTransform may concatenate
          * its sub-transform, etc. We try both ways (concatenation and pre-concatenation) and see which way gives
          * the shortest concatenation chain. It is not that much expensive given that most implementations return
@@ -255,7 +255,7 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
              * By computing inverse transform now as the product of matrices provided by the two inverse transforms
              * (as opposed to inverting the product of forward transform matrices), we use information that would
              * otherwise be lost (e.g. the inverse of the transform dropping a dimension may be a transform setting
-             * that dimension to a constant value, often zero). Consequently the inverse transform here may have real
+             * that dimension to a constant value, often zero). Consequently, the inverse transform here may have real
              * values for coefficients that `AbstractLinearTransform.inverse()` would have set to NaN, or may succeed
              * where `AbstractLinearTransform.inverse()` would have throw an exception. Even with square matrices,
              * computing the inverse transform now may avoid some rounding errors.
@@ -431,7 +431,7 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
         /*
          * Merge consecutive affine transforms. The transforms list should never contain consecutive instances
          * of LinearTransform because the ConcatenatedTransform.create(…) method already merged them  (this is
-         * verified by assertions in MathTransforms). However the above loop may have created synthetic affine
+         * verified by assertions in MathTransforms). However, the above loop may have created synthetic affine
          * transforms for WKT formatting purpose. Those synthetic affine transforms are actually represented by
          * Matrix objects (rather than full MathTransform objects), and two matrices may have been generated
          * consecutively.
@@ -494,7 +494,7 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
      * is more than one remaining step, even if all other transform steps are not parameterizable,
      * would be a contract violation.</p>
      *
-     * <p>However in the special case where we are getting the parameters of a {@code CoordinateOperation} instance
+     * <p>However, in the special case where we are getting the parameters of a {@code CoordinateOperation} instance
      * through {@link org.apache.sis.referencing.operation.AbstractCoordinateOperation#getParameterValues()} method
      * (often indirectly trough WKT formatting of a {@code "ProjectedCRS"} element), then the above rule is slightly
      * relaxed: we ignore affine transforms in order to accept axis swapping or unit conversions. We do that in that
@@ -545,7 +545,7 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
     /**
      * Returns the parameter values, or {@code null} if none. Concatenated transforms usually have
      * no parameters; instead the parameters of the individual components ({@link #transform1} and
-     * {@link #transform2}) need to be inspected. However map projections in SIS are implemented as
+     * {@link #transform2}) need to be inspected. However, map projections in SIS are implemented as
      * (<cite>normalize</cite> – <cite>non-linear kernel</cite> – <cite>denormalize</cite>) tuples.
      * This method detects such concatenation chains in order to return the parameter values that
      * describe the projection as a whole.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameter.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameter.java
index 053989c857..7f74c0cc73 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameter.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameter.java
@@ -34,7 +34,7 @@ import org.apache.sis.parameter.DefaultParameterValue;
  *
  * <p>Skipping redundant verifications allows us to avoid redundant logging messages when
  * the {@link org.apache.sis.internal.system.Semaphores#SUSPEND_PARAMETER_CHECK} flag is set.
- * Furthermore it is a little bit late for checking parameter validity here; that verification should have been done
+ * Furthermore, it is a little bit late for checking parameter validity here; that verification should have been done
  * at {@link AbstractMathTransform} construction time or even before, and the job of the {@link ContextualParameters}
  * class is just to record what have been used.</p></div>
  *
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java
index c3b4345925..132711b340 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ContextualParameters.java
@@ -95,7 +95,7 @@ import static java.util.logging.Logger.getLogger;
  *   <li>A {@link MathTransformProvider} instantiates a class from the
  *     {@linkplain org.apache.sis.referencing.operation.projection map projection package}.
  *     Note that different providers may instantiate the same map projection class.
- *     For example both <cite>"Mercator (variant A)"</cite> and <cite>"Mercator (variant B)"</cite> methods
+ *     For example, both <cite>"Mercator (variant A)"</cite> and <cite>"Mercator (variant B)"</cite> methods
  *     instantiate the same {@link org.apache.sis.referencing.operation.projection.Mercator} class,
  *     but with different ways to represent the parameters.</li>
  *
@@ -148,7 +148,7 @@ public class ContextualParameters extends Parameters implements Serializable {
     public enum MatrixRole {
         /**
          * Matrix for converting angular degrees to radians, or any other linear operations needed
-         * before to apply a non-linear operation. For example in a map projection, this matrix is
+         * before to apply a non-linear operation. For example, in a map projection, this matrix is
          * typically (but not necessarily) as below:
          *
          * <div style="text-align:center">{@include formulas.html#NormalizeGeographic}</div>
@@ -157,7 +157,7 @@ public class ContextualParameters extends Parameters implements Serializable {
 
         /**
          * Inverse of the {@link #NORMALIZATION} matrix.
-         * For example in a map projection, this matrix is typically (but not necessarily) as below:
+         * For example, in a map projection, this matrix is typically (but not necessarily) as below:
          *
          * <div style="text-align:center">{@include formulas.html#DenormalizeGeographic}</div>
          */
@@ -165,7 +165,7 @@ public class ContextualParameters extends Parameters implements Serializable {
 
         /**
          * Matrix for scaling Cartesian coordinates to the size of the planet, or any other linear operations needed
-         * after execution of a non-linear operation. For example in a map projection, this matrix is typically
+         * after execution of a non-linear operation. For example, in a map projection, this matrix is typically
          * (but not necessarily) as below:
          *
          * <div style="text-align:center">{@include formulas.html#DenormalizeCartesian}</div>
@@ -473,7 +473,7 @@ public class ContextualParameters extends Parameters implements Serializable {
     public synchronized MatrixSIS normalizeGeographicInputs(final double λ0) {
         ensureModifiable();
         /*
-         * In theory the check for (λ0 != 0) is useless. However Java has a notion of negative zero, and we want
+         * In theory the check for (λ0 != 0) is useless. However, Java has a notion of negative zero, and we want
          * to avoid negative zeros because we do not want them to appear in WKT formatting of matrix elements.
          */
         final DoubleDouble toRadians = DoubleDouble.createDegreesToRadians();
@@ -870,7 +870,7 @@ public class ContextualParameters extends Parameters implements Serializable {
         final boolean hasAfter  = (after  != null);
         /*
          * We assume that the "before" affine contains the normalize operation to be applied
-         * before the projection. However it may contains more than just this normalization,
+         * before the projection. However, it may contains more than just this normalization,
          * because it may have been concatenated with any user-defined transform (for example
          * in order to apply a change of axis order). We need to separate the "user-defined"
          * step from the "normalize" step.
@@ -912,7 +912,7 @@ public class ContextualParameters extends Parameters implements Serializable {
          *     Molodensky transformations conceptually use always decimal degrees. There is not much
          *     other cases since this mechanism is internal to SIS (not in public API).
          *
-         * Consequently we set the tolerance threshold to ANGULAR_TOLERANCE. We do not bother (at least
+         * Consequently, we set the tolerance threshold to ANGULAR_TOLERANCE. We do not bother (at least
          * for now) to identify the cases where we could use LINEAR_TOLERANCE because just checking the
          * `inverse` flag is not sufficient (e.g. the Molodensky case). Since the angular tolerance is
          * smaller than the linear one, unconditional usage of ANGULAR_TOLERANCE is more conservative.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java
index 8756a7fc10..d2ff24db46 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DatumShiftTransform.java
@@ -53,7 +53,7 @@ import org.apache.sis.util.Debug;
  *
  * <h2>Datum shift methods overview</h2>
  * The two CRS's ellipsoids have slightly different scale and rotation in space, and their center are located in
- * a slightly different position. Consequently geodetic datum shifts are often approximated by a constant scale,
+ * a slightly different position. Consequently, geodetic datum shifts are often approximated by a constant scale,
  * rotation and translation applied on geocentric coordinates. Those approximations are handled in SIS
  * by concatenations of {@link EllipsoidToCentricTransform} with {@link LinearTransform} instead of a specific
  * {@code DatumShiftTransform} subclass.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
index 9bd508cf7b..f04b6a54c5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DefaultMathTransformFactory.java
@@ -114,7 +114,7 @@ import static java.util.logging.Logger.getLogger;
  * </ul>
  *
  * <p>Each descriptor has many aliases, and those aliases may vary between different projections.
- * For example the <cite>false easting</cite> parameter is usually called {@code "false_easting"}
+ * For example, the <cite>false easting</cite> parameter is usually called {@code "false_easting"}
  * by OGC, while EPSG uses various names like <cite>"False easting"</cite> or <cite>"Easting at
  * false origin"</cite>.</p>
  *
@@ -144,7 +144,7 @@ import static java.util.logging.Logger.getLogger;
  * A parameter may be mandatory and still have a default value. In the context of this package, "mandatory"
  * means that the parameter is an essential part of the projection defined by standards.
  * Such mandatory parameters will always appears in any <cite>Well Known Text</cite> (WKT) formatting,
- * even if not explicitly set by the user. For example the central meridian is typically a mandatory
+ * even if not explicitly set by the user. For example, the central meridian is typically a mandatory
  * parameter with a default value of 0° (the Greenwich meridian).
  *
  * <p>Optional parameters, on the other hand, are often non-standard extensions.
@@ -222,7 +222,7 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
      *
      * <div class="note"><b>Note:</b>
      * we do not use a concurrent map here because the number of entries is expected to be very small
-     * (about 2 entries), which make concurrent algorithms hardly efficient. Furthermore this map is
+     * (about 2 entries), which make concurrent algorithms hardly efficient. Furthermore, this map is
      * not used often.
      * </div>
      */
@@ -344,10 +344,10 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
      * Returns a factory for the same transforms than this factory, but with caching potentially disabled.
      * By default, {@code DefaultMathTransformFactory} caches the {@link MathTransform} instances for sharing
      * existing instances when transforms are created many times with the same set of parameters.
-     * However this caching may be unnecessarily costly when the transforms to create are known to be short lived.
+     * However, this caching may be unnecessarily costly when the transforms to create are known to be short lived.
      * This method allows to get a factory better suited for short-lived objects.
      *
-     * <p>This method does not modify the state of this factory. Instead different factory instances for the
+     * <p>This method does not modify the state of this factory. Instead, different factory instances for the
      * different caching policy are returned.</p>
      *
      * @param  enabled  whether caching should be enabled.
@@ -625,7 +625,7 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
          *
          * <div class="note"><b>Design note:</b>
          * ellipsoidal coordinate systems and ellipsoids are associated indirectly, through a geodetic CRS.
-         * However this method expects those two components to be given explicitly instead of inferring
+         * However, this method expects those two components to be given explicitly instead of inferring
          * them from a {@code CoordinateReferenceSystem} for making clear that {@code MathTransformFactory}
          * does not perform any {@linkplain org.apache.sis.referencing.datum.DefaultGeodeticDatum geodetic
          * datum} analysis. For coordinate operations that take datum changes in account (including change
@@ -1102,7 +1102,7 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
             provider   = method;
             parameters = userParams;
             /*
-             * Get the operation method for the appropriate number of dimensions. For example the default Molodensky
+             * Get the operation method for the appropriate number of dimensions. For example, the default Molodensky
              * operation expects two-dimensional source and target CRS. If a given CRS is three-dimensional, we need
              * a provider variant which will not concatenate a "geographic 3D to 2D" operation before the Molodensky
              * one. It is worth to perform this check only if the provider is a subclass of DefaultOperationMethod,
@@ -1371,7 +1371,7 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
         /*
          * Prepare the concatenation of the matrices computed above and the projection.
          * Note that at this stage, the dimensions between each step may not be compatible.
-         * For example the projection (step2) is usually two-dimensional while the source
+         * For example, the projection (step2) is usually two-dimensional while the source
          * coordinate system (step1) may be three-dimensional if it has a height.
          */
         MathTransform step1 = (swap1 != null) ? createAffineTransform(swap1) : MathTransforms.identity(parameterized.getSourceDimensions());
@@ -1509,7 +1509,7 @@ public class DefaultMathTransformFactory extends AbstractFactory implements Math
      * If this method needs to set the values of {@code "semi_major"} and {@code "semi_minor"} parameters,
      * then it sets those values directly on the given {@code parameters} instance – not on a clone – for
      * allowing the caller to get back the complete parameter values.
-     * However this method only fills missing values, it never modify existing values.
+     * However, this method only fills missing values, it never modify existing values.
      *
      * @param  baseCRS     the source coordinate reference system.
      * @param  parameters  the parameter values for the transform.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DomainDefinition.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DomainDefinition.java
index 7d626dfb0f..95c5091271 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DomainDefinition.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/DomainDefinition.java
@@ -31,7 +31,7 @@ import org.apache.sis.geometry.GeneralEnvelope;
  * Specification about how to estimate a domain of validity for transforms.
  * Contrarily to {@linkplain CRS#getDomainOfValidity(CoordinateReferenceSystem) CRS domain of validity},
  * this class estimates a domain based on mathematical behavior only, not on "real world" considerations.
- * For example the Mercator projection tends to infinity when approaching poles, so it is recommended to
+ * For example, the Mercator projection tends to infinity when approaching poles, so it is recommended to
  * not use it above some latitude threshold, typically 80° or 84°. The exact limit is arbitrary.
  * This is different than the domain of validity of CRS, which is often limited to a particular country.
  * In general, the CRS domain of validity is much smaller than the domain computed by this class.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java
index 1ad8bb8ad4..933dc4e480 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/ExponentialTransform1D.java
@@ -75,8 +75,8 @@ final class ExponentialTransform1D extends AbstractMathTransform1D implements Se
      * The scale value to be multiplied.
      *
      * <div class="note">The scale could be handled by a concatenation with {@link LinearTransform1D} instead of
-     * an explicit field in this class. However the <var>scale</var>⋅<var>base</var><sup><var>x</var></sup> formula
-     * is extensively used as a <cite>transfer function</cite> in grid coverages. Consequently we keep this explicit
+     * an explicit field in this class. However, the <var>scale</var>⋅<var>base</var><sup><var>x</var></sup> formula
+     * is extensively used as a <cite>transfer function</cite> in grid coverages. Consequently, we keep this explicit
      * field for performance reasons.</div>
      */
     final double scale;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java
index 5a88d155ba..404bea5082 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/InterpolatedTransform.java
@@ -62,7 +62,7 @@ import org.apache.sis.internal.referencing.DirectPositionView;
  *
  * <p>The input and output coordinates can have any number of dimensions, provided that they are the same
  * than the number of {@linkplain DatumShiftGrid#getTranslationDimensions() translation dimensions}.
- * However current implementation uses only the two first dimensions for interpolations in the grid.</p>
+ * However, current implementation uses only the two first dimensions for interpolations in the grid.</p>
  *
  * @author  Rémi Eve (IRD)
  * @author  Martin Desruisseaux (IRD, Geomatys)
@@ -104,7 +104,7 @@ public class InterpolatedTransform extends DatumShiftTransform {
     /**
      * Creates a transform for the given interpolation grid.
      * This {@code InterpolatedTransform} class works with coordinate values in <em>units of grid cell</em>
-     * For example input coordinates (4,5) is the position of the center of the cell at grid index (4,5).
+     * For example, input coordinates (4,5) is the position of the center of the cell at grid index (4,5).
      * The output units are the same than the input units.
      *
      * <p>For converting geodetic coordinates, {@code InterpolatedTransform} instances need to be concatenated
@@ -176,9 +176,9 @@ public class InterpolatedTransform extends DatumShiftTransform {
         /*
          * Denormalization is the inverse of all above conversions in the usual case (NADCON and NTv2) where the
          * source coordinate system is the same than the target coordinate system, for example with axis unit in
-         * degrees. However we also use this InterpolatedTransform implementation for other operations, like the
+         * degrees. However, we also use this InterpolatedTransform implementation for other operations, like the
          * one created by LocalizationGridBuilder. Those later operations may require a different denormalization
-         * matrix. Consequently the call to `getParameterValues(…)` may overwrite the denormalization matrix as
+         * matrix. Consequently, the call to `getParameterValues(…)` may overwrite the denormalization matrix as
          * a non-documented side effect.
          */
         Matrix denormalize = normalize.inverse();                   // Normal NACDON and NTv2 case.
@@ -419,7 +419,7 @@ public class InterpolatedTransform extends DatumShiftTransform {
      * <h2>Algorithm</h2>
      * The algorithm used in this class takes some inspiration from the
      * <a href="https://en.wikipedia.org/wiki/Gradient_descent">Gradient descent</a> method, except that we do not use
-     * <em>gradient</em> direction. Instead we use <em>positional error</em> direction computed with Jacobian matrix.
+     * <em>gradient</em> direction. Instead, we use <em>positional error</em> direction computed with Jacobian matrix.
      * Instead of moving in the opposite of gradient direction, we move in the opposite of positional error vector.
      * This algorithm works well when the errors are small, which is the case for datum shift grids such as NADCON.
      * It may work not so well with strongly curved <cite>localization grids</cite> as found in some netCDF files.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
index a88e9cf26f..13ee19d262 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LinearTransform.java
@@ -40,7 +40,7 @@ import org.opengis.referencing.operation.NoninvertibleTransformException;
  *
  * <h2>Affine transform</h2>
  * In most cases the transform in affine. For such transforms, the last matrix row contains only zero values
- * except in the last column, which contains 1. For example a conversion from projected coordinates (metres)
+ * except in the last column, which contains 1. For example, a conversion from projected coordinates (metres)
  * to display coordinates (pixel) can be done as below:
  *
  * <div style="text-align:center">
@@ -52,7 +52,7 @@ import org.opengis.referencing.operation.NoninvertibleTransformException;
  * A <cite>projective</cite> transform can be used as a generalization of affine transforms.
  * In such case the computation performed by SIS is similar to {@code PerspectiveTransform}
  * in <cite>Java Advanced Imaging</cite>.
- * For example a square matrix of size 4×4 is used for transforming three-dimensional coordinates.
+ * For example, a square matrix of size 4×4 is used for transforming three-dimensional coordinates.
  * The transformed points {@code (x',y',z')} are computed as below:
  *
  * <div style="text-align:center">{@include formulas.html#ProjectiveTransform}</div>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java
index 4e362ca2f7..f54c5923b0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/LogarithmicTransform1D.java
@@ -291,8 +291,8 @@ class LogarithmicTransform1D extends AbstractMathTransform1D implements Serializ
          * The offset to add to the logarithm.
          *
          * <div class="note"><b>Note:</b> the offset could be handled by a concatenation with {@link LinearTransform1D}.
-         * instead of an explicit field in this class. However the <var>offset</var> + log<sub>base</sub>(<var>x</var>)
-         * formula is extensively used as a <cite>transfer function</cite> in grid coverages. Consequently we keep this
+         * instead of an explicit field in this class. However, the <var>offset</var> + log<sub>base</sub>(<var>x</var>)
+         * formula is extensively used as a <cite>transfer function</cite> in grid coverages. Consequently, we keep this
          * explicit field for performance reasons.</div>
          */
         private final double offset;
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MathTransforms.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MathTransforms.java
index aae6bf4502..b10e461634 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MathTransforms.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MathTransforms.java
@@ -54,7 +54,7 @@ import org.apache.sis.util.Static;
  * </ul>
  *
  * The factory static methods are provided as convenient alternatives to the GeoAPI {@link MathTransformFactory}
- * interface. However users seeking for more implementation neutrality are encouraged to limit themselves to the
+ * interface. However, users seeking for more implementation neutrality are encouraged to limit themselves to the
  * GeoAPI factory interfaces instead.
  *
  * @author  Martin Desruisseaux (Geomatys)
@@ -270,7 +270,7 @@ public final class MathTransforms extends Static {
      * All {@code preimage} elements shall be real numbers (not NaN) sorted in increasing or decreasing order.
      * Elements in the {@code values} array do not need to be ordered, but the returned transform will be invertible
      * only if all values are real numbers sorted in increasing or decreasing order.
-     * Furthermore the returned transform is affine (i.e. implement the {@link LinearTransform} interface)
+     * Furthermore, the returned transform is affine (i.e. implement the {@link LinearTransform} interface)
      * if the interval between each {@code preimage} and {@code values} element is constant.
      *
      * <p>The current implementation uses linear interpolation. This may be changed in a future SIS version.</p>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java
index 8139056ab9..9e34b54de1 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/MolodenskyFormula.java
@@ -43,7 +43,7 @@ import static java.lang.Math.*;
  *   <li>The "real" {@link MolodenskyTransform} (see that class for documentation about Molodensky transform).</li>
  *   <li>{@link InterpolatedMolodenskyTransform}, which conceptually works on geocentric coordinates but
  *       is implemented in Apache SIS using Molodensky (never abridged) formulas for performance reasons.
- *       However this implementation choice should be hidden to users (except by mention in javadoc).</li>
+ *       However, this implementation choice should be hidden to users (except by mention in javadoc).</li>
  * </ul>
  *
  * @author  Martin Desruisseaux (Geomatys)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/OperationMethodSet.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/OperationMethodSet.java
index b52351efa1..202462bbff 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/OperationMethodSet.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/OperationMethodSet.java
@@ -243,10 +243,10 @@ final class OperationMethodSet extends SetOfUnknownSize<OperationMethod> {
          *       }
          *   }
          *
-         * However we don't do that because it would bring 2 issues:
+         * However, we don't do that because it would bring 2 issues:
          *
          *   1) There is no guarantee that implementation of the 'methods' collection uses the 'equals(Object)'
-         *      method. For example TreeSet rather uses 'compareTo(Object)'. Since the OperationMethodSet class
+         *      method. For example, TreeSet rather uses 'compareTo(Object)'. Since the OperationMethodSet class
          *      uses 'equals', there is a risk of inconsistency.
          *
          *   2) The 'synchronized (methods)' statement introduces a risk of deadlock if some implementations of
@@ -256,7 +256,7 @@ final class OperationMethodSet extends SetOfUnknownSize<OperationMethod> {
          *
          * Since there is no evidence at this time that we need an efficient OperationMethodSet.contains(Object)
          * implementation, we keep for now the slowest but more conservative approach inherited from AbstractSet.
-         * However this choice may be revisited in any future SIS version if necessary.
+         * However, this choice may be revisited in any future SIS version if necessary.
          */
         return super.contains(object);
     }
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
index 20cc50f272..bca6072735 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PassThroughTransform.java
@@ -237,7 +237,7 @@ public class PassThroughTransform extends AbstractMathTransform implements Seria
      *
      * <div class="note"><b>API note:</b> this method is final for now because most of Apache SIS code do
      * not use the {@code modifiedCoordinates} array. Instead, SIS uses the {@code firstAffectedCoordinate}
-     * and {@code numTrailingCoordinates} information provided to the constructor. Consequently overriding
+     * and {@code numTrailingCoordinates} information provided to the constructor. Consequently, overriding
      * this method may be misleading since it would be ignored by SIS. We do not want to make the "really
      * used" fields public in order to keep the flexibility to replace them by a {@code modifiedCoordinates}
      * array in a future SIS version.</div>
@@ -761,7 +761,7 @@ public class PassThroughTransform extends AbstractMathTransform implements Seria
                          *       add or remove bits at that point for the dimensionality changes.
                          *
                          *    2) If we do not keep the sub-transform, then code inside 'if (dim == firstAffectedCoordinate)'
-                         *       should not have been executed. Instead we will adjust the indices after the loop.
+                         *       should not have been executed. Instead, we will adjust the indices after the loop.
                          */
                         final long leadPassThroughMask = maskLowBits(firstAffectedCoordinate);
                         final int numKeepAfter  = Long.bitCount(retainedDimensions & ~(leadPassThroughMask | subTransformMask));
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PoleRotation.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PoleRotation.java
index 5346540895..239b149cdd 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PoleRotation.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/PoleRotation.java
@@ -136,7 +136,7 @@ public class PoleRotation extends AbstractMathTransform2D implements Serializabl
      * this approach have an offset of 180°, which can be compensated with the axis angle (see the
      * {@link #inverseParameter(Parameters, ParameterValue)} method for more details).
      *
-     * However we can get a mathematically equivalent effect without the 180° longitude offset by
+     * However, we can get a mathematically equivalent effect without the 180° longitude offset by
      * setting the new pole latitude to unrealistic φ<sub>p</sub> = (180° − φ<sub>forward</sub>) value.
      * We get this effect be inverting the sign of {@link #cosφp} while keeping {@link #sinφp} unchanged.
      * Note that this is compatible with {@link #isIdentity()} implementation.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TransformSeparator.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TransformSeparator.java
index 2ea5879f14..c209a8cfb2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TransformSeparator.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/TransformSeparator.java
@@ -493,7 +493,7 @@ public class TransformSeparator {
      * concatenated or {@linkplain PassThroughTransform#getSubTransform() sub-transforms}.
      *
      * <p>Subclasses can override this method if they need to handle some {@code MathTransform} implementations
-     * in a special way. However all implementations of this method shall obey to the following contract:</p>
+     * in a special way. However, all implementations of this method shall obey to the following contract:</p>
      * <ul class="verbose">
      *   <li>{@link #sourceDimensions} and {@link #targetDimensions} should not be assumed accurate
      *       since they may be temporarily outdated or modified during recursive calls to this method.</li>
@@ -666,7 +666,7 @@ reduce:     for (int j=0; j <= numTgt; j++) {
      * {@link #transform} and {@link #targetDimensions} fields respectively, but not necessarily.
      *
      * <p>Subclasses can override this method if they need to handle some {@code MathTransform} implementations
-     * in a special way. However all implementations of this method shall obey to the following contract:</p>
+     * in a special way. However, all implementations of this method shall obey to the following contract:</p>
      * <ul>
      *   <li>{@link #sourceDimensions} and {@link #targetDimensions} should not be assumed accurate.</li>
      *   <li>{@link #sourceDimensions} should not be modified by this method.</li>
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java
index 3ebb0b666c..abf51c7e2d 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/WraparoundTransform.java
@@ -44,7 +44,7 @@ import static java.util.logging.Logger.getLogger;
 
 /**
  * Enforces coordinate values in the range of a wraparound axis (typically longitude).
- * For example this transform can shift longitudes from the [0 … 360]° range to the [-180 … +180]° range.
+ * For example, this transform can shift longitudes from the [0 … 360]° range to the [-180 … +180]° range.
  * The destination range is centered at 0 with a minimal value of −{@link #period}/2 and a maximal value
  * of {@link #period}/2. For a range centered on a different value,
  * a {@linkplain MathTransforms#translation(double...) translation}
@@ -60,7 +60,7 @@ import static java.util.logging.Logger.getLogger;
  *
  * <h2>Subclassing</h2>
  * In order to control the discontinuity problem, it may be necessary to subclass {@code WraparoundTransform}
- * and override the {@link #shift(double)} method. For example a subclass may control the wraparounds in a way
+ * and override the {@link #shift(double)} method. For example, a subclass may control the wraparounds in a way
  * to prevent the {@linkplain org.apache.sis.geometry.AbstractEnvelope#getLowerCorner() lower corner} of an envelope
  * to become greater than the {@linkplain org.apache.sis.geometry.AbstractEnvelope#getUpperCorner() upper corner}.
  *
@@ -102,7 +102,7 @@ public class WraparoundTransform extends AbstractMathTransform implements Serial
     public final double period;
     /*
      * DESIGN NOTE:
-     * A previous version of `WraparoundTransform` had no period. Instead it was expecting coordinates normalized
+     * A previous version of `WraparoundTransform` had no period. Instead, it was expecting coordinates normalized
      * in the [0 … 1] range. Coordinates in [0 … 360]° range were divided by 360 using an affine transforms before
      * `WraparoundTransform` and multiplied by 360 using another affine transform after `WraparoundTransform`.
      * That approach allowed to delegate more work to the affine transforms which can efficiently be combined
@@ -370,9 +370,9 @@ public class WraparoundTransform extends AbstractMathTransform implements Serial
      * <div class="note"><b>Mathematical note:</b>
      * strictly speaking the derivative at (<var>n</var> + 0.5) × {@link #period} where <var>n</var> is an integer
      * should be infinite because the coordinate value jumps "instantaneously" from any value to ±{@link #period}/2.
-     * However in practice we use derivatives as linear approximations around small regions, not for calculations
+     * However, in practice we use derivatives as linear approximations around small regions, not for calculations
      * requiring strict mathematical values. An infinite value goes against the approximation goal.
-     * Furthermore whether a source coordinate is an integer value or not is subject to rounding errors,
+     * Furthermore, whether a source coordinate is an integer value or not is subject to rounding errors,
      * which may cause unpredictable behavior if infinite values were returned.</div>
      *
      * @param  point  the position where to evaluate the derivative
@@ -500,7 +500,7 @@ public class WraparoundTransform extends AbstractMathTransform implements Serial
                  * The `middle` transform should become simpler, ideally the identity transform.
                  *
                  * As an heuristic rule, we assume that it was worth simplifying if the implementation class changed.
-                 * For example a `ProjectiveTransform` middle transform may be replaced by `IdentityTransform` (ideal
+                 * For example, a `ProjectiveTransform` middle transform may be replaced by `IdentityTransform` (ideal
                  * case, but replacement by `TranslationTransform` is still good). But if we got the same class, then
                  * even if the matrix is a little bit simpler it is probably not simpler enough; we will probably get
                  * no performance benefit. In such case abandon this `tryConcatenate(…)` attempt for reducing risk of
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/package-info.java
index 45e010e1c6..f542790cb2 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/transform/package-info.java
@@ -44,7 +44,7 @@
  * {@linkplain org.apache.sis.referencing.CRS#findOperation find the coordinate operation}
  * (generally from a pair of <var>source</var> and <var>target</var> CRS), then invoke
  * {@link org.opengis.referencing.operation.CoordinateOperation#getMathTransform()}.
- * However sophisticated users can also create math transforms explicitly from a group of parameter values
+ * However, sophisticated users can also create math transforms explicitly from a group of parameter values
  * using the {@linkplain org.apache.sis.referencing.operation.transform.DefaultMathTransformFactory math
  * transform factory}.
  *
@@ -54,7 +54,7 @@
  * {@linkplain org.apache.sis.referencing.operation.AbstractCoordinateOperation#getSourceCRS()
  * source coordinate reference system} to coordinate values for the same points in the
  * {@linkplain org.apache.sis.referencing.operation.AbstractCoordinateOperation#getTargetCRS()
- * target coordinate reference system}. However the conversions are not necessarily between CRS;
+ * target coordinate reference system}. However, the conversions are not necessarily between CRS;
  * a {@code MathTransform} can also be used for converting the sample values in a raster for example.
  * Such kind of transforms are named {@linkplain org.apache.sis.referencing.operation.transform.TransferFunction
  * transfer functions}.
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/package-info.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/package-info.java
index ebe0e910b5..053d543b94 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/package-info.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/package-info.java
@@ -81,7 +81,7 @@
  * Relationship with EPSG has two components documented in the javadoc: the object type and the EPSG code.
  * The <var>type</var> specifies which {@link org.opengis.referencing.AuthorityFactory} method to invoke, while
  * the <var>code</var> specifies the argument value to give to that method in order to get the EPSG object.
- * For example the {@link org.apache.sis.referencing.CommonCRS#WGS84} documentation said that object
+ * For example, the {@link org.apache.sis.referencing.CommonCRS#WGS84} documentation said that object
  * of type <cite>geodetic datum</cite> is associated to code {@code EPSG:6326}.
  * This means that the EPSG object could be obtained by the following code:
  *
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/geometry/TransformTestCase.java b/core/sis-referencing/src/test/java/org/apache/sis/geometry/TransformTestCase.java
index 3064dc2a81..b9e1aac06c 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/geometry/TransformTestCase.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/geometry/TransformTestCase.java
@@ -214,7 +214,7 @@ public abstract strictfp class TransformTestCase<G> extends TestCase {
     /**
      * Tests transform of an envelope over the ±180° limit. The Mercator projection used in this test
      * is not expected to wrap the longitude around Earth when using only the {@code MathTransform}.
-     * However when the target CRS is known, then "wrap around" should be applied.
+     * However, when the target CRS is known, then "wrap around" should be applied.
      *
      * @throws TransformException if an error occurred while transforming the envelope.
      *
@@ -266,7 +266,7 @@ public abstract strictfp class TransformTestCase<G> extends TestCase {
     /**
      * Returns the inverse of the given conversion. This method is not strictly correct
      * since we reuse the properties (name, aliases, etc.) from the given conversion.
-     * However those properties are not significant for the purpose of this test.
+     * However, those properties are not significant for the purpose of this test.
      *
      * @see org.apache.sis.referencing.operation.CoordinateOperationRegistry#inverse(SingleOperation)
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/GeographicOffsetsTest.java b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/GeographicOffsetsTest.java
index 5e135de2f5..c145640251 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/GeographicOffsetsTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/GeographicOffsetsTest.java
@@ -127,7 +127,7 @@ public final strictfp class GeographicOffsetsTest extends TransformTestCase {
          * Now create the MathTransform. But at the difference of the above testVerticalOffset() method,
          * we supply information about axis directions. The operation parameter shall have the same sign
          * than in the EPSG database (which is positive), and the source and target coordinates shall have
-         * the same sign than in the EPSG example (positive too). However we do not test unit conversion
+         * the same sign than in the EPSG example (positive too). However, we do not test unit conversion
          * in this method (EPSG sample point uses feet units), only axis direction.
          */
         final DefaultMathTransformFactory.Context context = new DefaultMathTransformFactory.Context();
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/NTv2Test.java b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/NTv2Test.java
index 2b7d23d1dc..cc1ddb1f1e 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/NTv2Test.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/referencing/provider/NTv2Test.java
@@ -208,7 +208,7 @@ public final strictfp class NTv2Test extends DatumShiftTestCase {
         assertEquals("ymax",   84.00 * DEGREES_TO_SECONDS, envelope.getMaximum(1), 1E-10);
         /*
          * Test a point. This point is located on the 3th grid in the NTv2 file.
-         * Consequently if the NTv2 implementation just pickups the first grid,
+         * Consequently, if the NTv2 implementation just pickups the first grid,
          * then this test would fail with an error around 100 metres.
          */
         final double[] position = {-134.998106062 * DEGREES_TO_SECONDS, 61.000285047 * DEGREES_TO_SECONDS};
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java b/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
index bfd4f053ce..48b75d4046 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/io/wkt/GeodeticObjectParserTest.java
@@ -458,7 +458,7 @@ public final strictfp class GeodeticObjectParserTest extends TestCase {
      *     "(snip) the prime meridian’s {@literal <irm longitude>} value shall be given in
      *     the same angular units as those for the horizontal axes of the geographic CRS."
      *
-     * Consequently we expect the prime meridian to be in decimal degrees even if the WKT used in this test has
+     * Consequently, we expect the prime meridian to be in decimal degrees even if the WKT used in this test has
      * an {@code Unit[“grad”, 0.015707963267948967]} element, because this WK also declare the axis as being in
      * degrees. Since this can be confusing, we expect the parser to emit a warning.
      *
@@ -934,7 +934,7 @@ public final strictfp class GeodeticObjectParserTest extends TestCase {
         /*
          * Test "Transverse Mercator" (not south-oriented) with an axis oriented toward south.
          * The `south` transform is actually the usual Transverse Mercator projection, despite
-         * having axis oriented toward South.  Consequently the "False Northing" parameter has
+         * having axis oriented toward South.  Consequently, the "False Northing" parameter has
          * the same meaning for those two CRS. Since we assigned the same False Northing value,
          * those two CRS have their "False origin" at the same location. This is why conversion
          * from `south` to `north` introduce no translation, only a reversal of y axis.
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/ClenshawSummation.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/ClenshawSummation.java
index fa1447af73..ab0c30c499 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/ClenshawSummation.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/ClenshawSummation.java
@@ -184,14 +184,14 @@ public final class ClenshawSummation {
 
     /**
      * One term in in the evaluation of a {@link Coefficient}. This term is usually single fraction.
-     * For example a {@code Coefficient} may be defined as below:
+     * For example, a {@code Coefficient} may be defined as below:
      *
      * {@preformat math
      *     A  =  -1/2⋅ε  +  3/16⋅ε³  +  -1/32⋅ε⁵
      * }
      *
      * In above example each of -1/2, 3/16 and -1/32 fraction is a {@code Term} instance.
-     * However this class allows a term to be defined by an array of fractions if each term
+     * However, this class allows a term to be defined by an array of fractions if each term
      * is itself defined by another series expansion.
      */
     private static final class Term {
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java
index 271844792a..28dd9b12f1 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/EPSGFactoryFallbackTest.java
@@ -211,7 +211,7 @@ public final strictfp class EPSGFactoryFallbackTest extends TestCase {
 
     /**
      * Asserts that the result of {@link EPSGFactoryFallback#createObject(String)} is CS of the given CRS.
-     * Contrarily to other kinds of objects, coordinate systems are currently not cached. Consequently we
+     * Contrarily to other kinds of objects, coordinate systems are currently not cached. Consequently, we
      * cannot assert that instances are the same.
      */
     private static void verifyCreateCS(final CoordinateReferenceSystem crs, final String code) throws FactoryException {
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java
index f6a8cfe19d..21e96edc54 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/GeodeticCalculatorTest.java
@@ -391,7 +391,7 @@ public strictfp class GeodeticCalculatorTest extends TestCase {
      * This method approximates the Bézier curve by line segments. Then for each point of the approximated Bézier curve,
      * this method computes the location of a close point on the geodesic (more specifically a point at the same geodesic
      * distance from the start point). The distance in metres between the two points is measured and accumulated as a
-     * fraction of the expected resolution <var>r</var>. Consequently the values in ∆x/r and ∆y/r columns should be less
+     * fraction of the expected resolution <var>r</var>. Consequently, the values in ∆x/r and ∆y/r columns should be less
      * than 1.
      *
      * <div class="note"><b>Note:</b> the state of the given calculator is modified by this method.</div>
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
index 160f1c6211..727e6519ae 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/HardCodedAxes.java
@@ -29,7 +29,7 @@ import org.apache.sis.measure.Units;
 /**
  * Collection of axes for testing purpose.
  * Note that EPSG codes of coordinate system axes depend on axis order.
- * Consequently EPSG codes are not provided.
+ * Consequently, EPSG codes are not provided.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/NormalizerTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/NormalizerTest.java
index 936c4ed72b..3a03c4b5fe 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/NormalizerTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/NormalizerTest.java
@@ -224,7 +224,7 @@ public final strictfp class NormalizerTest extends TestCase {
 
     /**
      * Tests normalization of an ellipsoidal CS. The axes used in this test do not contain any EPSG code.
-     * Consequently the {@link Normalizer#normalize(CoordinateSystem, AxisFilter, boolean)} method should
+     * Consequently, the {@link Normalizer#normalize(CoordinateSystem, AxisFilter, boolean)} method should
      * be able to reuse them as-is even if axis order changed.
      */
     @Test
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java
index f1dfa773c1..fbb70493da 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java
@@ -203,7 +203,7 @@ public final strictfp class DefaultGeodeticDatumTest extends TestCase {
                 GeodeticDatumMock.WGS72.getPrimeMeridian());
         /*
          * Create a datum valid only in a specific region of the world and with no direct transformation to WGS72.
-         * However an indirect transformation to WGS72 is available through WGS84.
+         * However, an indirect transformation to WGS72 is available through WGS84.
          */
         properties.put(DefaultGeodeticDatum.BURSA_WOLF_KEY, BursaWolfParametersTest.createED87_to_WGS84());
         final DefaultGeodeticDatum local = new DefaultGeodeticDatum(properties,
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactoryTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactoryTest.java
index b505e523c6..d32cf8826e 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactoryTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/ConcurrentAuthorityFactoryTest.java
@@ -175,7 +175,7 @@ public final strictfp class ConcurrentAuthorityFactoryTest extends TestCase {
      * Sleeps a time long enough so that we exceed the timeout time. After this method call, the
      * DAOs should be disposed. However if they are not, then we will wait a little bit more.
      *
-     * <p>The workers should be disposed right after the sleep time. However the workers disposal is performed
+     * <p>The workers should be disposed right after the sleep time. However, the workers disposal is performed
      * by a shared (SIS-library wide) daemon thread. Because the latter is invoked in a background thread,
      * it is subject to the hazard of thread scheduling.</p>
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java
index eb5b1dd1de..9ae4078b3d 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGFactoryTest.java
@@ -275,7 +275,7 @@ public final strictfp class EPSGFactoryTest extends TestCase {
      * Tests the "WGS 72 / UTM zone 10N" projection and ensures
      * that it is not confused with "WGS 72BE / UTM zone 10N".
      * In the EPSG database, those two projected CRS use the same conversion.
-     * However in Apache SIS the conversions must differ because the datum are not the same.
+     * However, in Apache SIS the conversions must differ because the datum are not the same.
      *
      * @throws FactoryException if an error occurred while querying the factory.
      */
@@ -724,7 +724,7 @@ public final strictfp class EPSGFactoryTest extends TestCase {
         }
 
         // We are cheating here since we are breaking generic type check.
-        // However in the particular case of our EPSG factory, it works.
+        // However, in the particular case of our EPSG factory, it works.
         @SuppressWarnings({"unchecked","rawtypes"})
         final Set<?> units = factory.getAuthorityCodes((Class) Unit.class);
         assertFalse(units.isEmpty());
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
index eba92be10d..aecfb1cec4 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
@@ -202,7 +202,7 @@ public final class DataScriptFormatter extends ScriptRunner {
 
     /**
      * EPSG scripts version 8.9 seems to have 2 errors where the {@code OBJECT_TABLE_NAME} column contains
-     * {@code "AxisName"} instead of {@code "Coordinate Axis Name"}. Furthermore the version number noted
+     * {@code "AxisName"} instead of {@code "Coordinate Axis Name"}. Furthermore, the version number noted
      * in the history table is a copy-and-paste error.
      */
     @Override
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html
index ce972ca9d0..0637d4619d 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/package.html
@@ -46,7 +46,7 @@
       This package is provided only in the <strong>test</strong> directory, not in the main directory, because the
       <code>org.apache.sis.referencing.factory.sql.epsg</code> package name is reserved by the <code>non-free:sis-epsg</code> module.
       The <code>core:sis-referencing</code> module should not distribute anything in packages owned by other modules.
-      However it is okay to use those package names in directories that are not part of the distribution, like tests.
+      However, it is okay to use those package names in directories that are not part of the distribution, like tests.
       We put those tools here for easier maintainance when the core of Apache SIS is modified.
     </p>
 
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationFinderTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationFinderTest.java
index efc0727a81..8eccc24bf1 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationFinderTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationFinderTest.java
@@ -559,7 +559,7 @@ public final strictfp class CoordinateOperationFinderTest extends MathTransformT
 
     /**
      * Tests a transformation between two CRS for which no direct bursa-wolf parameters are defined.
-     * However a transformation should still be possible indirectly, through WGS 84.
+     * However, a transformation should still be possible indirectly, through WGS 84.
      *
      * @throws ParseException if a CRS used in this test cannot be parsed.
      * @throws FactoryException if the operation cannot be created.
@@ -615,7 +615,7 @@ public final strictfp class CoordinateOperationFinderTest extends MathTransformT
         validate();
         /*
          * The accuracy should tell that the datum shift is indirect (through WGS 84).
-         * However the value may differ depending on whether EPSG database has been
+         * However, the value may differ depending on whether EPSG database has been
          * used or not, because it depends on whether the datum have been completed
          * with domain of validity.
          */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationRegistryTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationRegistryTest.java
index 5ceaecef2f..b498116bef 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationRegistryTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/CoordinateOperationRegistryTest.java
@@ -58,7 +58,7 @@ import static org.junit.Assume.assumeTrue;
  *   <li><cite>"NTF (Paris) to WGS 84 (1)"</cite> operation (EPSG:8094), which implies a longitude rotation
  *       followed by a geocentric translation in the geographic domain.</li>
  *   <li><cite>"Martinique 1938 to RGAF09 (1)"</cite> operation (EPSG:5491), which implies a datum shift
- *       that does not go through WGS84. Furthermore since the EPSG database defines (λ,φ) axis order in
+ *       that does not go through WGS84. Furthermore, since the EPSG database defines (λ,φ) axis order in
  *       addition to the usual (φ,λ) order for the target CRS, this tests allows us to verify we can find
  *       this operation despite different axis order.</li>
  * </ul>
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java
index 9426526144..4c4cd40bf3 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConversionTest.java
@@ -107,7 +107,7 @@ public final strictfp class DefaultConversionTest extends TestCase {
      *
      * <p><b>This is not really a valid conversion</b> since, strictly speaking, <cite>Longitude rotations</cite>
      * are coordinate <em>transformations</em> rather than conversions (because they change the datum, since they
-     * change the prime meridian). However we handle them as conversions for testing purpose only, because the
+     * change the prime meridian). However, we handle them as conversions for testing purpose only, because the
      * longitude rotation is a very simple operation easy to test.</p>
      *
      * @param  useGreenwich  {@code true} for using Greenwich prime meridian in the {@code targetCRS},
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/ResidualGridTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/ResidualGridTest.java
index b7092765bb..1689eb4fdf 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/ResidualGridTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/builder/ResidualGridTest.java
@@ -141,7 +141,7 @@ public final strictfp class ResidualGridTest extends TestCase {
      * }
      *
      * So this mean for example that when moving from 1 cell to the right, the residual change from (0,4) to (2,3).
-     * Consequently the <var>x</var> position is increased from (2-0) = 2 cells in addition to the move to the right
+     * Consequently, the <var>x</var> position is increased from (2-0) = 2 cells in addition to the move to the right
      * (so the total increase is 3), and the <var>y</var> position is increased from (3-4) = -1.
      */
     @Test
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java
index ace10ee87f..19ef340366 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatricesTest.java
@@ -116,7 +116,7 @@ public final strictfp class MatricesTest extends TestCase {
     /**
      * Tests {@link Matrices#createTransform(AxisDirection[], AxisDirection[])} with different axes.
      * Axes are moved in different positions, and some axes will have opposite directions.
-     * However the number of axes stay the same.
+     * However, the number of axes stay the same.
      *
      * <div class="note"><b>Note:</b>
      * {@code Matrices.createTransform(AxisDirection[], AxisDirection[])} needs to be tested with special care,
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatrixTestCase.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatrixTestCase.java
index ef6f68d432..1f3e91c823 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatrixTestCase.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/matrix/MatrixTestCase.java
@@ -40,7 +40,7 @@ import static org.apache.sis.test.Assert.*;
  * </ul>
  *
  * So this class is indirectly a test of those factory methods.
- * However this class does not test any other {@code Matrices} methods.
+ * However, this class does not test any other {@code Matrices} methods.
  *
  * <p>This class uses <a href="http://math.nist.gov/javanumerics/jama">JAMA</a> as the reference implementation.</p>
  *
@@ -70,7 +70,7 @@ public abstract strictfp class MatrixTestCase extends TestCase {
      *
      * <h4>How this value is determined</h4>
      * Experience (by looking at {@link #statistics}) shows that the differences are usually smaller than 1E-12.
-     * However when using non-determinist sequence of random values ({@link #DETERMINIST} sets to {@code false}),
+     * However, when using non-determinist sequence of random values ({@link #DETERMINIST} sets to {@code false}),
      * we do have from time-to-time a difference around 1E-9.
      *
      * Those differences exist because SIS uses double-double arithmetic, while JAMA uses ordinary double.
@@ -406,7 +406,7 @@ public abstract strictfp class MatrixTestCase extends TestCase {
     /**
      * Tests {@link MatrixSIS#convertBefore(int, Number, Number)} using {@link AffineTransform}
      * as a reference implementation. This test can be run only with matrices of size 3×3.
-     * Consequently it is sub-classes responsibility to add a {@code testConvertBefore()} method
+     * Consequently, it is sub-classes responsibility to add a {@code testConvertBefore()} method
      * which invoke this method.
      *
      * @param  matrix     the matrix of size 3×3 to test.
@@ -476,7 +476,7 @@ public abstract strictfp class MatrixTestCase extends TestCase {
     /**
      * Tests {@link MatrixSIS#convertAfter(int, Number, Number)} using {@link AffineTransform}
      * as a reference implementation. This test can be run only with matrices of size 3×3.
-     * Consequently it is sub-classes responsibility to add a {@code testConvertAfter()} method
+     * Consequently, it is sub-classes responsibility to add a {@code testConvertAfter()} method
      * which invoke this method.
... 4670 lines suppressed ...