You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2026/05/13 21:30:13 UTC

(juneau) 21/21: chore: javadoc FQN sweep + sonar suppressions; close TODO-5

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 <ja...@jamesbog-ltmjqf2.internal.salesforce.com>
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 <cu...@cursor.com>
---
 .../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`.