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 2023/01/15 18:43:51 UTC

[sis] 02/03: Replace some
by

or

headings. This is a change in javadoc formatting only.

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 47e5b431413ce000a1d752da5d32097cca481629
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Sun Jan 15 16:16:27 2023 +0100

    Replace some <div> by <h2> or <h4> headings.
    This is a change in javadoc formatting only.
---
 .../java/org/apache/sis/internal/gui/control/ColorCell.java  |  6 +++---
 .../main/java/org/apache/sis/metadata/AbstractMetadata.java  |  4 ++--
 .../java/org/apache/sis/metadata/StandardImplementation.java |  4 ++--
 .../main/java/org/apache/sis/metadata/TreeNodeChildren.java  |  4 ++--
 .../src/main/java/org/apache/sis/xml/MarshallerPool.java     |  4 ++--
 .../src/main/java/org/apache/sis/xml/NilObjectHandler.java   |  4 ++--
 .../src/main/java/org/apache/sis/xml/NilReason.java          |  4 ++--
 core/sis-metadata/src/main/java/org/apache/sis/xml/XML.java  |  4 ++--
 .../main/java/org/apache/sis/geometry/AbstractEnvelope.java  |  4 ++--
 .../java/org/apache/sis/geometry/GeneralDirectPosition.java  |  6 +++---
 .../org/apache/sis/internal/referencing/DeprecatedCode.java  |  9 ++++-----
 .../org/apache/sis/internal/referencing/DeprecatedName.java  |  9 ++++-----
 .../sis/internal/referencing/provider/Geographic3Dto2D.java  |  6 +++---
 .../sis/internal/referencing/provider/VerticalOffset.java    |  6 +++---
 .../src/main/java/org/apache/sis/io/wkt/WKTDictionary.java   |  6 +++---
 .../java/org/apache/sis/parameter/ParameterValueList.java    |  6 +++---
 .../src/main/java/org/apache/sis/parameter/Verifier.java     |  4 ++--
 .../java/org/apache/sis/referencing/ImmutableIdentifier.java |  4 ++--
 .../apache/sis/referencing/crs/DefaultEngineeringCRS.java    |  4 ++--
 .../org/apache/sis/referencing/datum/DatumShiftGrid.java     |  6 +++---
 .../sis/referencing/factory/MultiAuthoritiesFactory.java     |  5 ++---
 .../apache/sis/referencing/factory/sql/EPSGCodeFinder.java   |  3 +--
 .../operation/builder/LinearTransformBuilder.java            |  6 +++---
 .../sis/referencing/operation/projection/Mercator.java       |  3 +--
 .../sis/referencing/operation/projection/Orthographic.java   |  4 ++--
 .../operation/transform/ConcatenatedTransform.java           |  4 ++--
 .../main/java/org/apache/sis/internal/jdk17/HexFormat.java   |  6 +++---
 .../src/main/java/org/apache/sis/math/Vector.java            | 10 ++++++----
 .../src/main/java/org/apache/sis/measure/UnitRegistry.java   |  6 +++---
 .../src/main/java/org/apache/sis/util/Locales.java           |  4 ++--
 .../src/main/java/org/apache/sis/util/collection/Cache.java  |  8 ++++----
 .../java/org/apache/sis/util/collection/CodeListSet.java     |  4 ++--
 .../org/apache/sis/util/collection/DefaultTreeTable.java     |  9 +++++----
 .../org/apache/sis/util/collection/FrequencySortedSet.java   |  6 +++---
 .../java/org/apache/sis/util/collection/TreeNodeList.java    |  4 ++--
 .../java/org/apache/sis/util/logging/MonolineFormatter.java  |  8 ++++----
 .../src/main/java/org/apache/sis/storage/geotiff/Reader.java |  6 +++---
 .../apache/sis/internal/storage/io/MemoryDataTransfer.java   |  4 ++--
 .../main/java/org/apache/sis/storage/AbstractResource.java   | 12 ++++++------
 .../java/org/apache/sis/test/storage/SubsampledImage.java    |  4 ++--
 40 files changed, 109 insertions(+), 111 deletions(-)

diff --git a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/control/ColorCell.java b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/control/ColorCell.java
index bccd53bd73..ccb8283410 100644
--- a/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/control/ColorCell.java
+++ b/application/sis-javafx/src/main/java/org/apache/sis/internal/gui/control/ColorCell.java
@@ -263,12 +263,12 @@ final class ColorCell<S> extends TableCell<S,ColorRamp> implements EventHandler<
      * or because this cell is now used for a new {@code <S>} instance. This method is invoked when the
      * row value (of type {@code <S>}) is modified.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * this method should not invoke {@link #setGraphic(Node)} if the current graphic is a {@link ComboBoxBase}
+     * <h4>Implementation note</h4>
+     * This method should not invoke {@link #setGraphic(Node)} if the current graphic is a {@link ComboBoxBase}
      * (the parent of {@link ComboBox} and {@link ColorPicker}) because this method may be invoked at any time,
      * including during the execution of {@link #startEdit()} or {@link #commitEdit(Object)} methods.
      * Adding or removing {@link ComboBoxBase} in this method cause problems with focus system.
-     * In particular we must be sure to remove {@link ColorPicker} only after it has lost focus.</div>
+     * In particular we must be sure to remove {@link ColorPicker} only after it has lost focus.
      *
      * @param  colors  the new object to show as a color or gradient in this cell.
      * @param  empty   {@code true} if this method is invoked for creating an empty cell.
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 dfbea66072..cea810698f 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
@@ -308,10 +308,10 @@ public abstract class AbstractMetadata implements LenientComparable, Emptiable {
      * the {@link java.util.Set#hashCode()} one and ensures that the hash code value is
      * insensitive to the ordering of properties.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * This method does not cache the value because current implementation has no notification mechanism
      * for tracking changes in children properties. If this metadata is known to be immutable,
-     * then subclasses may consider caching the hash code value if performance is important.</div>
+     * then subclasses may consider caching the hash code value if performance is important.
      *
      * @see MetadataStandard#hashCode(Object)
      */
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/metadata/StandardImplementation.java b/core/sis-metadata/src/main/java/org/apache/sis/metadata/StandardImplementation.java
index c05c6d7d7e..33244739d1 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/StandardImplementation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/StandardImplementation.java
@@ -60,12 +60,12 @@ final class StandardImplementation extends MetadataStandard {
     /**
      * Implementations for a given interface, computed when first needed then cached.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * In the particular case of {@code Class} keys, {@code IdentityHashMap} and {@code HashMap} have identical
      * behavior since {@code Class} is final and does not override the {@code equals(Object)} and {@code hashCode()}
      * methods. The {@code IdentityHashMap} Javadoc claims that it is faster than the regular {@code HashMap}.
      * But maybe the most interesting property is that it allocates less objects since {@code IdentityHashMap}
-     * implementation doesn't need the chain of objects created by {@code HashMap}.</div>
+     * implementation doesn't need the chain of objects created by {@code HashMap}.
      */
     private final transient Map<Class<?>,Class<?>> implementations;     // written by reflection on deserialization.
 
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 b2d06be34b..fb9bd58784 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
@@ -226,9 +226,9 @@ final class TreeNodeChildren extends AbstractCollection<TreeTable.Node> {
      * Returns {@code true} if the type at the given index is a collection or a map.
      * The given {@code index} is relative to the {@link #accessor} indexing, <strong>not</strong> to this collection.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * We do not test {@code (value instanceof Collection)} because the value could be any user's implementation.
-     * Nothing prevent users from implementing the collection interface even for singleton elements if they wish.</div>
+     * Nothing prevent users from implementing the collection interface even for singleton elements if they wish.
      *
      * @param  index  the index in the accessor (<em>not</em> the index in this collection).
      * @return {@code true} if the value at the given index is a collection.
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/MarshallerPool.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/MarshallerPool.java
index 4d43c14c74..a6867b5a2b 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/MarshallerPool.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/MarshallerPool.java
@@ -93,11 +93,11 @@ public class MarshallerPool {
      * The provider of {@code AdapterReplacement} instances.
      * <strong>Every usage of this service loader must be synchronized.</strong>
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * Each {@code MarshallerPool} has its own service loader instance rather than using a system-wide instance
      * because the {@link ClassLoader} used by the service loader is the <cite>context class loader</cite>,
      * which depends on the thread that created the pool. So two pools in two different applications could have
-     * two different set of replacements.</div>
+     * two different set of replacements.
      */
     private final ServiceLoader<AdapterReplacement> replacements;
 
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObjectHandler.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObjectHandler.java
index 673d7991c1..9a8711b459 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObjectHandler.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/NilObjectHandler.java
@@ -43,9 +43,9 @@ import org.apache.sis.internal.jaxb.ModifiableIdentifierMap;
  * definition were found for a XML element identified by {@code xlink} or {@code uuidref}
  * attributes.
  *
- * <div class="note"><b>Implementation note:</b>
+ * <h4>Implementation note</h4>
  * The same handler could be used for every proxy having the same XLink.
- * For now, it doesn't seem worth to cache the handlers.</div>
+ * For now, it doesn't seem worth to cache the handlers.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.3
diff --git a/core/sis-metadata/src/main/java/org/apache/sis/xml/NilReason.java b/core/sis-metadata/src/main/java/org/apache/sis/xml/NilReason.java
index 9ac9b410da..20fb04e72e 100644
--- a/core/sis-metadata/src/main/java/org/apache/sis/xml/NilReason.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/xml/NilReason.java
@@ -436,11 +436,11 @@ public final class NilReason implements Serializable {
      * <p><b>Reminder:</b> If more special cases are added, do not forget to update the {@link #mayBeNil(Object)}
      * method and to update the {@link #createNilObject(Class)} and {@link #forObject(Object)} javadoc.</p>
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * There is no special case for {@link Character} because Java {@code char}s are not really full Unicode characters.
      * They are parts of UTF-16 encoding instead. If there is a need to represent a single Unicode character, we should
      * probably still use a {@link String} where the string contain 1 or 2 Java characters. This may also facilitate the
-     * encoding in the XML files, since many files use another encoding than UTF-16 anyway.</div>
+     * encoding in the XML files, since many files use another encoding than UTF-16 anyway.
      *
      * @throws IllegalArgumentException if the given type is not a supported type.
      */
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 acbef4e9ef..62710a5679 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
@@ -403,11 +403,11 @@ public final class XML extends Static {
     /**
      * Returns the default (un)marshaller pool used by all methods in this class.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * Current implementation uses the double-check idiom. This is usually a deprecated practice
      * (the recommended alterative is to use static class initialization), but in this particular
      * case the field may be reset to {@code null} if modules are loaded or unloaded by a container,
-     * so static class initialization would be a little bit too rigid.</div>
+     * so static class initialization would be a little bit too rigid.
      */
     @SuppressWarnings("DoubleCheckedLocking")
     private static MarshallerPool getPool() throws JAXBException {
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 176be0fbf6..afd4ee9d8c 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
@@ -1117,9 +1117,9 @@ public abstract class AbstractEnvelope extends FormattableObject implements Enve
      * Returns {@code true} if the specified object is an envelope of the same class
      * with equals coordinates and {@linkplain #getCoordinateReferenceSystem() CRS}.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * This implementation requires that the provided {@code object} argument is of the same class than this envelope.
-     * We do not relax this rule since not every implementations in the SIS code base follow the same contract.</div>
+     * We do not relax this rule since not every implementations in the SIS code base follow the same contract.
      *
      * @param  object  the object to compare with this envelope.
      * @return {@code true} if the given object is equal to this envelope.
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 bfefda5417..06cdc409b0 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
@@ -110,10 +110,10 @@ public class GeneralDirectPosition extends AbstractDirectPosition implements Ser
      * This constructor assigns the given array directly (without clone) to the {@link #coordinates} field.
      * Consequently, callers shall not recycle the same array for creating many instances.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * the array is not cloned because this is usually not needed, especially in the context of variable
+     * <h4>Implementation notes</h4>
+     * 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}
-     * field is public, so cloning the array would not protect the state of this object anyway.</div>
+     * field is public, so cloning the array would not protect the state of this object anyway.
      *
      * <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
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedCode.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedCode.java
index 1d3fa31deb..ead2748c28 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedCode.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedCode.java
@@ -26,11 +26,10 @@ import org.apache.sis.util.Deprecable;
  * An identifier which should not be used anymore.
  * This is used mostly for deprecated EPSG codes.
  *
- * <div class="note"><b>Implementation note:</b>
- * this class opportunistically recycles the {@linkplain #getDescription() description} property into a
- * {@linkplain #getRemarks() remarks} property. This is a lazy way to inherit {@link #equals(Object)}
- * and {@link #hashCode()} implementations without adding code in this class for taking in account a
- * new field.</div>
+ * <h2>Implementation note</h2>
+ * This class opportunistically recycles the {@linkplain #getDescription() description} property into a
+ * {@linkplain #getRemarks() remarks} property. This is a lazy way to inherit {@link #equals(Object)} and
+ * {@link #hashCode()} implementations without adding code in this class for taking in account a new field.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.7
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedName.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedName.java
index ba55c48ec1..d95b4bf7f0 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedName.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/DeprecatedName.java
@@ -26,11 +26,10 @@ import org.apache.sis.util.Deprecable;
  * A deprecated name.
  * This is used mostly for names which were used in legacy versions of the EPSG database.
  *
- * <div class="note"><b>Implementation note:</b>
- * this class opportunistically recycles the {@linkplain #getDescription() description} property into a
- * {@linkplain #getRemarks() remarks} property. This is a lazy way to inherit {@link #equals(Object)}
- * and {@link #hashCode()} implementations without adding code in this class for taking in account a
- * new field.</div>
+ * <h2>Implementation note</h2>
+ * This class opportunistically recycles the {@linkplain #getDescription() description} property into a
+ * {@linkplain #getRemarks() remarks} property. This is a lazy way to inherit {@link #equals(Object)} and
+ * {@link #hashCode()} implementations without adding code in this class for taking in account a new field.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.7
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java
index beb18aada1..2e17b121e5 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/internal/referencing/provider/Geographic3Dto2D.java
@@ -106,15 +106,15 @@ public final class Geographic3Dto2D extends GeographicRedimension {
     /**
      * Returns the transform.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * creating a transform that drop a dimension is trivial. We even have a helper method for that:
+     * <h4>Implementation note</h4>
+     * Creating a transform that drop a dimension is trivial. We even have a helper method for that:
      * {@link Matrices#createDimensionSelect}  The difficulty is that the inverse of that transform
      * will set the height to NaN, while we want zero. The trick is to first create the transform for
      * the inverse transform with the zero that we want, then get the inverse of that inverse transform.
      * The transform that we get will remember where it come from (its inverse).
      *
      * <p>This work with SIS implementation, but is not guaranteed to work with other implementations.
-     * For that reason, this method does not use the given {@code factory}.</p></div>
+     * For that reason, this method does not use the given {@code factory}.</p>
      *
      * @param  factory  ignored (can be null).
      * @param  values   ignored.
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 511e330232..be98796b7f 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
@@ -99,11 +99,11 @@ public final class VerticalOffset extends GeodeticOperation {
      * this method detects that the target axis is oriented toward down. This orientation is detected by a
      * negative sign for the <var>m₀₀</var> coefficient in the given 2×2 affine transform matrix.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * for now we define this method as a static one because it is the only special case handled by
+     * <h4>Implementation note</h4>
+     * For now we define this method as a static one because it is the only special case handled by
      * {@code DefaultMathTransformFactory}. But if there is more special cases in a future SIS version,
      * then we should make this method non-static and declare an overrideable {@code postCreate} method
-     * in {@link AbstractProvider} instead.</div>
+     * in {@link AbstractProvider} instead.
      *
      * @param  parameterized  the transform created by {@code createMathTransform(…)}.
      * @param  after  the matrix for the operation to be concatenated after {@code parameterized}.
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 421633791a..17b4eb2193 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
@@ -172,11 +172,11 @@ public class WKTDictionary extends GeodeticAuthorityFactory {
      * All {@link #parser} usages after {@code WKTDictionary} construction shall be synchronized by
      * the {@link ReadWriteLock#writeLock()}.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * we manage the locks ourselves instead of using a {@link java.util.concurrent.ConcurrentHashMap}
+     * <h4>Implementation note</h4>
+     * 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
-     * capability provided by {@code ConcurrentHashMap} does not help us in this case.</div>
+     * capability provided by {@code ConcurrentHashMap} does not help us in this case.
      */
     private final ReadWriteLock lock;
 
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 de4c7735b5..b7abe02409 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
@@ -43,11 +43,11 @@ import org.apache.sis.internal.referencing.Resources;
  * This class performs checks on the parameter values to be added or removed.
  * This implementation supports {@code set(…)}, {@code add(…)} and {@code remove(…)} operations.
  *
- * <div class="note"><b>Implementation note:</b>
- * this class reproduces some {@link java.util.ArrayList} functionalities.
+ * <h4>Implementation note</h4>
+ * 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
  * implementations provided by {@code AbstractList} — the optimizations performed by {@code ArrayList}
- * are not suitable here.</div>
+ * are not suitable here.
  *
  * @author  Martin Desruisseaux (IRD, Geomatys)
  * @version 0.4
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 d611cfd86e..904211486c 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
@@ -284,10 +284,10 @@ final class Verifier {
      * Same as {@link #ensureValidValue(Class, Set, Range, Object)}, used as a fallback when
      * the descriptor is not an instance of {@link DefaultParameterDescriptor}.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * At the difference of {@code ensureValidValue(…, Range, …)}, this method does not need to verify array elements
      * because the type returned by {@link ParameterDescriptor#getMinimumValue()} and {@code getMaximumValue()}
-     * methods (namely {@code Comparable<T>}) does not allow usage with arrays.</div>
+     * methods (namely {@code Comparable<T>}) does not allow usage with arrays.
      *
      * @param convertedValue  the value <em>converted to the units specified by the descriptor</em>.
      *        This is not necessarily the user-provided value.
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 1038861c67..bbb7b027fc 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
@@ -535,9 +535,9 @@ public class ImmutableIdentifier extends FormattableObject implements Identifier
     /**
      * Appends the given code or version number as an integer if possible, or as a text otherwise.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * ISO 19162 specifies "number or text". In Apache SIS, we restrict the numbers to integers
-     * because handling version numbers like "8.2" as floating point numbers can be confusing.</div>
+     * because handling version numbers like "8.2" as floating point numbers can be confusing.
      */
     private static void appendCode(final Formatter formatter, final String text) {
         if (text != null) {
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 ff0d0f48e1..fae6508915 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
@@ -293,7 +293,7 @@ public class DefaultEngineeringCRS extends AbstractCRS implements EngineeringCRS
      * Used by JAXB only (invoked by reflection).
      * Only one of {@code getFooCS()} methods can return a non-null value.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * The usual way to handle {@code <xs:choice>} with JAXB is to annotate a single method like below:
      *
      * {@snippet lang="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:
-     * for an unknown reason, the unmarshalled CS object is empty.</div>
+     * for an unknown reason, the unmarshalled CS object is empty.
      *
      * @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/datum/DatumShiftGrid.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/datum/DatumShiftGrid.java
index f5b5f96883..c5f66c795f 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
@@ -859,9 +859,9 @@ public abstract class DatumShiftGrid<C extends Quantity<C>, T extends Quantity<T
      * The given {@code parameters} must have the descriptor returned by {@link #getParameterDescriptors()}.
      * The matrices, tensors or file names are stored in the given {@code parameters} instance.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * this method is invoked by {@link org.apache.sis.referencing.operation.transform.InterpolatedTransform}
-     * and other transforms for initializing the values of their parameter group.</div>
+     * <h4>Implementation note</h4>
+     * This method is invoked by {@link org.apache.sis.referencing.operation.transform.InterpolatedTransform}
+     * and other transforms for initializing the values of their parameter group.
      *
      * @param  parameters  the parameter group where to set the values.
      *
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 d0ad0629dd..f6f47c917c 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
@@ -489,9 +489,8 @@ public class MultiAuthoritiesFactory extends GeodeticAuthorityFactory implements
     /**
      * Returns the code spaces of all factories given to the constructor.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * the current implementation may be relatively costly since it implies instantiation of all factories.
-     * </div>
+     * <h4>Performance note</h4>
+     * The current implementation may be relatively costly because it implies instantiation of all factories.
      *
      * @return the code spaces of all factories.
      */
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 94f045c0fc..6d664c600e 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
@@ -110,14 +110,13 @@ final class EPSGCodeFinder extends IdentifiedObjectFinder {
      * Returns a description of the condition to put in a {@code WHERE} clause for an object having
      * the given dependency.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * 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(…)}
      * 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
      * a loop for many CRS objects sharing the same {@link CoordinateSystem} or {@link Datum} dependencies.
-     * </div>
      *
      * @param  column      column in the SQL query containing EPSG codes of dependency.
      * @param  type        GeoAPI interface implemented by the dependency to search.
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 51324255bb..2352825171 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
@@ -128,11 +128,11 @@ public class LinearTransformBuilder extends TransformBuilder {
      * Example: {x[], y[], z[]}.
      * This is {@code null} if not yet specified.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * we could use a flat array with (x₀, y₀), (x₁, y₁), (x₂, y₂), <i>etc.</i> coordinate tuples instead.
+     * <h4>Implementation note</h4>
+     * We could use a flat array with (x₀, y₀), (x₁, y₁), (x₂, y₂), <i>etc.</i> coordinate tuples instead.
      * Such flat array would be more convenient for some coordinate conversions with {@link MathTransform}.
      * But using array of arrays is more convenient for other calculations working on one dimension at time,
-     * make data more local for CPU, and also allows handling of more points.</div>
+     * make data more local for CPU, and also allows handling of more points.
      */
     private double[][] targets;
 
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 3e0a60247f..add9caf444 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
@@ -492,7 +492,7 @@ subst:  if (variant.spherical || (eccentricity == 0 && getClass() == Mercator.cl
     /**
      * Provides the transform equations for the spherical case of the Mercator projection.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * this class contains an explicit check for latitude values at a pole. If floating point arithmetic had infinite
      * precision, such checks would not be necessary since the formulas lead naturally to infinite values at poles,
      * which is the correct answer. In practice the infinite value emerges by itself at only one pole, and the other
@@ -506,7 +506,6 @@ subst:  if (variant.spherical || (eccentricity == 0 && getClass() == Mercator.cl
      *       other values we could let the math do their "natural" work.</li>
      *   <li>For φ = -π/2 our arithmetic already produces negative infinity.</li>
      * </ul>
-     * </div>
      *
      * @author  Martin Desruisseaux (MPO, IRD, Geomatys)
      * @author  Rueben Schulz (UBC)
diff --git a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
index 459fb5bc87..44806e3b26 100644
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/operation/projection/Orthographic.java
@@ -166,10 +166,10 @@ public class Orthographic extends NormalizedProjection {
      * Implementation of {@link #transform(double[], int, double[], int, boolean)}
      * with possibility to recycle an existing matrix instance.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * in other map projections, we use a different class for ellipsoidal formulas.
      * But the orthographic projection is a bit different; for this one it is more
-     * convenient to use {@code if} statements.</div>
+     * convenient to use {@code if} statements.
      *
      * @param  derivative  where to store the Jacobian matrix, or {@code null} if none.
      *         If this matrix is an {@link Inverter} instance, we take that as a flag
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 f1f0c1482c..f051f35c9c 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
@@ -130,10 +130,10 @@ class ConcatenatedTransform extends AbstractMathTransform implements Serializabl
      * Likewise if the concatenation result works with one-dimensional input and output points,
      * then the returned transform will implement {@link MathTransform1D}.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * {@code ConcatenatedTransform} implementations are available in two versions: direct and non-direct.
      * The "non-direct" versions use an intermediate buffer when performing transformations; they are slower
-     * and consume more memory. They are used only as a fallback when a "direct" version cannot be created.</div>
+     * and consume more memory. They are used only as a fallback when a "direct" version cannot be created.
      *
      * @param  tr1      the first math transform.
      * @param  tr2      the second math transform.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/HexFormat.java b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/HexFormat.java
index c2d878a977..7b34e540c5 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/HexFormat.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/internal/jdk17/HexFormat.java
@@ -59,9 +59,9 @@ public final class HexFormat {
      * Returns the numerical value of the given hexadecimal digit.
      * The hexadecimal digit can be the decimal digits 0 to 9, or the letters A to F ignoring case.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * we do not use {@link Character#digit(char, int)} because that method handled a large
-     * range of Unicode characters, which is a wider scope than what is intended here.</div>
+     * <h4>Implementation note</h4>
+     * We do not use {@link Character#digit(char, int)} because that method handled a large
+     * range of Unicode characters, which is a wider scope than what is intended here.
      *
      * @param  c  the hexadecimal digit.
      * @throws NumberFormatException if the given character is not a hexadecimal digit.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java b/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
index d53a421211..923184a6c0 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/math/Vector.java
@@ -874,9 +874,10 @@ search:     for (;;) {
      * The returned view will contain the values from index {@code lower} inclusive to
      * {@code upper} exclusive.
      *
-     * <div class="note"><b>Implementation note:</b> this method delegates its work
+     * <h4>Implementation note</h4>
+     * This method delegates its work
      * <code>{@linkplain #subSampling(int,int,int) subSampling}(lower, 1, upper - lower)</code>.
-     * This method is declared final in order to force subclasses to override {@code subSampling(…)} instead.</div>
+     * This method is declared final in order to force subclasses to override {@code subSampling(…)} instead.
      *
      * @param  lower  index of the first value to be included in the returned view.
      * @param  upper  index after the last value to be included in the returned view.
@@ -1342,9 +1343,10 @@ search:     for (;;) {
     /**
      * Returns a view which contains the values of this vector in reverse order.
      *
-     * <div class="note"><b>Implementation note:</b> this method delegates its work
+     * <h4>Implementation note</h4>
+     * This method delegates its work
      * to <code>{@linkplain #subSampling(int,int,int) subSampling}(size-1, -1, {@linkplain #size() size})</code>.
-     * This method is declared final in order to force subclasses to override {@code subSampling(…)} instead.</div>
+     * This method is declared final in order to force subclasses to override {@code subSampling(…)} instead.
      *
      * @return the vector values in reverse order.
      */
diff --git a/core/sis-utility/src/main/java/org/apache/sis/measure/UnitRegistry.java b/core/sis-utility/src/main/java/org/apache/sis/measure/UnitRegistry.java
index 1fed3d861f..9165c05d6a 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/measure/UnitRegistry.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/measure/UnitRegistry.java
@@ -109,10 +109,10 @@ final class UnitRegistry implements SystemOfUnits, Serializable {
      * Values are stored by weak references and garbage collected when no longer used.
      * Key and value types are the same than the one described in {@link #HARD_CODED}.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * we separate hard-coded values from user-defined values because the amount of hard-coded values is relatively
+     * <h4>Implementation note</h4>
+     * We separate hard-coded values from user-defined values because the amount of hard-coded values is relatively
      * large, using weak references for them is useless, and most applications will not define any custom values.
-     * This map will typically stay empty.</div>
+     * This map will typically stay empty.
      */
     private static final WeakValueHashMap<Object,Object> USER_DEFINED = new WeakValueHashMap<>(Object.class);
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java b/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
index cea1eeab26..e5024abba5 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/Locales.java
@@ -96,11 +96,11 @@ public final class Locales extends Static {
      * for compactness (conversions is done by {@link #toNumber(String, short)}) and for avoiding references
      * to {@code String} instances.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * OpenJDK 8 implementation computes the 3-letters codes on-the-fly instead of holding references
      * to pre-existing strings. If we were holding string references here, we would prevent the garbage
      * collector to collect the strings for all languages and countries. This would probably be a waste
-     * of resources.</div>
+     * of resources.
      */
     private static final short[] ISO3, ISO2;
     static {
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/collection/Cache.java b/core/sis-utility/src/main/java/org/apache/sis/util/collection/Cache.java
index c0847a4781..40daebdb49 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/collection/Cache.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/collection/Cache.java
@@ -1046,10 +1046,10 @@ public class Cache<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V> {
         /**
          * Do nothing (except checking for programming error), since we don't hold any lock.
          *
-         * <div class="note"><b>Implementation note:</b>
+         * <h4>Implementation note</h4>
          * An alternative would have been to store the result in the map anyway.
          * But doing so is unsafe because we have no lock; we have no guarantee that nothing
-         * has happened in another thread between {@code peek} and {@code putAndUnlock}.</div>
+         * has happened in another thread between {@code peek} and {@code putAndUnlock}.
          */
         @Override
         public void putAndUnlock(final V result) throws IllegalStateException {
@@ -1161,10 +1161,10 @@ public class Cache<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V> {
             /**
              * Do nothing (except checking for programming error), since we don't hold any lock.
              *
-             * <div class="note"><b>Implementation note:</b>
+             * <h4>Implementation note</h4>
              * An alternative would have been to store the result in the map anyway.
              * But doing so is unsafe because we have no lock; we have no guarantee that nothing
-             * has happened in another thread between {@code peek} and {@code putAndUnlock}.</div>
+             * has happened in another thread between {@code peek} and {@code putAndUnlock}.
              */
             @Override
             public void putAndUnlock(final V result) throws IllegalStateException {
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/collection/CodeListSet.java b/core/sis-utility/src/main/java/org/apache/sis/util/collection/CodeListSet.java
index 43aa408a9f..f8e4f731cf 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/collection/CodeListSet.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/collection/CodeListSet.java
@@ -91,11 +91,11 @@ public class CodeListSet<E extends CodeList<E>> extends AbstractSet<E>
      * if none. This is very rarely needed, but we need this field in case a code list has
      * more than 64 elements.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * The standard {@link java.util.EnumSet} class uses different implementations depending on whether
      * the enumeration contains more or less than 64 elements. We cannot apply the same strategy for
      * {@code CodeListSet}, because new code list elements can be created at runtime. Consequently, this
-     * implementation needs to be able to growth its capacity.</div>
+     * implementation needs to be able to growth its capacity.
      */
     private BitSet supplementary;
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/collection/DefaultTreeTable.java b/core/sis-utility/src/main/java/org/apache/sis/util/collection/DefaultTreeTable.java
index 0059575199..f46178efd1 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/collection/DefaultTreeTable.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/collection/DefaultTreeTable.java
@@ -97,10 +97,10 @@ public class DefaultTreeTable implements TreeTable, Cloneable, Serializable {
      * implementation for storing values in a single flat array. After creation, this
      * map shall be read-only since many {@code Node} instances may share it.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * This field and the {@link #columns} field could be computed from each other.
      * But we serialize this field anyway because children nodes will typically hold
-     * a reference to that map, and we want to preserve the references tree.</div>
+     * a reference to that map, and we want to preserve the references tree.
      *
      * @see DefaultTreeTable.Node#columnIndices
      */
@@ -684,12 +684,13 @@ public class DefaultTreeTable implements TreeTable, Cloneable, Serializable {
          * parent}. This method can be used for determining if two branches of a same tree or of two
          * different trees are identical.
          *
-         * <div class="note"><b>Implementation note:</b> This method ignores the parent because:
+         * <h4>Implementation note</h4>
+         * This method ignores the parent because:
          * <ul>
          *   <li>When comparing the children recursively, comparing the parents would cause infinite recursivity.</li>
          *   <li>For consistency with the {@link #clone()} method, which cannot clone the parent.</li>
          *   <li>For making possible to compare branches instead of only whole trees.</li>
-         * </ul></div>
+         * </ul>
          *
          * @param  other  the object to compare with this node.
          * @return {@code true} if the two objects are equal, ignoring the parent node.
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/collection/FrequencySortedSet.java b/core/sis-utility/src/main/java/org/apache/sis/util/collection/FrequencySortedSet.java
index fae1cbd41d..4e8a86aaa0 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/collection/FrequencySortedSet.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/collection/FrequencySortedSet.java
@@ -71,13 +71,13 @@ public class FrequencySortedSet<E> extends AbstractSet<E> implements SortedSet<E
      * The intent is to store negative numbers in the {@link #count} map if this {@code FrequencySortedSet}
      * has been created for reverse order.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * we could have used {@code +1} and {@code -1} for the usual and reverse order respectively, and store the
+     * <h4>Implementation note</h4>
+     * We could have used {@code +1} and {@code -1} for the usual and reverse order respectively, and store the
      * multiplication result {@code n * order} in the {@link #count} map. We rather use XOR for two reasons:
      * first, XOR is a simpler operation for the CPU than multiplication. Second, XOR guarantees us that all
      * negative numbers can be made positive in {@link #frequencies()}, by applying again {@code n ^ order}.
      * By contrast, the multiplication approach (or just the {@code -n} negation) would fail to convert
-     * {@link Integer#MIN_VALUE}.</div>
+     * {@link Integer#MIN_VALUE}.
      */
     private final int order;
 
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/collection/TreeNodeList.java b/core/sis-utility/src/main/java/org/apache/sis/util/collection/TreeNodeList.java
index d9821689a2..d10b6fadbe 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/collection/TreeNodeList.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/collection/TreeNodeList.java
@@ -52,10 +52,10 @@ import org.apache.sis.util.resources.Errors;
  *       to {@code TreeNodeList} (we need the slower path implemented in {@code AbstractList}).</li>
  * </ul>
  *
- * <div class="note"><b>Implementation note:</b>
+ * <h3>Note on serialization</h3>
  * Being serializable may seem contradictory with the non-cloneable requirement.
  * But serializing {@code TreeNodeList} will also serialize the parent, thus
- * creating new copy on deserialization. So the parents should not be mixed.</div>
+ * creating new copy on deserialization. So the parents should not be mixed.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.3
diff --git a/core/sis-utility/src/main/java/org/apache/sis/util/logging/MonolineFormatter.java b/core/sis-utility/src/main/java/org/apache/sis/util/logging/MonolineFormatter.java
index 1b13f53304..7e0cc6056d 100644
--- a/core/sis-utility/src/main/java/org/apache/sis/util/logging/MonolineFormatter.java
+++ b/core/sis-utility/src/main/java/org/apache/sis/util/logging/MonolineFormatter.java
@@ -970,9 +970,9 @@ loop:   for (int i=0; ; i++) {
      *       root logger.</li>
      * </ul>
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Limitations</h4>
      * The current implementation does not check for duplicated {@code ConsoleHandler} instances,
-     * and does not check if any child logger has a {@code ConsoleHandler}.</div>
+     * and does not check if any child logger has a {@code ConsoleHandler}.
      *
      * @return the new or existing {@code MonolineFormatter}. The formatter output can be configured
      *         using the {@link #setTimeFormat(String)} and {@link #setSourceFormat(String)} methods.
@@ -1006,9 +1006,9 @@ loop:   for (int i=0; ; i++) {
      *     </ul></li>
      * </ul>
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Limitations</h4>
      * The current implementation does not check for duplicated {@code ConsoleHandler} instances,
-     * and does not check if any child logger has a {@code ConsoleHandler}.</div>
+     * and does not check if any child logger has a {@code ConsoleHandler}.
      *
      * <h4>Specifying a log level</h4>
      * This method can opportunistically set the handler level. If the given level is non-null,
diff --git a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java
index 9ab1b56c44..6cee41a8b5 100644
--- a/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java
+++ b/storage/sis-geotiff/src/main/java/org/apache/sis/storage/geotiff/Reader.java
@@ -114,9 +114,9 @@ final class Reader extends GeoTIFF {
      * Entries having a value that cannot be read immediately, but instead have a pointer
      * to a value stored elsewhere in the file. Those values will be read only when needed.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * we use a {@code LinkedList} because we will perform frequent additions and removals,
-     * but no random access.</div>
+     * <h4>Implementation note</h4>
+     * We use a {@code LinkedList} because we will perform frequent additions and removals,
+     * but no random access.
      */
     private final LinkedList<DeferredEntry> deferredEntries = new LinkedList<>();
 
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/MemoryDataTransfer.java b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/MemoryDataTransfer.java
index 7aa0181d18..f266da4db1 100644
--- a/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/MemoryDataTransfer.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/internal/storage/io/MemoryDataTransfer.java
@@ -34,11 +34,11 @@ import org.apache.sis.util.Classes;
 /**
  * A {@code DataTransfer} with all data in the given buffer, without channel.
  *
- * <div class="note"><b>Implementation note:</b>
+ * <h4>Implementation note</h4>
  * This class implements also an empty {@link ReadableByteChannel} as safety. When using {@link ChannelDataInput}
  * without channel, only an existing {@code Buffer} pre-filled with the data should be used. If we have a bug in
  * our reading process, the empty channel will cause an {@link java.io.EOFException} to be thrown instead of a
- * {@link NullPointerException}.</div>
+ * {@link NullPointerException}.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.1
diff --git a/storage/sis-storage/src/main/java/org/apache/sis/storage/AbstractResource.java b/storage/sis-storage/src/main/java/org/apache/sis/storage/AbstractResource.java
index 51a9cea6bb..1bbc59468f 100644
--- a/storage/sis-storage/src/main/java/org/apache/sis/storage/AbstractResource.java
+++ b/storage/sis-storage/src/main/java/org/apache/sis/storage/AbstractResource.java
@@ -103,9 +103,9 @@ public abstract class AbstractResource implements Resource {
      * The default implementation returns an empty value.
      * Subclasses are strongly encouraged to override if they can provide a value.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * the default implementation of {@link #createMetadata()} uses this identifier for initializing
-     * the {@code metadata/identificationInfo/citation/title} property.</div>
+     * <h4>Relationship with metadata</h4>
+     * The default implementation of {@link #createMetadata()} uses this identifier for initializing
+     * the {@code metadata/identificationInfo/citation/title} property.
      */
     @Override
     public Optional<GenericName> getIdentifier() throws DataStoreException {
@@ -117,9 +117,9 @@ public abstract class AbstractResource implements Resource {
      * of resource such as {@link FeatureSet}. But the method is provided in this base class for convenience.
      * The default implementation gives an empty value.
      *
-     * <div class="note"><b>Implementation note:</b>
-     * the default implementation of {@link #createMetadata()} uses this identifier for initializing
-     * the {@code metadata/identificationInfo/extent/geographicElement} property.</div>
+     * <h4>Implementation note</h4>
+     * The default implementation of {@link #createMetadata()} uses this identifier for initializing
+     * the {@code metadata/identificationInfo/extent/geographicElement} property.
      *
      * @return the spatiotemporal resource extent.
      * @throws DataStoreException if an error occurred while reading or computing the envelope.
diff --git a/storage/sis-storage/src/test/java/org/apache/sis/test/storage/SubsampledImage.java b/storage/sis-storage/src/test/java/org/apache/sis/test/storage/SubsampledImage.java
index ca9d1b74fc..de18dd8de0 100644
--- a/storage/sis-storage/src/test/java/org/apache/sis/test/storage/SubsampledImage.java
+++ b/storage/sis-storage/src/test/java/org/apache/sis/test/storage/SubsampledImage.java
@@ -241,13 +241,13 @@ final class SubsampledImage extends PlanarImage {
      * Computes {@code (coordinate - offset) / subsampling} rounded toward 0.
      * The subsampling offset is assumed 0 in current version.
      *
-     * <div class="note"><b>Implementation note:</b>
+     * <h4>Implementation note</h4>
      * in principle we should subtract the <var>subsampling offset</var>. However, that offset is
      * zero in the context of {@link CoverageReadConsistency} test, because coordinates (0,0) of
      * {@linkplain #source} image is the first pixel in the Area Of Interest specified by user,
      * so there are no more offsets at this stage. Note that we are talking about offset in image
      * coordinate system, not to be confused with offset relative to the data bank
-     * (given to the {@link SampleModel} at construction time).</div>
+     * (given to the {@link SampleModel} at construction time).
      */
     private static int divInclusive(final int coordinate, final int subsampling) {
         return floorDiv(coordinate, subsampling);