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

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git

commit 3e4d6bfe371e0fc7173a2188aaf48e5ddf177bed
Author: James Bognar <[email protected]>
AuthorDate: Wed May 13 17:28:17 2026 -0400

    chore: javadoc FQN sweep + sonar suppressions; close TODO-5
    
    - Fully-qualify nested-type Javadoc links across 24 files in 
juneau-marshall, juneau-marshall-rdf, juneau-rest-client, and juneau-commons to 
clear Eclipse JDT "Invalid member type qualification" / "Invalid reference" 
warnings.
    - commons.bean and commons.function package-info.java: switch all {@link} 
tags to fully-qualified class names (imports are ignored in package-info 
Javadoc).
    - BeanInfo: add @Override to newInstance(); suppress java:S1452 on the 
three element/key/value type SPI accessors.
    - MarshalledFilter#applyBeanTypeAnnotations: suppress java:S3776 (cognitive 
complexity).
    - TODO-5 close-out: archive plan to 
FINISHED-5-bean-runtime-types-to-commons.md and remove [TODO-5] bullet from 
TODO.md.
    - Add new TODO-30-classmeta-to-commons.md plan (investigation: move 
ClassMeta and related types from juneau-marshall to juneau-commons).
    
    Co-authored-by: Cursor <[email protected]>
---
 .../org/apache/juneau/commons/bean/BeanInfo.java   |   4 +
 .../apache/juneau/commons/bean/package-info.java   |  74 +++++-----
 .../juneau/commons/function/package-info.java      |  39 +++---
 .../java/org/apache/juneau/jena/RdfSerializer.java |   2 +-
 .../java/org/apache/juneau/MarshalledFilter.java   |   1 +
 .../juneau/MarshalledPropertyPostProcessor.java    |   4 +-
 .../org/apache/juneau/MarshallingContextable.java  |   3 +-
 .../juneau/annotation/BeanConfigAnnotation.java    |   4 +-
 .../org/apache/juneau/annotation/Marshalled.java   |   6 +-
 .../juneau/annotation/MarshalledAnnotation.java    |   3 +-
 .../apache/juneau/annotation/MarshalledConfig.java |  26 ++--
 .../apache/juneau/annotation/MarshalledProp.java   |   3 +-
 .../annotation/MarshalledPropAnnotation.java       |   3 +-
 .../org/apache/juneau/hjson/HjsonSerializer.java   |   2 +-
 .../org/apache/juneau/html/HtmlSerializer.java     |   2 +-
 .../apache/juneau/html/HtmlSerializerSession.java  |   2 +-
 .../java/org/apache/juneau/json/JsonParser.java    |   2 +-
 .../apache/juneau/json/JsonSchemaSerializer.java   |  12 +-
 .../org/apache/juneau/json/JsonSerializer.java     |   6 +-
 .../apache/juneau/msgpack/MsgPackSerializer.java   |   2 +-
 .../org/apache/juneau/parser/ParserListener.java   |   3 +-
 .../org/apache/juneau/parser/ParserSession.java    |   4 +-
 .../serializer/annotation/SerializerConfig.java    |  56 ++++----
 .../java/org/apache/juneau/swap/ObjectSwap.java    |   2 +-
 .../java/org/apache/juneau/uon/UonSerializer.java  |   2 +-
 .../java/org/apache/juneau/xml/XmlSerializer.java  |   2 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  64 ++++-----
 ...=> FINISHED-5-bean-runtime-types-to-commons.md} |   8 +-
 todo/TODO-30-classmeta-to-commons.md               | 155 +++++++++++++++++++++
 todo/TODO.md                                       |   2 -
 30 files changed, 325 insertions(+), 173 deletions(-)

diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanInfo.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanInfo.java
index 7468a6ad7e..d3c144a3d4 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanInfo.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanInfo.java
@@ -83,6 +83,7 @@ public abstract class BeanInfo<T> extends ClassInfoTyped<T> {
         *
         * @return The element type info, or <jk>null</jk>.
         */
+       @SuppressWarnings("java:S1452") // Element type is heterogeneous; 
wildcard is fundamental to the SPI contract.
        public abstract BeanInfo<?> getElementType();
 
        /**
@@ -90,6 +91,7 @@ public abstract class BeanInfo<T> extends ClassInfoTyped<T> {
         *
         * @return The key type info, or <jk>null</jk>.
         */
+       @SuppressWarnings("java:S1452") // Key type is heterogeneous; wildcard 
is fundamental to the SPI contract.
        public abstract BeanInfo<?> getKeyType();
 
        /**
@@ -97,6 +99,7 @@ public abstract class BeanInfo<T> extends ClassInfoTyped<T> {
         *
         * @return The value type info, or <jk>null</jk>.
         */
+       @SuppressWarnings("java:S1452") // Value type is heterogeneous; 
wildcard is fundamental to the SPI contract.
        public abstract BeanInfo<?> getValueType();
 
        /**
@@ -121,6 +124,7 @@ public abstract class BeanInfo<T> extends ClassInfoTyped<T> 
{
         * @return A new instance of the class.
         * @throws ExecutableException If the class could not be instantiated.
         */
+       @Override /* Overridden from ClassInfo to narrow return type to T. */
        public abstract T newInstance() throws ExecutableException;
 
        /**
diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/package-info.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/package-info.java
index 8127dd9577..48a64890b1 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/package-info.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/package-info.java
@@ -25,62 +25,62 @@
  *
  * <h5 class='topic'>Annotations</h5>
  * <ul>
- *   <li>{@link BeanType @BeanType} — marks a class as a bean and configures
+ *   <li>{@link org.apache.juneau.commons.bean.BeanType @BeanType} — marks a 
class as a bean and configures
  *       bean-level options (interface class, stop class, property order, 
etc.).
- *   <li>{@link BeanProp @BeanProp} — configures a bean property
+ *   <li>{@link org.apache.juneau.commons.bean.BeanProp @BeanProp} — 
configures a bean property
  *       (name, getter, setter, etc.).
- *   <li>{@link BeanCtor @BeanCtor} — marks a constructor as the bean
+ *   <li>{@link org.apache.juneau.commons.bean.BeanCtor @BeanCtor} — marks a 
constructor as the bean
  *       constructor and names its arguments.
- *   <li>{@link BeanIgnore @BeanIgnore} — marks a class, method, field, or
+ *   <li>{@link org.apache.juneau.commons.bean.BeanIgnore @BeanIgnore} — marks 
a class, method, field, or
  *       constructor as not a bean / not a bean property.
- *   <li>{@link BeanConfig @BeanConfig} — applies bean-modeling settings
+ *   <li>{@link org.apache.juneau.commons.bean.BeanConfig @BeanConfig} — 
applies bean-modeling settings
  *       declaratively at the config-annotation level.
- *   <li>{@link Name @Name} — alternative property name on a parameter.
+ *   <li>{@link org.apache.juneau.commons.bean.Name @Name} — alternative 
property name on a parameter.
  * </ul>
  *
  * <h5 class='topic'>Runtime types</h5>
  * <ul>
- *   <li>{@link BeanMeta} — metadata describing a bean class
+ *   <li>{@link org.apache.juneau.commons.bean.BeanMeta} — metadata describing 
a bean class
  *       (properties, constructor, type info).
- *   <li>{@link BeanPropertyMeta} — metadata describing a single
+ *   <li>{@link org.apache.juneau.commons.bean.BeanPropertyMeta} — metadata 
describing a single
  *       bean property.
- *   <li>{@link BeanMap} — {@link Map} view of a bean
- *       backed by its {@link BeanMeta}.
- *   <li>{@link BeanMapEntry} — {@link Map.Entry} view of a
+ *   <li>{@link org.apache.juneau.commons.bean.BeanMap} — {@link 
java.util.Map} view of a bean
+ *       backed by its {@link org.apache.juneau.commons.bean.BeanMeta}.
+ *   <li>{@link org.apache.juneau.commons.bean.BeanMapEntry} — {@link 
java.util.Map.Entry} view of a
  *       single bean property.
- *   <li>{@link BeanPropertyValue} — read-side property holder used by
+ *   <li>{@link org.apache.juneau.commons.bean.BeanPropertyValue} — read-side 
property holder used by
  *       consumers that iterate bean properties.
- *   <li>{@link BeanPropertyConsumer} — callback for iterating bean
- *       properties without materializing a {@link BeanMap}.
- *   <li>{@link BeanProxyInvocationHandler} — {@link InvocationHandler}
+ *   <li>{@link org.apache.juneau.commons.bean.BeanPropertyConsumer} — 
callback for iterating bean
+ *       properties without materializing a {@link 
org.apache.juneau.commons.bean.BeanMap}.
+ *   <li>{@link org.apache.juneau.commons.bean.BeanProxyInvocationHandler} — 
{@link java.lang.reflect.InvocationHandler}
  *       that backs interface-only bean proxies.
- *   <li>{@link BeanInterceptor} — pre/post hooks fired around bean
+ *   <li>{@link org.apache.juneau.commons.bean.BeanInterceptor} — pre/post 
hooks fired around bean
  *       property reads / writes.
  * </ul>
  *
  * <h5 class='topic'>SPI seams</h5>
  * <ul>
- *   <li>{@link BeanConfigContext} — immutable POJO carrying all
+ *   <li>{@link org.apache.juneau.commons.bean.BeanConfigContext} — immutable 
POJO carrying all
  *       bean-modeling configuration knobs plus SPI hooks. {@code 
MarshallingContext} (in
  *       {@code juneau-marshall}) installs the marshalling-side resolver / 
initializer / post-processor.
- *   <li>{@link BeanInfo} — abstract type-classification surface;
+ *   <li>{@link org.apache.juneau.commons.bean.BeanInfo} — abstract 
type-classification surface;
  *       {@code ClassMeta} extends it on the marshalling side.
- *   <li>{@link BeanTypeResolver} — resolves {@link Type}
- *       references to {@link BeanInfo} instances.
- *   <li>{@link BeanSession} — per-operation session surface (type
+ *   <li>{@link org.apache.juneau.commons.bean.BeanTypeResolver} — resolves 
{@link java.lang.reflect.Type}
+ *       references to {@link org.apache.juneau.commons.bean.BeanInfo} 
instances.
+ *   <li>{@link org.apache.juneau.commons.bean.BeanSession} — per-operation 
session surface (type
  *       conversion, sub-bean construction, CharSequence parsing).
- *   <li>{@link BeanFilter} — per-class filter surface;
+ *   <li>{@link org.apache.juneau.commons.bean.BeanFilter} — per-class filter 
surface;
  *       {@code MarshalledFilter} implements it.
- *   <li>{@link BeanRegistryLookup} — bean-dictionary lookup surface;
+ *   <li>{@link org.apache.juneau.commons.bean.BeanRegistryLookup} — 
bean-dictionary lookup surface;
  *       {@code BeanRegistry} implements it.
- *   <li>{@link BeanMetaInitializer} — hook that lets marshalling-side
- *       code augment {@link BeanMeta} construction (filter discovery,
+ *   <li>{@link org.apache.juneau.commons.bean.BeanMetaInitializer} — hook 
that lets marshalling-side
+ *       code augment {@link org.apache.juneau.commons.bean.BeanMeta} 
construction (filter discovery,
  *       type-name resolution, bean-registry assembly).
- *   <li>{@link BeanPropertyPostProcessor} — hook that lets marshalling-side
- *       code augment {@link BeanPropertyMeta} construction
+ *   <li>{@link org.apache.juneau.commons.bean.BeanPropertyPostProcessor} — 
hook that lets marshalling-side
+ *       code augment {@link org.apache.juneau.commons.bean.BeanPropertyMeta} 
construction
  *       (swap / surrogate / format annotation processing).
- *   <li>{@link Delegate} — pluggable delegate-bean marker.
- *   <li>{@link PropertyNamer} — pluggable Java-name to bean-property-name
+ *   <li>{@link org.apache.juneau.commons.bean.Delegate} — pluggable 
delegate-bean marker.
+ *   <li>{@link org.apache.juneau.commons.bean.PropertyNamer} — pluggable 
Java-name to bean-property-name
  *       transformer.
  * </ul>
  *
@@ -90,18 +90,14 @@
  * </p>
  * <ul>
  *   <li><b>Not thread-safe (mutable, no internal synchronization):</b>
- *       {@link BeanMap}, {@link BeanProxyInvocationHandler},
- *       {@link BeanConfigContext.Builder}.
+ *       {@link org.apache.juneau.commons.bean.BeanMap}, {@link 
org.apache.juneau.commons.bean.BeanProxyInvocationHandler},
+ *       {@link org.apache.juneau.commons.bean.BeanConfigContext.Builder}.
  *   <li><b>Thread-safe after construction (immutable metadata/value 
holders):</b>
- *       {@link BeanConfigContext}, {@link BeanMeta}, {@link BeanPropertyMeta},
- *       {@link BeanPropertyValue}, {@link BeanMapEntry}.
+ *       {@link org.apache.juneau.commons.bean.BeanConfigContext}, {@link 
org.apache.juneau.commons.bean.BeanMeta}, {@link 
org.apache.juneau.commons.bean.BeanPropertyMeta},
+ *       {@link org.apache.juneau.commons.bean.BeanPropertyValue}, {@link 
org.apache.juneau.commons.bean.BeanMapEntry}.
  *   <li><b>Thread safety depends on implementation/state:</b>
- *       {@link BeanSession}, {@link BeanFilter}, {@link BeanRegistryLookup}, 
{@link BeanMetaInitializer},
- *       {@link BeanPropertyPostProcessor}, {@link BeanPropertyConsumer}, 
{@link BeanInfo}.
+ *       {@link org.apache.juneau.commons.bean.BeanSession}, {@link 
org.apache.juneau.commons.bean.BeanFilter}, {@link 
org.apache.juneau.commons.bean.BeanRegistryLookup}, {@link 
org.apache.juneau.commons.bean.BeanMetaInitializer},
+ *       {@link org.apache.juneau.commons.bean.BeanPropertyPostProcessor}, 
{@link org.apache.juneau.commons.bean.BeanPropertyConsumer}, {@link 
org.apache.juneau.commons.bean.BeanInfo}.
  * </ul>
  */
 package org.apache.juneau.commons.bean;
-
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Type;
-import java.util.Map;
diff --git 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/function/package-info.java
 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/function/package-info.java
index 6d4b98c3a9..aac5f022a5 100644
--- 
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/function/package-info.java
+++ 
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/function/package-info.java
@@ -30,11 +30,11 @@
  *     </p>
  *
  *     <ul class='javatree'>
- *             <li class='jic'>{@link BeanSupplier} - Serialize-side lifecycle 
interface; extends {@link Iterable}
- *             <li class='jic'>{@link BeanConsumer} - Parse-side lifecycle 
interface; extends {@link ThrowingConsumer}
- *             <li class='jic'>{@link BeanChannel} - Round-trip interface; 
extends both {@link BeanSupplier} and {@link BeanConsumer}
- *             <li class='jc'>{@link ListBeanChannel} - Built-in in-memory 
{@link BeanChannel} backed by an {@link ArrayList}
- *             <li class='jic'>{@link BeanFactory} - Universal factory 
interface for DI-framework-managed instantiation
+ *             <li class='jic'>{@link 
org.apache.juneau.commons.function.BeanSupplier} - Serialize-side lifecycle 
interface; extends {@link java.lang.Iterable}
+ *             <li class='jic'>{@link 
org.apache.juneau.commons.function.BeanConsumer} - Parse-side lifecycle 
interface; extends {@link org.apache.juneau.commons.function.ThrowingConsumer}
+ *             <li class='jic'>{@link 
org.apache.juneau.commons.function.BeanChannel} - Round-trip interface; extends 
both {@link org.apache.juneau.commons.function.BeanSupplier} and {@link 
org.apache.juneau.commons.function.BeanConsumer}
+ *             <li class='jc'>{@link 
org.apache.juneau.commons.function.ListBeanChannel} - Built-in in-memory {@link 
org.apache.juneau.commons.function.BeanChannel} backed by an {@link 
java.util.ArrayList}
+ *             <li class='jic'>{@link 
org.apache.juneau.commons.function.BeanFactory} - Universal factory interface 
for DI-framework-managed instantiation
  *     </ul>
  *
  *     <!-- 
============================================================================================================
 -->
@@ -48,10 +48,10 @@
  *
  *     <table class='styled'>
  *             <tr><th>Phase</th><th>BeanSupplier 
(serialization)</th><th>BeanConsumer (parsing)</th></tr>
- *             <tr><td><b>Setup</b></td><td>{@link BeanSupplier#begin()} — 
open cursor, execute query</td><td>{@link BeanConsumer#begin()} — open 
connection, prepare statement</td></tr>
- *             <tr><td><b>Transfer</b></td><td>{@link BeanSupplier#iterator()} 
— yield one bean per call</td><td>{@link BeanConsumer#acceptThrows(Object)} — 
receive one bean per call</td></tr>
- *             <tr><td><b>Error</b></td><td>{@link 
BeanSupplier#onError(Exception)} — rollback / log; rethrow to 
stop</td><td>{@link BeanConsumer#onError(Exception)} — rollback / log; absorb 
to skip-and-continue</td></tr>
- *             <tr><td><b>Cleanup</b></td><td>{@link BeanSupplier#complete()} 
— close cursor, connection</td><td>{@link BeanConsumer#complete()} — final 
commit, close statement</td></tr>
+ *             <tr><td><b>Setup</b></td><td>{@link 
org.apache.juneau.commons.function.BeanSupplier#begin()} — open cursor, execute 
query</td><td>{@link org.apache.juneau.commons.function.BeanConsumer#begin()} — 
open connection, prepare statement</td></tr>
+ *             <tr><td><b>Transfer</b></td><td>{@link 
org.apache.juneau.commons.function.BeanSupplier#iterator()} — yield one bean 
per call</td><td>{@link 
org.apache.juneau.commons.function.BeanConsumer#acceptThrows(Object)} — receive 
one bean per call</td></tr>
+ *             <tr><td><b>Error</b></td><td>{@link 
org.apache.juneau.commons.function.BeanSupplier#onError(Exception)} — rollback 
/ log; rethrow to stop</td><td>{@link 
org.apache.juneau.commons.function.BeanConsumer#onError(Exception)} — rollback 
/ log; absorb to skip-and-continue</td></tr>
+ *             <tr><td><b>Cleanup</b></td><td>{@link 
org.apache.juneau.commons.function.BeanSupplier#complete()} — close cursor, 
connection</td><td>{@link 
org.apache.juneau.commons.function.BeanConsumer#complete()} — final commit, 
close statement</td></tr>
  *     </table>
  *
  *     <p>
@@ -69,7 +69,7 @@
  *     <p>
  *     The following example streams a large {@code Employee} table directly 
from the database to the
  *     HTTP response as a JSON array, without loading any rows into memory. A 
Spring-injected
- *     {@code DataSource} is supplied via a factory registered with {@link 
BeanFactory}.
+ *     {@code DataSource} is supplied via a factory registered with {@link 
org.apache.juneau.commons.function.BeanFactory}.
  *     </p>
  *
  *     <h5 class='figure'>Bean class with factory annotation</h5>
@@ -274,9 +274,9 @@
  *     <div class='topic'>
  *
  *     <p>
- *     {@link BeanChannel} extends both
- *     {@link BeanSupplier} and
- *     {@link BeanConsumer}, allowing the same property to drive
+ *     {@link org.apache.juneau.commons.function.BeanChannel} extends both
+ *     {@link org.apache.juneau.commons.function.BeanSupplier} and
+ *     {@link org.apache.juneau.commons.function.BeanConsumer}, allowing the 
same property to drive
  *     both serialization and parsing. The implementation itself determines 
direction at runtime.
  *     </p>
  *
@@ -427,7 +427,7 @@
  *     With this wiring in place, any class annotated with
  *     {@code @BeanType(factory=EmployeeSupplier.Factory.class)} is 
automatically instantiated by
  *     retrieving the factory from the Spring {@code ApplicationContext} and 
calling
- *     {@link BeanFactory#create()}. No manual construction or
+ *     {@link org.apache.juneau.commons.function.BeanFactory#create()}. No 
manual construction or
  *     injection is needed in individual REST methods.
  *     </p>
  *
@@ -445,7 +445,7 @@
  *             <tr>
  *                     <td>{@code @BeanType(factory=X.class)}</td>
  *                     <td>Class</td>
- *                     <td>Specifies the {@link BeanFactory} class used to 
instantiate this type during parsing. The factory is resolved from the {@code 
BeanStore}.</td>
+ *                     <td>Specifies the {@link 
org.apache.juneau.commons.function.BeanFactory} class used to instantiate this 
type during parsing. The factory is resolved from the {@code BeanStore}.</td>
  *             </tr>
  *             <tr>
  *                     <td>{@code @BeanProp(factory=X.class)}</td>
@@ -469,14 +469,14 @@
  *     <div class='topic'>
  *
  *     <p>
- *     {@link Supplier Supplier&lt;T&gt;} (the standard JDK interface) is 
treated as a
+ *     {@link java.util.function.Supplier Supplier&lt;T&gt;} (the standard JDK 
interface) is treated as a
  *     single-value lazy wrapper. Serializers call {@code get()} and serialize 
the result
  *     transparently. Nested {@code Supplier} chains are unwrapped recursively 
up to a depth of 10.
  *     </p>
  *
  *     <p>
- *     Note: {@link BeanSupplier} is <em>not</em> unwrapped — it
- *     is treated as an {@link Iterable} sequence, not a single-value wrapper.
+ *     Note: {@link org.apache.juneau.commons.function.BeanSupplier} is 
<em>not</em> unwrapped — it
+ *     is treated as an {@link java.lang.Iterable} sequence, not a 
single-value wrapper.
  *     </p>
  *
  *     <p class='bjava'>
@@ -494,5 +494,4 @@
  * </div>
  */
 package org.apache.juneau.commons.function;
-import java.util.ArrayList;
-import java.util.function.Supplier;
\ No newline at end of file
+
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 758424afae..9a11f08a3d 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -201,7 +201,7 @@ public class RdfSerializer extends WriterSerializer 
implements RdfMetaProvider {
                 * through reflection.
                 *
                 * <p>
-                * When present, this value overrides the {@link 
Serializer.Builder#addBeanTypes()} setting and is
+                * When present, this value overrides the {@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} setting and is
                 * provided to customize the behavior of specific serializers 
in a {@link SerializerSet}.
                 *
                 * @return This object.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledFilter.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledFilter.java
index b07f4bb5ff..ea1312ce8f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledFilter.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledFilter.java
@@ -146,6 +146,7 @@ public class MarshalledFilter implements BeanFilter {
                 * @param annotations The annotations to apply.
                 * @return This object.
                 */
+               @SuppressWarnings("java:S3776")
                public Builder applyBeanTypeAnnotations(List<BeanType> 
annotations) {
 
                        annotations.forEach(x -> {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledPropertyPostProcessor.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledPropertyPostProcessor.java
index 84e5e42b3c..2db34bf1e1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledPropertyPostProcessor.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshalledPropertyPostProcessor.java
@@ -35,7 +35,7 @@ import org.apache.juneau.swaps.*;
 
 /**
  * Marshalling-side post-processor that applies {@link MarshalledProp 
@MarshalledProp} and {@link Swap @Swap}
- * annotation effects to a {@link BeanPropertyMeta.Builder} after {@link 
BeanPropertyMeta.Builder#validate validate()}
+ * annotation effects to a {@link 
org.apache.juneau.commons.bean.BeanPropertyMeta.Builder} after {@link 
org.apache.juneau.commons.bean.BeanPropertyMeta.Builder#validate validate()}
  * runs successfully.
  *
  * <p>
@@ -147,7 +147,7 @@ final class MarshalledPropertyPostProcessor implements 
BeanPropertyPostProcessor
        }
 
        /**
-        * Installs swap-aware read/write transforms on a {@link 
BeanPropertyMeta.Builder} after validation.
+        * Installs swap-aware read/write transforms on a {@link 
org.apache.juneau.commons.bean.BeanPropertyMeta.Builder} after validation.
         *
         * <p>
         * After {@link BeanPropertyMeta.Builder#validate validate()} succeeds, 
the builder's {@code swap} and
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshallingContextable.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshallingContextable.java
index e7ac446f90..67b2c926c3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshallingContextable.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MarshallingContextable.java
@@ -17,7 +17,6 @@
 package org.apache.juneau;
 
 import org.apache.juneau.commons.http.MediaType;
-import org.apache.juneau.jsonschema.JsonSchemaGenerator;
 import static org.apache.juneau.commons.utils.AssertionUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
@@ -267,7 +266,7 @@ public abstract class MarshallingContextable extends 
Context {
                 *
                 * <p>
                 * Used when sharing bean context builders across multiple 
context objects.
-                * For example, {@link JsonSchemaGenerator.Builder} uses this 
to apply common bean settings with the JSON
+                * For example, {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator.Builder} uses this to apply 
common bean settings with the JSON
                 * serializer and parser.
                 *
                 * @param value The new value for this setting.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
index d8a966280f..3f2b9c1d81 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigAnnotation.java
@@ -28,7 +28,7 @@ import org.apache.juneau.svl.*;
  *
  * <p>
  * Houses the {@link Applier} that pushes {@link BeanConfig @BeanConfig} 
attributes into a
- * {@link MarshallingContext.Builder}. The annotation itself lives in
+ * {@link org.apache.juneau.MarshallingContext.Builder}. The annotation itself 
lives in
  * {@code juneau-commons} (in {@link BeanConfig}), but
  * the application logic lives here in {@code juneau-marshall} because it 
depends on
  * marshall-layer types ({@link AnnotationApplier}, {@link MarshallingContext} 
builder APIs,
@@ -48,7 +48,7 @@ public class BeanConfigAnnotation {
        private BeanConfigAnnotation() {}
 
        /**
-        * Applies {@link BeanConfig} annotations to a {@link 
MarshallingContext.Builder}.
+        * Applies {@link BeanConfig} annotations to a {@link 
org.apache.juneau.MarshallingContext.Builder}.
         */
        public static class Applier extends 
AnnotationApplier<BeanConfig,MarshallingContext.Builder> {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Marshalled.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Marshalled.java
index b8a916e5d8..80a4b919d1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Marshalled.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Marshalled.java
@@ -85,7 +85,7 @@ public @interface Marshalled {
         *      <li class='ja'>{@link MarshalledProp#dictionary()}
         *      <li class='ja'>{@link MarshalledConfig#dictionary()}
         *      <li class='ja'>{@link MarshalledConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#beanDictionary(Class...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#beanDictionary(Class...)}
         * </ul>
         *
         * @return The annotation value.
@@ -183,7 +183,7 @@ public @interface Marshalled {
         * </p>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#beanDictionary(Class...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#beanDictionary(Class...)}
         * </ul>
         *
         * @return The annotation value.
@@ -208,7 +208,7 @@ public @interface Marshalled {
         *
         * <h5 class='section'>See Also:</h5><ul>
         *      <li class='ja'>{@link MarshalledConfig#typePropertyName()}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#typePropertyName(String)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#typePropertyName(String)}
         * </ul>
         *
         * @return The annotation value.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
index 1a7d64d167..f939b525d8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
@@ -20,7 +20,6 @@ import static 
org.apache.juneau.commons.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
 
-import org.apache.juneau.MarshallingContext;
 import org.apache.juneau.commons.annotation.*;
 import org.apache.juneau.commons.bean.*;
 
@@ -39,7 +38,7 @@ public class MarshalledAnnotation {
         * Builder class.
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#annotations(Annotation...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#annotations(Annotation...)}
         * </ul>
         */
        public static class Builder extends AnnotationObject.Builder {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledConfig.java
index cfa67894b2..ec490f3386 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledConfig.java
@@ -59,7 +59,7 @@ public @interface MarshalledConfig {
         *              When bean getters throws exceptions, the exception 
includes the object stack information
         *              in order to determine how that method was invoked.
         *      <li>
-        *              Enables {@link 
MarshallingTraverseContext.Builder#detectRecursions()}.
+        *              Enables {@link 
org.apache.juneau.MarshallingTraverseContext.Builder#detectRecursions()}.
         * </ul>
         *
         * <p>
@@ -81,7 +81,7 @@ public @interface MarshalledConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Context.Builder#debug()}
+        *      <li class='jm'>{@link org.apache.juneau.Context.Builder#debug()}
         * </ul>
         *
         * @return The annotation value.
@@ -108,7 +108,7 @@ public @interface MarshalledConfig {
         *      <li class='ja'>{@link Marshalled#dictionary()}
         *      <li class='ja'>{@link MarshalledProp#dictionary()}
         *      <li class='ja'>{@link MarshalledConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#beanDictionary(Class...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#beanDictionary(Class...)}
         *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/BeanDictionaryBasics";>Bean 
Dictionary Basics</a>
         * </ul>
         *
@@ -126,7 +126,7 @@ public @interface MarshalledConfig {
         *      <li class='ja'>{@link Marshalled#dictionary()}
         *      <li class='ja'>{@link MarshalledProp#dictionary()}
         *      <li class='ja'>{@link MarshalledConfig#dictionary()}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#beanDictionary(Class...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#beanDictionary(Class...)}
         * </ul>
         *
         * @return The annotation value.
@@ -145,8 +145,8 @@ public @interface MarshalledConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link MarshallingSession.Builder#locale(Locale)}
-        *      <li class='jm'>{@link MarshallingContext.Builder#locale(Locale)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingSession.Builder#locale(Locale)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#locale(Locale)}
         * </ul>
         *
         * @return The annotation value.
@@ -165,8 +165,8 @@ public @interface MarshalledConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingSession.Builder#mediaType(MediaType)}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#mediaType(MediaType)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingSession.Builder#mediaType(MediaType)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#mediaType(MediaType)}
         * </ul>
         *
         * @return The annotation value.
@@ -199,7 +199,7 @@ public @interface MarshalledConfig {
         * {@link ObjectSwap#forMediaTypes()} or {@link Swap#mediaTypes() 
@Swap(mediaTypes)} are used to come up with the best match.
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#swaps(Class...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#swaps(Class...)}
         *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/SwapBasics";>Swap Basics</a>
         *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/PerMediaTypeSwaps";>Per-media-type 
Swaps</a>
         *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/OneWaySwaps";>One-way Swaps</a>
@@ -219,7 +219,7 @@ public @interface MarshalledConfig {
         * Same as {@link #swaps()} but replaces any existing value.
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#swaps(Class...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#swaps(Class...)}
         * </ul>
         *
         * @return The annotation value.
@@ -238,8 +238,8 @@ public @interface MarshalledConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingSession.Builder#timeZone(TimeZone)}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#timeZone(TimeZone)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingSession.Builder#timeZone(TimeZone)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#timeZone(TimeZone)}
         * </ul>
         *
         * @return The annotation value.
@@ -262,7 +262,7 @@ public @interface MarshalledConfig {
         *
         * <h5 class='section'>See Also:</h5><ul>
         *      <li class='ja'>{@link Marshalled#typePropertyName()}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#typePropertyName(String)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#typePropertyName(String)}
         * </ul>
         *
         * @return The annotation value.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledProp.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledProp.java
index 5ba4bcb266..81021a8900 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledProp.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledProp.java
@@ -20,7 +20,6 @@ import static java.lang.annotation.ElementType.*;
 import static java.lang.annotation.RetentionPolicy.*;
 
 import java.lang.annotation.*;
-import org.apache.juneau.MarshallingContext;
 import org.apache.juneau.MarshallingSession;
 import org.apache.juneau.commons.bean.BeanProp;
 
@@ -71,7 +70,7 @@ public @interface MarshalledProp {
         *      <li class='ja'>{@link Marshalled#dictionary()}
         *      <li class='ja'>{@link MarshalledConfig#dictionary()}
         *      <li class='ja'>{@link MarshalledConfig#dictionary_replace()}
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#beanDictionary(Class...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#beanDictionary(Class...)}
         * </ul>
         *
         * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledPropAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledPropAnnotation.java
index 54396439de..c181a68af3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledPropAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledPropAnnotation.java
@@ -20,7 +20,6 @@ import static 
org.apache.juneau.commons.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
 
-import org.apache.juneau.MarshallingContext;
 import org.apache.juneau.commons.annotation.*;
 
 /**
@@ -38,7 +37,7 @@ public class MarshalledPropAnnotation {
         * Builder class.
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingContext.Builder#annotations(Annotation...)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#annotations(Annotation...)}
         * </ul>
         */
        public static class Builder extends AnnotationObject.Builder {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonSerializer.java
index 5d46d24f8d..764c79c2c8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/hjson/HjsonSerializer.java
@@ -68,7 +68,7 @@ import org.apache.juneau.swap.ObjectSwap;
  * The types above are considered "Hjson-primitive" object types.
  * Any non-Hjson-primitive object types are transformed into Hjson-primitive 
object types through
  * {@link ObjectSwap ObjectSwaps} associated through the
- * {@link MarshallingContext.Builder#swaps(Class...) 
MarshallingContext.Builder.swaps(Class...)} method.
+ * {@link org.apache.juneau.MarshallingContext.Builder#swaps(Class...) 
MarshallingContext.Builder.swaps(Class...)} method.
  * Several default transforms are provided for transforming Dates, Enums, 
Iterators, etc.
  *
  * <h5 class='section'>Example:</h5>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 94a8e96d24..a30c065fb0 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -251,7 +251,7 @@ public class HtmlSerializer extends XmlSerializer 
implements HtmlMetaProvider {
                 * through reflection.
                 *
                 * <p>
-                * When present, this value overrides the {@link 
Serializer.Builder#addBeanTypes()} setting and is
+                * When present, this value overrides the {@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} setting and is
                 * provided to customize the behavior of specific serializers 
in a {@link SerializerSet}.
                 *
                 * @return This object.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index 5312ddfa74..7e2f064c60 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -926,7 +926,7 @@ public class HtmlSerializerSession extends 
XmlSerializerSession {
         * @param eType The expected type of the object if this is a bean 
property.
         * @param name
         *      The attribute name of this object if this object was a field in 
a JSON object (i.e. key of a
-        *      {@link Map.Entry} or property name of a bean).
+        *      {@link java.util.Map.Entry} or property name of a bean).
         * @param pMeta The bean property being serialized, or <jk>null</jk> if 
we're not serializing a bean property.
         * @param xIndent The current indentation value.
         * @param isRoot <jk>true</jk> if this is the root element of the 
document.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
index bcfc140f36..35a9783377 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
@@ -64,7 +64,7 @@ import org.apache.juneau.commons.bean.BeanPropertyMeta;
  *             JSON objects (<js>"{...}"</js>) are converted to {@link JsonMap 
JsonMaps}.
  *             <b>Note:</b>  If a <code><xa>_type</xa>=<xs>'xxx'</xs></code> 
attribute is specified on the object, then an
  *             attempt is made to convert the object to an instance of the 
specified Java bean class.
- *             See the {@link 
MarshallingContext.Builder#typePropertyName(String)} setting for more 
information about parsing
+ *             See the {@link 
org.apache.juneau.MarshallingContext.Builder#typePropertyName(String)} setting 
for more information about parsing
  *             beans from JSON.
  *     <li>
  *             JSON arrays (<js>"[...]"</js>) are converted to {@link JsonList 
JsonLists}.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index 2579249dd2..c629161994 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -138,7 +138,7 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
                 * The description is the result of calling {@link 
ClassMeta#getName()}.
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
JsonSchemaGenerator.Builder#addDescriptionsTo(TypeCategory...)}
+                *      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator.Builder#addDescriptionsTo(TypeCategory...)}
                 * </ul>
                 *
                 * @param values
@@ -165,7 +165,7 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
                 * </ul>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
JsonSchemaGenerator.Builder#addExamplesTo(TypeCategory...)}
+                *      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator.Builder#addExamplesTo(TypeCategory...)}
                 * </ul>
                 *
                 * @param values
@@ -197,7 +197,7 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
                 * Identifies whether nested descriptions are allowed in schema 
definitions.
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
JsonSchemaGenerator.Builder#allowNestedDescriptions()}
+                *      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator.Builder#allowNestedDescriptions()}
                 * </ul>
                 *
                 * @return This object.
@@ -214,7 +214,7 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
                 * Identifies whether nested examples are allowed in schema 
definitions.
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
JsonSchemaGenerator.Builder#allowNestedExamples()}
+                *      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator.Builder#allowNestedExamples()}
                 * </ul>
                 *
                 * @return This object.
@@ -280,10 +280,10 @@ public class JsonSchemaSerializer extends JsonSerializer 
implements JsonSchemaMe
                 * <p>
                 * Used primarily for defining common definition sections for 
beans in Swagger JSON.
                 * <p>
-                * This setting is ignored if {@link 
JsonSchemaGenerator.Builder#useBeanDefs()} is not enabled.
+                * This setting is ignored if {@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator.Builder#useBeanDefs()} is not 
enabled.
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
JsonSchemaGenerator.Builder#beanDefMapper(Class)}
+                *      <li class='jm'>{@link 
org.apache.juneau.jsonschema.JsonSchemaGenerator.Builder#beanDefMapper(Class)}
                 * </ul>
                 *
                 * @param value
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 40dccb949a..f262816c6f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -75,7 +75,7 @@ import org.apache.juneau.commons.bean.BeanPropertyMeta;
  * The types above are considered "JSON-primitive" object types.
  * Any non-JSON-primitive object types are transformed into JSON-primitive 
object types through
  * {@link ObjectSwap ObjectSwaps} associated through the
- * {@link MarshallingContext.Builder#swaps(Class...)} method.
+ * {@link org.apache.juneau.MarshallingContext.Builder#swaps(Class...)} method.
  * Several default transforms are provided for transforming Dates, Enums, 
Iterators, etc...
  *
  * <p>
@@ -90,7 +90,7 @@ import org.apache.juneau.commons.bean.BeanPropertyMeta;
  *     <li>
  *             {@link Json5Serializer} - Default serializer, single quotes, 
simple mode.
  *     <li>
- *             {@link Json5Serializer.Readable} - Default serializer, single 
quotes, simple mode, with whitespace.
+ *             {@link org.apache.juneau.json5.Json5Serializer.Readable} - 
Default serializer, single quotes, simple mode, with whitespace.
  * </ul>
  *
  * <h5 class='section'>Example:</h5>
@@ -210,7 +210,7 @@ public class JsonSerializer extends WriterSerializer 
implements JsonMetaProvider
                 * through reflection.
                 *
                 * <p>
-                * When present, this value overrides the {@link 
Serializer.Builder#addBeanTypes()} setting and is
+                * When present, this value overrides the {@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} setting and is
                 * provided to customize the behavior of specific serializers 
in a {@link SerializerSet}.
                 *
                 * @return This object.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index dfb5f65b9c..715d8d95ab 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -157,7 +157,7 @@ public class MsgPackSerializer extends 
OutputStreamSerializer implements MsgPack
                 * through reflection.
                 *
                 * <p>
-                * When present, this value overrides the {@link 
Serializer.Builder#addBeanTypes()} setting and is
+                * When present, this value overrides the {@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} setting and is
                 * provided to customize the behavior of specific serializers 
in a {@link SerializerSet}.
                 *
                 * @return This object.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
index 69ec5e8209..39e8abdb79 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
@@ -19,7 +19,6 @@ package org.apache.juneau.parser;
 import static org.apache.juneau.commons.utils.ThrowableUtils.*;
 import static org.apache.juneau.commons.utils.Utils.*;
 
-import org.apache.juneau.MarshallingContext;
 import org.apache.juneau.commons.bean.BeanPropertyMeta;
 
 /**
@@ -63,7 +62,7 @@ public class ParserListener {
         * Gets called when an unknown bean property is detected in a document.
         *
         * <p>
-        * This method only gets called if {@link 
MarshallingContext.Builder#ignoreUnknownBeanProperties()} setting is 
<jk>true</jk>.
+        * This method only gets called if {@link 
org.apache.juneau.MarshallingContext.Builder#ignoreUnknownBeanProperties()} 
setting is <jk>true</jk>.
         * Otherwise, the parser will throw a {@link ParseException}.
         *
         * @param <T> The class type of the bean.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
index fa6ffa7ac3..b3e9e62836 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
@@ -334,7 +334,7 @@ public class ParserSession extends MarshallingSession {
         *
         * <p>
         * This always returns a value for input of type {@link CharSequence}.
-        * <br>For other input types, use {@link Context.Builder#debug()} 
setting to enable caching to a string
+        * <br>For other input types, use {@link 
org.apache.juneau.Context.Builder#debug()} setting to enable caching to a string
         * before parsing so that this method returns the input.
         *
         * @return The input as a string, or <jk>null</jk> if no pipe has been 
created or we're reading from an uncached reader or input stream source.
@@ -1212,7 +1212,7 @@ public class ParserSession extends MarshallingSession {
         * @param beanMap The bean that doesn't have the expected property.
         * @param value The parsed value.
         * @throws ParseException
-        *      Automatically thrown if {@link 
MarshallingContext.Builder#ignoreUnknownBeanProperties()} setting on this 
parser is
+        *      Automatically thrown if {@link 
org.apache.juneau.MarshallingContext.Builder#ignoreUnknownBeanProperties()} 
setting on this parser is
         *      <jk>false</jk>
         * @param <T> The class type of the bean map that doesn't have the 
expected property.
         */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
index 2db744170a..287cea6073 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
@@ -60,8 +60,8 @@ public @interface SerializerConfig {
         * <p>
         * Note the differences between the following settings:
         * <ul>
-        *      <li class='jm'>{@link Serializer.Builder#addRootType()} - 
Affects whether <js>'_type'</js> is added to root node.
-        *      <li class='jm'>{@link Serializer.Builder#addBeanTypes()} - 
Affects whether <js>'_type'</js> is added to any nodes.
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addRootType()} - Affects 
whether <js>'_type'</js> is added to root node.
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} - Affects 
whether <js>'_type'</js> is added to any nodes.
         * </ul>
         *
         * <ul class='values'>
@@ -75,7 +75,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#addBeanTypes()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()}
         * </ul>
         *
         * @return The annotation value.
@@ -96,8 +96,8 @@ public @interface SerializerConfig {
         * <p>
         * Note the differences between the following settings:
         * <ul>
-        *      <li class='jm'>{@link Serializer.Builder#addRootType()} - 
Affects whether <js>'_type'</js> is added to root node.
-        *      <li class='jm'>{@link Serializer.Builder#addBeanTypes()} - 
Affects whether <js>'_type'</js> is added to any nodes.
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addRootType()} - Affects 
whether <js>'_type'</js> is added to root node.
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} - Affects 
whether <js>'_type'</js> is added to any nodes.
         * </ul>
         *
         * <ul class='values'>
@@ -111,7 +111,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#addRootType()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addRootType()}
         * </ul>
         *
         * @return The annotation value.
@@ -137,7 +137,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
OutputStreamSerializer.Builder#binaryFormat(BinaryFormat)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.OutputStreamSerializer.Builder#binaryFormat(BinaryFormat)}
         * </ul>
         *
         * @return The annotation value.
@@ -156,7 +156,7 @@ public @interface SerializerConfig {
         * <br>These show up as {@link ParseException ParseExceptions} with the 
message <js>"Depth too deep.  Stack overflow occurred."</js>.
         *
         * <p>
-        * The behavior when recursions are detected depends on the value for 
{@link MarshallingTraverseContext.Builder#ignoreRecursions()}.
+        * The behavior when recursions are detected depends on the value for 
{@link org.apache.juneau.MarshallingTraverseContext.Builder#ignoreRecursions()}.
         *
         * <p>
         * For example, if a model contains the links A-&gt;B-&gt;C-&gt;A, then 
the JSON generated will look like
@@ -179,7 +179,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#detectRecursions()}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#detectRecursions()}
         * </ul>
         *
         * @return The annotation value.
@@ -209,7 +209,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
WriterSerializer.Builder#fileCharset(java.nio.charset.Charset)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#fileCharset(java.nio.charset.Charset)}
         * </ul>
         *
         * @return The annotation value.
@@ -220,7 +220,7 @@ public @interface SerializerConfig {
         * Ignore recursion errors.
         *
         * <p>
-        * Used in conjunction with {@link 
MarshallingTraverseContext.Builder#detectRecursions()}.
+        * Used in conjunction with {@link 
org.apache.juneau.MarshallingTraverseContext.Builder#detectRecursions()}.
         * <br>Setting is ignored if <jsf>BEANTRAVERSE_detectRecursions</jsf> 
is <js>"false"</js>.
         *
         * <p>
@@ -238,7 +238,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#ignoreRecursions()}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#ignoreRecursions()}
         * </ul>
         *
         * @return The annotation value.
@@ -262,7 +262,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#initialDepth(int)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#initialDepth(int)}
         * </ul>
         *
         * @return The annotation value.
@@ -293,7 +293,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#keepNullProperties()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#keepNullProperties()}
         * </ul>
         *
         * @return The annotation value.
@@ -307,7 +307,7 @@ public @interface SerializerConfig {
         * Class used to listen for errors and warnings that occur during 
serialization.
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#listener(Class)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#listener(Class)}
         * </ul>
         *
         * @return The annotation value.
@@ -331,7 +331,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#maxDepth(int)}
+        *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#maxDepth(int)}
         * </ul>
         *
         * @return The annotation value.
@@ -356,7 +356,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link WriterSerializer.Builder#maxIndent(int)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#maxIndent(int)}
         * </ul>
         *
         * @return The annotation value.
@@ -379,7 +379,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link WriterSerializer.Builder#quoteChar(char)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#quoteChar(char)}
         * </ul>
         *
         * @return The annotation value.
@@ -416,7 +416,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#sortCollections()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#sortCollections()}
         * </ul>
         *
         * @return The annotation value.
@@ -443,7 +443,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#sortMaps()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#sortMaps()}
         * </ul>
         *
         * @return The annotation value.
@@ -471,7 +471,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
WriterSerializer.Builder#streamCharset(Charset)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#streamCharset(Charset)}
         * </ul>
         *
         * @return The annotation value.
@@ -504,7 +504,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#trimEmptyCollections()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#trimEmptyCollections()}
         * </ul>
         *
         * @return The annotation value.
@@ -535,7 +535,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#trimEmptyMaps()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#trimEmptyMaps()}
         * </ul>
         *
         * @return The annotation value.
@@ -559,7 +559,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#trimStrings()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#trimStrings()}
         * </ul>
         *
         * @return The annotation value.
@@ -581,7 +581,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link Serializer.Builder#uriContext(UriContext)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriContext(UriContext)}
         * </ul>
         *
         * @return The annotation value.
@@ -610,7 +610,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
Serializer.Builder#uriRelativity(UriRelativity)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriRelativity(UriRelativity)}
         *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/MarshallingUris";>URIs</a>
         * </ul>
         *
@@ -641,7 +641,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link 
Serializer.Builder#uriResolution(UriResolution)}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriResolution(UriResolution)}
         *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/MarshallingUris";>URIs</a>
         * </ul>
         *
@@ -666,7 +666,7 @@ public @interface SerializerConfig {
         * </ul>
         *
         * <h5 class='section'>See Also:</h5><ul>
-        *      <li class='jm'>{@link WriterSerializer.Builder#useWhitespace()}
+        *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#useWhitespace()}
         * </ul>
         *
         * @return The annotation value.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
index ef93a5c6bb..3b91be30a5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/ObjectSwap.java
@@ -50,7 +50,7 @@ import org.apache.juneau.serializer.*;
  * <c>ObjectSwaps</c> are associated with serializers and parsers through the 
following:
  * <ul class='javatree'>
  *     <li class='ja'>{@link Swap @Swap}
- *     <li class='jm'>{@link MarshallingContext.Builder#swaps(Class...)}
+ *     <li class='jm'>{@link 
org.apache.juneau.MarshallingContext.Builder#swaps(Class...)}
  * </ul>
  *
  * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
index 65e6aa226d..793a0e4e3d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
@@ -242,7 +242,7 @@ public class UonSerializer extends WriterSerializer 
implements HttpPartSerialize
                 * through reflection.
                 *
                 * <p>
-                * When present, this value overrides the {@link 
Serializer.Builder#addBeanTypes()} setting and is
+                * When present, this value overrides the {@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} setting and is
                 * provided to customize the behavior of specific serializers 
in a {@link SerializerSet}.
                 *
                 * @return This object.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index 6726d687b4..8cfcd58c64 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -250,7 +250,7 @@ public class XmlSerializer extends WriterSerializer 
implements XmlMetaProvider {
                 * through reflection.
                 *
                 * <p>
-                * When present, this value overrides the {@link 
Serializer.Builder#addBeanTypes()} setting and is
+                * When present, this value overrides the {@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} setting and is
                 * provided to customize the behavior of specific serializers 
in a {@link SerializerSet}.
                 *
                 * @return This object.
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 623605ac48..ee0c09b920 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -909,7 +909,7 @@ import org.apache.juneau.xml.*;
  * <p>
  * Enabling debug mode has the following effects:
  * <ul>
- *     <li>{@link Context.Builder#debug()} is enabled.
+ *     <li>{@link org.apache.juneau.Context.Builder#debug()} is enabled.
  *     <li>{@link Builder#detectLeaks()} is enabled.
  *     <li>{@link Builder#logToConsole()} is called.
  * </ul>
@@ -1208,7 +1208,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link Serializer.Builder#addBeanTypes()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()}
                 * </ul>
                 *
                 * @return This object.
@@ -1329,7 +1329,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link Serializer.Builder#addRootType()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#addRootType()}
                 * </ul>
                 *
                 * @return This object.
@@ -1582,9 +1582,9 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 *      <li class='note'>
                 *              The {@link RestClient#run(HttpHost, 
HttpRequest, HttpContext)} method can also be overridden to produce the same 
results.
                 *      <li class='note'>
-                *              Use {@link BeanInstantiator.Builder} 
<c>impl(Object)</c> to specify an already instantiated instance.
+                *              Use {@link 
org.apache.juneau.commons.inject.BeanInstantiator.Builder} <c>impl(Object)</c> 
to specify an already instantiated instance.
                 *      <li class='note'>
-                *              Use {@link BeanInstantiator.Builder} 
<c>type(Class)</c> to specify a subtype to instantiate.
+                *              Use {@link 
org.apache.juneau.commons.inject.BeanInstantiator.Builder} <c>type(Class)</c> 
to specify a subtype to instantiate.
                 *              <br>Subclass must have a public constructor 
that takes in any args available
                 *              in the bean store of this builder (including 
{@link RestClient} itself).
                 * </ul>
@@ -1807,7 +1807,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Parser.Builder#debugOutputLines(int)}
+                *      <li class='jm'>{@link 
org.apache.juneau.parser.Parser.Builder#debugOutputLines(int)}
                 * </ul>
                 *
                 * @param value
@@ -1930,7 +1930,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * when the <c>finalize</c> methods are invoked.
                 *
                 * <p>
-                * Automatically enabled with {@link Context.Builder#debug()}.
+                * Automatically enabled with {@link 
org.apache.juneau.Context.Builder#debug()}.
                 *
                 * <h5 class='section'>Example:</h5>
                 * <p class='bjava'>
@@ -1994,7 +1994,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#detectRecursions()}
+                *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#detectRecursions()}
                 * </ul>
                 *
                 * @return This object.
@@ -2912,7 +2912,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#ignoreRecursions()}
+                *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#ignoreRecursions()}
                 * </ul>
                 *
                 * @return This object.
@@ -2983,7 +2983,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#initialDepth(int)}
+                *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#initialDepth(int)}
                 * </ul>
                 *
                 * @param value
@@ -3329,7 +3329,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Serializer.Builder#keepNullProperties()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#keepNullProperties()}
                 * </ul>
                 *
                 * @return This object.
@@ -3572,7 +3572,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
MarshallingTraverseContext.Builder#maxDepth(int)}
+                *      <li class='jm'>{@link 
org.apache.juneau.MarshallingTraverseContext.Builder#maxDepth(int)}
                 * </ul>
                 *
                 * @param value
@@ -3607,7 +3607,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
WriterSerializer.Builder#maxIndent(int)}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#maxIndent(int)}
                 * </ul>
                 *
                 * @param value
@@ -3793,8 +3793,8 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </ul>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
OpenApiSerializer.Builder#collectionFormat(HttpPartCollectionFormat)}
-                *      <li class='jm'>{@link 
OpenApiParser.Builder#collectionFormat(HttpPartCollectionFormat)}
+                *      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiSerializer.Builder#collectionFormat(HttpPartCollectionFormat)}
+                *      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiParser.Builder#collectionFormat(HttpPartCollectionFormat)}
                 * </ul>
                 *
                 * @param value
@@ -3852,8 +3852,8 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </ul>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
OpenApiSerializer.Builder#format(HttpPartFormat)}
-                *      <li class='jm'>{@link 
OpenApiParser.Builder#format(HttpPartFormat)}
+                *      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiSerializer.Builder#format(HttpPartFormat)}
+                *      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiParser.Builder#format(HttpPartFormat)}
                 * </ul>
                 *
                 * @param value
@@ -3954,7 +3954,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </ul>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
UonSerializer.Builder#paramFormat(ParamFormat)}
+                *      <li class='jm'>{@link 
org.apache.juneau.uon.UonSerializer.Builder#paramFormat(ParamFormat)}
                 * </ul>
                 *
                 * @param value The new value for this property.
@@ -3996,7 +3996,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
UonSerializer.Builder#paramFormatPlain()}
+                *      <li class='jm'>{@link 
org.apache.juneau.uon.UonSerializer.Builder#paramFormatPlain()}
                 * </ul>
                 *
                 * @return This object.
@@ -4808,7 +4808,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
WriterSerializer.Builder#quoteChar(char)}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#quoteChar(char)}
                 * </ul>
                 *
                 * @param value
@@ -5297,7 +5297,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Serializer.Builder#sortCollections()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#sortCollections()}
                 * </ul>
                 *
                 * @return This object.
@@ -5335,7 +5335,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link Serializer.Builder#sortMaps()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#sortMaps()}
                 * </ul>
                 *
                 * @return This object.
@@ -5388,7 +5388,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
WriterSerializer.Builder#quoteChar(char)}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#quoteChar(char)}
                 * </ul>
                 *
                 * @return This object.
@@ -5535,7 +5535,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Serializer.Builder#trimEmptyCollections()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#trimEmptyCollections()}
                 * </ul>
                 *
                 * @return This object.
@@ -5579,7 +5579,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Serializer.Builder#trimEmptyMaps()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#trimEmptyMaps()}
                 * </ul>
                 *
                 * @return This object.
@@ -5616,7 +5616,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link Parser.Builder#trimStrings()}
+                *      <li class='jm'>{@link 
org.apache.juneau.parser.Parser.Builder#trimStrings()}
                 * </ul>
                 *
                 * @return This object.
@@ -5651,7 +5651,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link Serializer.Builder#trimStrings()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#trimStrings()}
                 * </ul>
                 *
                 * @return This object.
@@ -5851,7 +5851,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Serializer.Builder#uriContext(UriContext)}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriContext(UriContext)}
                 *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/MarshallingUris";>URIs</a>
                 * </ul>
                 *
@@ -5886,7 +5886,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </ul>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Serializer.Builder#uriRelativity(UriRelativity)}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriRelativity(UriRelativity)}
                 *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/MarshallingUris";>URIs</a>
                 * </ul>
                 *
@@ -5925,7 +5925,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </ul>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
Serializer.Builder#uriResolution(UriResolution)}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriResolution(UriResolution)}
                 *      <li class='link'><a class="doclink" 
href="https://juneau.apache.org/docs/topics/MarshallingUris";>URIs</a>
                 * </ul>
                 *
@@ -6062,7 +6062,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
WriterSerializer.Builder#useWhitespace()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#useWhitespace()}
                 * </ul>
                 * @return This object.
                 */
@@ -6098,7 +6098,7 @@ public class RestClient extends MarshallingContextable 
implements HttpClient, Cl
                 * </p>
                 *
                 * <h5 class='section'>See Also:</h5><ul>
-                *      <li class='jm'>{@link 
WriterSerializer.Builder#useWhitespace()}
+                *      <li class='jm'>{@link 
org.apache.juneau.serializer.WriterSerializer.Builder#useWhitespace()}
                 * </ul>
                 *
                 * @return This object.
diff --git a/todo/TODO-5-bean-runtime-types-to-commons.md 
b/todo/FINISHED-5-bean-runtime-types-to-commons.md
similarity index 98%
rename from todo/TODO-5-bean-runtime-types-to-commons.md
rename to todo/FINISHED-5-bean-runtime-types-to-commons.md
index 3903fb61d0..9ff9f1da88 100644
--- a/todo/TODO-5-bean-runtime-types-to-commons.md
+++ b/todo/FINISHED-5-bean-runtime-types-to-commons.md
@@ -1,6 +1,10 @@
-# TODO-5 — Move bean-modeling runtime types (`BeanMap`, `BeanMeta`, 
`BeanPropertyMeta`, …) into `commons.bean` (remainder of Phase 5)
+# FINISHED-5 — Move bean-modeling runtime types into `commons.bean` (Phase 5 
of bean-layer split)
 
-This is the remaining work from **Phase 5 of the bean-layer split**. Phase 5a 
(the `MarshallingInterceptor` → `commons.bean.BeanInterceptor` move+rename) 
shipped in the same commit that created this plan. The big runtime types still 
live in `juneau-marshall` because they are deeply entangled with `ClassMeta` / 
`MarshallingContext` / `ObjectSwap` / `BeanRegistry`, and untangling them is 
the bulk of the work.
+> **Archived from `TODO-5-bean-runtime-types-to-commons.md`.** The move is 
complete: all 7 bean-runtime types (`BeanMap`, `BeanMapEntry`, `BeanMeta`, 
`BeanPropertyMeta`, `BeanPropertyValue`, `BeanPropertyConsumer`, 
`BeanProxyInvocationHandler`) now live in `org.apache.juneau.commons.bean`; 
`juneau-commons` compiles standalone with no `juneau-marshall` dependency; full 
test suite green; release-notes and migration-guide entries landed in 
`juneau-docs`. Kept as a record of the SPI extracti [...]
+
+---
+
+Original plan content (Phase 5 of the bean-layer split). Phase 5a (the 
`MarshallingInterceptor` → `commons.bean.BeanInterceptor` move+rename) shipped 
in the same commit that created this plan. The big runtime types lived in 
`juneau-marshall` because they were deeply entangled with `ClassMeta` / 
`MarshallingContext` / `ObjectSwap` / `BeanRegistry`, and untangling them was 
the bulk of the work.
 
 ---
 
diff --git a/todo/TODO-30-classmeta-to-commons.md 
b/todo/TODO-30-classmeta-to-commons.md
new file mode 100644
index 0000000000..8d8e33f9f5
--- /dev/null
+++ b/todo/TODO-30-classmeta-to-commons.md
@@ -0,0 +1,155 @@
+# TODO-30 — Investigate moving `ClassMeta` (and related non-marshalling types) 
from `juneau-marshall` into `juneau-commons`
+
+Source: promoted from `TODO.md` on 2026-05-13. Companion follow-on to 
**TODO-5** (which already moved the bean-runtime types — `BeanMap`, `BeanMeta`, 
`BeanPropertyMeta`, `BeanPropertyValue`, `BeanPropertyConsumer`, 
`BeanProxyInvocationHandler`, `BeanMapEntry`, `BeanInterceptor` — into 
`org.apache.juneau.commons.bean`).
+
+---
+
+## Goal
+
+Determine whether the **type-classification / type-metadata layer** of Juneau 
(currently rooted at `ClassMeta`) can be moved out of `juneau-marshall` and 
into `juneau-commons`, so that `juneau-marshall` ends up containing **only**:
+
+- Serializers and parsers (`Json*`, `Xml*`, `Html*`, `Csv*`, `Msgpack*`, 
`Cbor*`, `Bson*`, `Toml*`, `Yaml*`, `Markdown*`, `Hocon*`, `Hjson*`, `Jcs`, 
`Jsonl`, `Json5`, `Proto*`, `Parquet*`, `OpenApi*`, `Uon*`, `UrlEncoding*`, 
etc.) and their per-format support code.
+- Marshalling sessions / contexts / converters / listeners / exception types.
+- Marshalling-specific annotations (`@Marshalled`, `@MarshalledProp`, 
`@MarshalledCtor`, `@MarshalledConfig`, `@MarshalledIgnore`, `@Swap`, etc.).
+- HTTP-part serializer / parser SPI (`HttpPartSerializer`, `HttpPartParser`, 
`@HttpPartMarshalling`).
+- JSON Schema generator.
+- Marshaller façades (`Json`, `Xml`, `MarshallUtils`, …).
+
+Everything else (type metadata, bean modeling extensions, swap registry 
plumbing, generic object tools, generic annotation application machinery) 
becomes a candidate for `juneau-commons` (existing packages or new 
sub-packages).
+
+This is an **investigation / feasibility** task. The deliverable is a written 
analysis with concrete recommendations for what can move, what should stay, and 
what intermediate SPI work (if any) is needed first. **No code changes** are 
part of the initial pass — once the analysis is in, individual moves get spun 
off into their own `TODO-30a/b/c…` plan files (or fresh TODO ids) following the 
same pattern as TODO-5's phases.
+
+---
+
+## Scope
+
+### In scope (candidates to move)
+
+| Candidate | Current location | Notes |
+|---|---|---|
+| `ClassMeta<T>` | `org.apache.juneau` | Core type-metadata registry; extends 
`BeanInfo<T>` (already in commons.bean). |
+| `ExtendedClassMeta` | `org.apache.juneau` | Per-format extension hook 
attached to `ClassMeta`. |
+| `BeanDictionaryMap` / `BeanDictionaryList` | `org.apache.juneau` | 
Pre-registered bean dictionaries. Currently consume `ClassMeta`. |
+| `BeanRegistry` | `org.apache.juneau` | Implements commons-side 
`BeanRegistryLookup`. Concrete impl lives marshalling-side. |
+| `ObjectSwap<T,S>` | `org.apache.juneau.swap` | Type-level swap descriptor. 
Tied to swap registry + media-type matching. |
+| Built-in swaps in `org.apache.juneau.swap.*` | `org.apache.juneau.swap` | 
`TemporalSwap`, `CalendarSwap`, `DateSwap`, `ObjectMapSwap`, `EnumerationSwap` 
(deleted), `IteratorSwap` (deleted), etc. Each is candidate-by-candidate. |
+| Annotation-application framework (`AnnotationApplier`, `@ContextApply`, 
`AnnotationWorkList`, `ContextProperties`) | `org.apache.juneau.annotation` / 
`org.apache.juneau` | Generic — drives both bean-config and marshalling-config 
application. |
+| `Context` / `Session` (the base types) | `org.apache.juneau` | Currently 
parents of `MarshallingContext` / `MarshallingSession`. If they're not 
marshalling-specific, they can move. |
+| Object tools (`ObjectRest`, `ObjectComparator`, `ObjectIntrospector`, 
`ObjectSearcher`, `ObjectSorter`, `ObjectViewer`) | 
`org.apache.juneau.objecttools` | Walk POJOs for query / sort / project; depend 
on `BeanMap` (already in commons) and `ClassMeta`. |
+| Per-format `*ClassMeta` extensions (`XmlClassMeta`, `RdfClassMeta`, 
`HtmlClassMeta`, etc.) | per-format packages in `juneau-marshall` | Stay 
marshalling-side (format-specific); but their abstract parent 
`ExtendedClassMeta` is in scope. |
+| `Marshaller`-side type-conversion machinery hidden behind `ClassMeta` 
(default-value table, `canCreateNewInstance`, surrogate detection, 
builder-class detection) | `org.apache.juneau` | Already part of `ClassMeta` — 
move with it. |
+
+### Explicitly out of scope (stays in `juneau-marshall`)
+
+- `@Marshalled` / `@MarshalledProp` / `@MarshalledCtor` / `@MarshalledConfig` 
/ `@MarshalledIgnore` and their `*Annotation.Applier` builders.
+- `MarshallingContext` / `MarshallingSession` / `MarshallingTraverseContext` / 
`MarshallingTraverseSession` and their builders.
+- `MarshalledFilter` / `MarshalledBeanMetaInitializer` / 
`MarshalledPropertyPostProcessor` (already implementations of commons-side 
SPIs).
+- All serializers, parsers, and per-format support classes.
+- `Swap` annotation, `@SerializerConfig`, `@ParserConfig`.
+- `HttpPart*` serializer/parser SPI.
+- `JsonSchemaGenerator`.
+
+### Already in commons (no action needed)
+
+- `BeanMap`, `BeanMeta`, `BeanPropertyMeta`, `BeanPropertyValue`, 
`BeanPropertyConsumer`, `BeanProxyInvocationHandler`, `BeanMapEntry`, 
`BeanInterceptor` (TODO-5).
+- `BeanInfo`, `BeanSession`, `BeanFilter`, `BeanRegistryLookup`, 
`BeanMetaInitializer`, `BeanPropertyPostProcessor`, `BeanTypeResolver`, 
`BeanConfigContext` (TODO-5).
+- `@BeanType`, `@BeanProp`, `@BeanCtor`, `@BeanIgnore`, `@BeanConfig`, `@Name` 
(TODO-5).
+- `ClassInfo`, `ClassInfoTyped`, `MethodInfo`, `FieldInfo`, `ParameterInfo`, 
`AnnotationInfo`, `AnnotationProvider`, `Visibility`, `ExecutableException`, 
`ReflectionUtils`, `TypeVariables` (commons.reflect — pre-existing).
+- `BeanStore`, `BeanInstantiator`, `BasicBeanStore` (commons.inject).
+- `Utils`, `Settings`, value classes, `ThrowableUtils`, etc.
+
+---
+
+## Phase 0 — Inventory and coupling map (deliverable: a written analysis)
+
+The first concrete output is a **dependency map**: for each candidate type, 
list which marshalling-only types it currently imports and which 
marshalling-only types currently import it. This shapes the eventual move order.
+
+### Steps
+
+1. **`ClassMeta` itself.** Enumerate every field, every method, and every type 
referenced from each. Categorize as:
+    - (a) `BeanInfo` / `ClassInfo` / commons-side type — no problem.
+    - (b) Bean-modeling-only type that is already in commons (`BeanMeta`, 
`BeanFilter`, …) — no problem.
+    - (c) Marshalling-specific type (`ObjectSwap`, `MarshalledFilter`, 
`BeanRegistry` concrete, per-format `*ClassMeta` extensions) — these are the 
move-blockers.
+    - (d) Side-channel hooks into `MarshallingContext` (cache lookups, 
type-name registry, default-value table) — these decide whether `ClassMeta` can 
be standalone or needs a `MarshallingContext` companion.
+2. **`ObjectSwap`.** Same audit. Determine whether `ObjectSwap` is 
fundamentally tied to `MediaType` matching (a marshalling concept) or just to a 
`Class<?>` pair plus optional metadata.
+3. **`BeanRegistry`.** Already a thin wrapper over `BeanRegistryLookup`. Audit 
what makes the concrete implementation marshalling-side (annotation reads? 
type-resolution? exception classes?).
+4. **`Context` / `Session` base types.** Determine whether the base APIs 
(build / apply / copy / set / property bag) are inherently marshalling-specific 
or generic infrastructure that could host both bean-config and 
marshalling-config.
+5. **Annotation-application framework (`AnnotationApplier`, 
`AnnotationWorkList`, `ContextProperties`).** Audit whether the framework 
itself references marshalling types or whether it's a generic dispatcher driven 
by builder method references.
+6. **`BeanDictionaryMap` / `BeanDictionaryList`.** Audit whether they actually 
need `ClassMeta` or can operate on `BeanInfo` (commons-side seam).
+7. **Object tools.** Audit whether `ObjectRest` / `ObjectSearcher` / etc. need 
`MarshallingContext` or only the commons-side `BeanSession` / `BeanMap` surface.
+
+### Output
+
+Write the analysis as an appendix at the bottom of this plan (or as a separate 
`TODO-30-analysis.md` if it gets large). Each candidate gets:
+
+- Recommended outcome: **MOVE-AS-IS** / **MOVE-WITH-SPI** / **STAYS** / 
**SPLIT** (move parent, keep concrete).
+- Move-blockers (concrete types that currently couple it to marshalling).
+- Proposed SPI seam(s), mirroring the `BeanInfo` / `BeanSession` / 
`BeanRegistryLookup` pattern from TODO-5.
+- Estimated effort (small / medium / large) — order of magnitude.
+
+---
+
+## Phase 1 — Standalone-compile probes
+
+Once the analysis is in, validate the dependency map with empirical probes:
+
+- Create temporary `juneau-commons-probe` source folders that copy the 
candidate file with minimal edits (replace marshalling-side type refs with 
`Object` casts, remove imports). Compile `juneau-commons` standalone. The set 
of compile errors maps the **real** remaining coupling.
+- Use these probe builds to refine effort estimates per candidate.
+
+(Same technique TODO-5 used during Phase 5 prep — see 
`todo/TODO-5-bean-runtime-types-to-commons.md` for the pattern.)
+
+---
+
+## Phase 2+ — Sequencing (to be planned post-analysis)
+
+A likely ordering, **subject to revision** once Phase 0 / 1 are done:
+
+1. Promote `Context` / `Session` base types to commons (if Phase 0 confirms 
they're generic).
+2. Move annotation-application framework to commons.
+3. Move `ObjectSwap` (with whatever SPI seam decouples it from `MediaType` / 
format awareness — possibly `ObjectSwap` itself stays generic and the 
format-aware filter lives on the marshalling side).
+4. Move `ClassMeta` (the big one). Likely requires:
+    - A commons-side `ClassMeta` that no longer carries the per-format 
`ExtendedClassMeta` cache.
+    - `MarshallingContext` keeps a side-map keyed by `ClassMeta` for the 
per-format extensions.
+    - Default-value table / `canCreateNewInstance` / surrogate detection stay 
on `ClassMeta` since they're generic Java-class facts, not marshalling facts.
+5. Move `BeanRegistry`, `BeanDictionaryMap`, `BeanDictionaryList` (smaller, 
likely follow-on).
+6. Move object-tools package.
+7. Move per-format `*ClassMeta` parent `ExtendedClassMeta` (if Phase 0 finds 
it's a thin generic hook).
+
+Each step gets its own checkpoint with the same shape as TODO-5's Phase C 
tasks: identify blockers, lift SPIs, then physical `git mv` + reference sweep + 
standalone compile verification.
+
+---
+
+## Non-goals (this TODO)
+
+- **No code changes during the investigation phase.** Phase 0 is purely a 
read-only audit.
+- **No coupling to specific release vehicles.** This work straddles releases; 
lock in version boundaries only when a phase is actually executed.
+- **Not a `juneau-marshall` rewrite.** Serializers / parsers stay structurally 
the same; only their dependency floor changes.
+
+---
+
+## Open questions
+
+1. **Does `ClassMeta` need to know about media types?** If yes (e.g. via 
`forMediaTypes` matching on swaps cached inside `ClassMeta`), then either the 
media-type-aware portion stays marshalling-side as `ExtendedClassMeta` or 
`ClassMeta` needs to expose an `Object`-typed swap-list seam that the 
marshalling-side narrows.
+2. **Does `Context` carry serializer/parser settings?** If `Context.Builder` 
defines things like `quoteChar`, `useWhitespace`, etc., those are 
marshalling-specific and `Context` cannot move as-is — only a smaller 
`BeanContext`-style ancestor would.
+3. **Does the annotation-application framework reference 
`MarshallingContext.Builder` explicitly anywhere, or only through generic `B 
extends Builder` parameters?** The latter is portable.
+4. **Are object tools depended on by `juneau-rest-server`?** If yes, moving 
them to commons would let rest-server drop its `juneau-marshall` runtime 
dependency for those features (relates to TODO-7's larger goal).
+5. **Where does `BeanFilter.Builder` live?** Currently it sits between commons 
(`BeanFilter` SPI) and marshall (`MarshalledFilter` impl). The builder may want 
to live in commons (mirroring TODO-5's tightening of 
`BeanPropertyPostProcessor.process`).
+6. **Coordination with TODO-14 (move SVL to commons).** If `VarResolver` lands 
in commons first, `Context`/`Session` base-type move becomes much easier — they 
currently reference `VarResolverSession` in the apply pipeline.
+
+---
+
+## Risks
+
+- **`ClassMeta` is one of the most-imported types in the entire codebase** 
(hundreds of references across `juneau-marshall`, `juneau-rest-*`, 
`juneau-bean-*`, `juneau-utest`). A package-path move means a repo-wide import 
sweep on the same order of magnitude as TODO-5's 138-file BeanInfo rename.
+- **Per-format `*ClassMeta` extensions** are cached inside `ClassMeta` itself 
today. Decoupling that cache requires either keeping a side-map on 
`MarshallingContext` or accepting that `ClassMeta` carries an `Object`-typed 
`extendedMeta` lookup. Either way, the per-format `XmlClassMeta` / 
`HtmlClassMeta` / `RdfClassMeta` classes stay marshalling-side.
+- **Annotation-application framework move** can ripple: every 
`@MarshalledConfig.Applier`, every `@SerializerConfig.Applier`, etc. currently 
extends commons-or-marshall classes. If the base `AnnotationApplier` moves to 
commons, the marshalling-side concrete appliers stay in marshall but their 
parent class import flips. Mechanical but repo-wide.
+- **Source-incompatible** even for downstream users who reference 
`org.apache.juneau.ClassMeta` directly. Coordinate with the v9.5 migration 
guide.
+
+---
+
+## Definition of done (for the investigation phase)
+
+- [ ] Phase 0 inventory written. Each candidate type has a recommended 
outcome, blockers, and effort estimate.
+- [ ] Phase 1 standalone-compile probes attempted for at least `ClassMeta`, 
`ObjectSwap`, and one object-tool to validate the analysis.
+- [ ] Phase 2+ sequencing locked in based on Phase 0 / 1 findings.
+- [ ] Followup `TODO-30a-…` / `TODO-30b-…` plan files (or new top-level TODO 
ids) created for the individual moves identified in Phase 2+. This plan file 
then becomes a hub linking to those followups.
diff --git a/todo/TODO.md b/todo/TODO.md
index 70b7c51c39..c19c17a061 100644
--- a/todo/TODO.md
+++ b/todo/TODO.md
@@ -7,8 +7,6 @@
 
 - [TODO-4] Duration.ofDays(7) serialized in hours?
 
-- [TODO-5] Finish Phase 5 of the bean-layer split: physically move `BeanMap`, 
`BeanMeta`, `BeanPropertyMeta`, `BeanMapEntry`, `BeanPropertyValue`, 
`BeanPropertyConsumer`, `BeanProxyInvocationHandler`, and `BeanMetaFiltered` 
from `juneau-marshall` into `org.apache.juneau.commons.bean` in 
`juneau-commons`. Requires untangling `ClassMeta` / `MarshallingContext` / 
`ObjectSwap` / `BeanRegistry` dependencies (introduce a `BeanConfigContext` 
runtime POJO, swap `ClassMeta` for `ClassInfo`, hoist [...]
-
 - [TODO-6] Add an `ai` / `shortDescription` field to `@Schema` (and related 
annotations) for concise LLM/AI-consumption descriptions that stay under token 
budgets. See `todo/TODO-6-ai-short-description.md`.
 
 - [TODO-7] Decouple `juneau-rest-common` from `juneau-marshall` by breaking 
the compile dependency so REST annotations and beans can be used without 
pulling in the full serialization stack. See 
`todo/TODO-7-decouple-rest-common-from-marshall.md`.


Reply via email to