8989 *
9090 * <h2>Type Mapping</h2>
9191 * <p>The following table shows how Java/abstract types map to Gson JSON types:</p>
92- * <table border="1" cellpadding="5 ">
92+ * <table class="striped ">
9393 * <caption>Type Mapping between Java and Gson</caption>
9494 * <tr><th>Java Type</th><th>Gson Type</th><th>Notes</th></tr>
9595 * <tr><td>{@code boolean}</td><td>{@link JsonPrimitive}</td><td>Created via {@code new JsonPrimitive(boolean)}</td></tr>
@@ -150,7 +150,7 @@ public final class GsonOps implements DynamicOps<JsonElement> {
150150 * It is immutable, stateless, and thread-safe, making it suitable for use in any context
151151 * including multi-threaded environments and dependency injection containers.</p>
152152 *
153- * <h3> Usage</h3 >
153+ * <p><b> Usage</b></p >
154154 * <pre>{@code
155155 * // Direct usage
156156 * JsonElement json = GsonOps.INSTANCE.createString("hello");
@@ -470,13 +470,13 @@ public JsonElement createNumeric(@NotNull final Number value) {
470470 * <p>Extracts the string value from a JSON element. This operation succeeds only if
471471 * the input is a {@link JsonPrimitive} that contains a string value.</p>
472472 *
473- * <h3> Success Conditions</h3 >
473+ * <p><b> Success Conditions</b></p >
474474 * <ul>
475475 * <li>Input is a {@link JsonPrimitive}</li>
476476 * <li>{@link JsonPrimitive#isString()} returns {@code true}</li>
477477 * </ul>
478478 *
479- * <h3> Failure Conditions</h3 >
479+ * <p><b> Failure Conditions</b></p >
480480 * <ul>
481481 * <li>Input is not a {@link JsonPrimitive} (e.g., array, object, null)</li>
482482 * <li>Input is a primitive but contains a number or boolean</li>
@@ -506,13 +506,13 @@ public DataResult<String> getStringValue(@NotNull final JsonElement input) {
506506 * <p>Extracts the numeric value from a JSON element. This operation succeeds only if
507507 * the input is a {@link JsonPrimitive} that contains a numeric value.</p>
508508 *
509- * <h3> Success Conditions</h3 >
509+ * <p><b> Success Conditions</b></p >
510510 * <ul>
511511 * <li>Input is a {@link JsonPrimitive}</li>
512512 * <li>{@link JsonPrimitive#isNumber()} returns {@code true}</li>
513513 * </ul>
514514 *
515- * <h3> Failure Conditions</h3 >
515+ * <p><b> Failure Conditions</b></p >
516516 * <ul>
517517 * <li>Input is not a {@link JsonPrimitive} (e.g., array, object, null)</li>
518518 * <li>Input is a primitive but contains a string or boolean</li>
@@ -546,13 +546,13 @@ public DataResult<Number> getNumberValue(@NotNull final JsonElement input) {
546546 * <p>Extracts the boolean value from a JSON element. This operation succeeds only if
547547 * the input is a {@link JsonPrimitive} that contains a boolean value.</p>
548548 *
549- * <h3> Success Conditions</h3 >
549+ * <p><b> Success Conditions</b></p >
550550 * <ul>
551551 * <li>Input is a {@link JsonPrimitive}</li>
552552 * <li>{@link JsonPrimitive#isBoolean()} returns {@code true}</li>
553553 * </ul>
554554 *
555- * <h3> Failure Conditions</h3 >
555+ * <p><b> Failure Conditions</b></p >
556556 * <ul>
557557 * <li>Input is not a {@link JsonPrimitive} (e.g., array, object, null)</li>
558558 * <li>Input is a primitive but contains a string or number</li>
@@ -623,12 +623,12 @@ public JsonElement createList(@NotNull final Stream<JsonElement> values) {
623623 * <p>Returns the elements of a JSON array as a stream. This operation succeeds only
624624 * if the input is a {@link JsonArray}.</p>
625625 *
626- * <h3> Success Conditions</h3 >
626+ * <p><b> Success Conditions</b></p >
627627 * <ul>
628628 * <li>Input is a {@link JsonArray} (including empty arrays)</li>
629629 * </ul>
630630 *
631- * <h3> Failure Conditions</h3 >
631+ * <p><b> Failure Conditions</b></p >
632632 * <ul>
633633 * <li>Input is not a {@link JsonArray} (e.g., object, primitive, null)</li>
634634 * </ul>
@@ -657,13 +657,13 @@ public DataResult<Stream<JsonElement>> getList(@NotNull final JsonElement input)
657657 * <p>Creates a new array by appending a value to an existing array. This operation
658658 * creates a deep copy of the input array to preserve immutability.</p>
659659 *
660- * <h3> Success Conditions</h3 >
660+ * <p><b> Success Conditions</b></p >
661661 * <ul>
662662 * <li>Input list is a {@link JsonArray}</li>
663663 * <li>Input list is {@link JsonNull} (treated as empty array)</li>
664664 * </ul>
665665 *
666- * <h3> Failure Conditions</h3 >
666+ * <p><b> Failure Conditions</b></p >
667667 * <ul>
668668 * <li>Input list is not an array or null (e.g., object, primitive)</li>
669669 * </ul>
@@ -713,14 +713,14 @@ public JsonElement emptyMap() {
713713 * <p>Creates a new JSON object from a stream of key-value pairs. Keys must be
714714 * JSON string primitives; entries with {@code null} keys are skipped.</p>
715715 *
716- * <h3> Key Handling</h3 >
716+ * <p><b> Key Handling</b></p >
717717 * <ul>
718718 * <li>Keys are converted to strings via {@link JsonElement#getAsString()}</li>
719719 * <li>Entries with {@code null} keys are silently skipped</li>
720720 * <li>Duplicate keys result in the last value being retained</li>
721721 * </ul>
722722 *
723- * <h3> Value Handling</h3 >
723+ * <p><b> Value Handling</b></p >
724724 * <ul>
725725 * <li>{@code null} values are converted to {@link JsonNull#INSTANCE}</li>
726726 * <li>All other values are added as-is</li>
@@ -752,12 +752,12 @@ public JsonElement createMap(@NotNull final Stream<Pair<JsonElement, JsonElement
752752 * <p>Returns the entries of a JSON object as a stream of key-value pairs. This
753753 * operation succeeds only if the input is a {@link JsonObject}.</p>
754754 *
755- * <h3> Success Conditions</h3 >
755+ * <p><b> Success Conditions</b></p >
756756 * <ul>
757757 * <li>Input is a {@link JsonObject} (including empty objects)</li>
758758 * </ul>
759759 *
760- * <h3> Failure Conditions</h3 >
760+ * <p><b> Failure Conditions</b></p >
761761 * <ul>
762762 * <li>Input is not a {@link JsonObject} (e.g., array, primitive, null)</li>
763763 * </ul>
@@ -796,14 +796,14 @@ public DataResult<Stream<Pair<JsonElement, JsonElement>>> getMapEntries(
796796 * <p>Creates a new object by adding or updating a key-value pair in an existing map.
797797 * This operation creates a deep copy of the input map to preserve immutability.</p>
798798 *
799- * <h3> Success Conditions</h3 >
799+ * <p><b> Success Conditions</b></p >
800800 * <ul>
801801 * <li>Input map is a {@link JsonObject}</li>
802802 * <li>Input map is {@link JsonNull} (treated as empty object)</li>
803803 * <li>Key is a {@link JsonPrimitive} containing a string</li>
804804 * </ul>
805805 *
806- * <h3> Failure Conditions</h3 >
806+ * <p><b> Failure Conditions</b></p >
807807 * <ul>
808808 * <li>Input map is not an object or null (e.g., array, primitive)</li>
809809 * <li>Key is not a string primitive</li>
@@ -846,19 +846,19 @@ public DataResult<JsonElement> mergeToMap(
846846 * of the first object. This operation creates a deep copy of the first map to
847847 * preserve immutability.</p>
848848 *
849- * <h3> Success Conditions</h3 >
849+ * <p><b> Success Conditions</b></p >
850850 * <ul>
851851 * <li>Both inputs are {@link JsonObject} instances</li>
852852 * <li>Either input may be {@link JsonNull} (treated as empty object)</li>
853853 * </ul>
854854 *
855- * <h3> Failure Conditions</h3 >
855+ * <p><b> Failure Conditions</b></p >
856856 * <ul>
857857 * <li>First input is not an object or null</li>
858858 * <li>Second input is not an object or null</li>
859859 * </ul>
860860 *
861- * <h3> Merge Behavior</h3 >
861+ * <p><b> Merge Behavior</b></p >
862862 * <ul>
863863 * <li>Entries from the second object override entries with the same key in the first</li>
864864 * <li>Entries unique to either object are included in the result</li>
@@ -901,7 +901,7 @@ public DataResult<JsonElement> mergeToMap(@NotNull final JsonElement map,
901901 * <p>Retrieves a field value from a JSON object by key. Returns {@code null} if
902902 * the input is not an object or the key does not exist.</p>
903903 *
904- * <h3> Behavior</h3 >
904+ * <p><b> Behavior</b></p >
905905 * <ul>
906906 * <li>Returns the field value if the input is a {@link JsonObject} containing the key</li>
907907 * <li>Returns {@code null} if the input is not a {@link JsonObject}</li>
@@ -937,7 +937,7 @@ public JsonElement get(@NotNull final JsonElement input, @NotNull final String k
937937 * <p>Creates a new object with a field set to the specified value. This operation
938938 * creates a deep copy of the input to preserve immutability.</p>
939939 *
940- * <h3> Behavior</h3 >
940+ * <p><b> Behavior</b></p >
941941 * <ul>
942942 * <li>If input is a {@link JsonObject}: creates a deep copy and sets the field</li>
943943 * <li>If input is not a {@link JsonObject}: creates a new object with just the field</li>
@@ -975,7 +975,7 @@ public JsonElement set(@NotNull final JsonElement input,
975975 * <p>Creates a new object with a field removed. This operation creates a deep copy
976976 * of the input to preserve immutability.</p>
977977 *
978- * <h3> Behavior</h3 >
978+ * <p><b> Behavior</b></p >
979979 * <ul>
980980 * <li>If input is a {@link JsonObject}: creates a deep copy and removes the field</li>
981981 * <li>If input is not a {@link JsonObject}: returns the input unchanged</li>
@@ -1008,7 +1008,7 @@ public JsonElement remove(@NotNull final JsonElement input, @NotNull final Strin
10081008 *
10091009 * <p>Checks whether a JSON object contains a field with the specified key.</p>
10101010 *
1011- * <h3> Behavior</h3 >
1011+ * <p><b> Behavior</b></p >
10121012 * <ul>
10131013 * <li>Returns {@code true} if input is a {@link JsonObject} and contains the key</li>
10141014 * <li>Returns {@code false} if input is not a {@link JsonObject}</li>
@@ -1041,7 +1041,7 @@ public boolean has(@NotNull final JsonElement input, @NotNull final String key)
10411041 * This method recursively converts all nested structures, handling primitives, lists,
10421042 * and maps appropriately.</p>
10431043 *
1044- * <h3> Conversion Process</h3 >
1044+ * <p><b> Conversion Process</b></p >
10451045 * <p>The conversion attempts to identify the input type in the following order:</p>
10461046 * <ol>
10471047 * <li><strong>Boolean:</strong> If {@link DynamicOps#getBooleanValue} succeeds,
@@ -1057,7 +1057,7 @@ public boolean has(@NotNull final JsonElement input, @NotNull final String key)
10571057 * <li><strong>Fallback:</strong> Returns {@link JsonNull#INSTANCE} if no type matches</li>
10581058 * </ol>
10591059 *
1060- * <h3> Edge Cases</h3 >
1060+ * <p><b> Edge Cases</b></p >
10611061 * <ul>
10621062 * <li>Map entries with {@code null} keys are skipped</li>
10631063 * <li>Map entries with {@code null} values are converted to {@link JsonNull}</li>
0 commit comments