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


The following commit(s) were added to refs/heads/master by this push:
     new 6de6a88  Context API refactoring.
6de6a88 is described below

commit 6de6a88fca01b4a7a9f147d63603604a990cdaba
Author: JamesBognar <[email protected]>
AuthorDate: Sun Sep 26 09:34:15 2021 -0400

    Context API refactoring.
---
 .github/workflows/codeql-analysis.yml              |  21 ++--
 .../org/apache/juneau/jena/RdfParserBuilder.java   |   2 +-
 .../apache/juneau/jena/RdfSerializerBuilder.java   |   2 +-
 .../main/java/org/apache/juneau/BeanContext.java   |  78 ++++---------
 .../java/org/apache/juneau/BeanContextBuilder.java |  41 +++++--
 .../org/apache/juneau/BeanContextableBuilder.java  |   4 +-
 .../main/java/org/apache/juneau/BeanSession.java   |   2 +-
 .../org/apache/juneau/BeanTraverseBuilder.java     |   2 +-
 .../java/org/apache/juneau/ContextBuilder.java     |   4 +-
 .../org/apache/juneau/annotation/BeanConfig.java   |   2 +-
 .../juneau/annotation/BeanConfigAnnotation.java    |  24 ++--
 .../org/apache/juneau/csv/CsvParserBuilder.java    |   2 +-
 .../apache/juneau/csv/CsvSerializerBuilder.java    |   2 +-
 .../juneau/html/HtmlDocSerializerBuilder.java      |   2 +-
 .../org/apache/juneau/html/HtmlParserBuilder.java  |   2 +-
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |   2 +-
 .../apache/juneau/html/HtmlSerializerBuilder.java  |   2 +-
 .../html/HtmlStrippedDocSerializerBuilder.java     |   2 +-
 .../org/apache/juneau/jso/JsoParserBuilder.java    |   2 +-
 .../apache/juneau/jso/JsoSerializerBuilder.java    |   2 +-
 .../org/apache/juneau/json/JsonParserBuilder.java  |   2 +-
 .../juneau/json/JsonSchemaSerializerBuilder.java   |   2 +-
 .../org/apache/juneau/json/JsonSerializer.java     |   2 +-
 .../apache/juneau/json/JsonSerializerBuilder.java  |   2 +-
 .../jsonschema/JsonSchemaGeneratorBuilder.java     |   2 +-
 .../juneau/msgpack/MsgPackParserBuilder.java       |   2 +-
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |   2 +-
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |   2 +-
 .../juneau/oapi/OpenApiSerializerBuilder.java      |   2 +-
 .../juneau/parser/InputStreamParserBuilder.java    |   2 +-
 .../org/apache/juneau/parser/ParserBuilder.java    |   2 +-
 .../apache/juneau/parser/ReaderParserBuilder.java  |   2 +-
 .../juneau/plaintext/PlainTextParserBuilder.java   |   2 +-
 .../plaintext/PlainTextSerializerBuilder.java      |   2 +-
 .../serializer/OutputStreamSerializerBuilder.java  |   2 +-
 .../juneau/serializer/SerializerBuilder.java       |   2 +-
 .../juneau/serializer/WriterSerializerBuilder.java |   2 +-
 .../juneau/soap/SoapXmlSerializerBuilder.java      |   2 +-
 .../java/org/apache/juneau/transform/PojoSwap.java |   4 +-
 .../org/apache/juneau/transform/Surrogate.java     |   2 +-
 .../org/apache/juneau/uon/UonParserBuilder.java    |   2 +-
 .../apache/juneau/uon/UonSerializerBuilder.java    |   2 +-
 .../urlencoding/UrlEncodingParserBuilder.java      |   2 +-
 .../urlencoding/UrlEncodingSerializerBuilder.java  |   2 +-
 .../org/apache/juneau/xml/XmlParserBuilder.java    |   2 +-
 .../apache/juneau/xml/XmlSerializerBuilder.java    |   2 +-
 .../juneau/rest/client/RestClientBuilder.java      |  70 +++++------
 .../org/apache/juneau/rest/client/RestRequest.java |  52 ++++-----
 .../juneau/rest/mock/MockRestClientBuilder.java    |   2 +-
 .../org/apache/juneau/rest/jaxrs/BaseProvider.java |   4 +-
 .../java/org/apache/juneau/ComboRoundTripTest.java |   4 +-
 .../apache/juneau/a/rttests/RoundTripMapsTest.java |   2 +-
 .../org/apache/juneau/a/rttests/RoundTripTest.java |   4 +-
 .../a/rttests/RoundTripTransformBeansTest.java     |   4 +-
 .../client/RestClient_Config_Context_Test.java     |  10 +-
 .../apache/juneau/transforms/DefaultSwapsTest.java | 128 ++++++++++-----------
 .../apache/juneau/transforms/ReaderFilterTest.java |   2 +-
 57 files changed, 263 insertions(+), 273 deletions(-)

diff --git a/.github/workflows/codeql-analysis.yml 
b/.github/workflows/codeql-analysis.yml
index 05017d3..570c771 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -1,13 +1,18 @@
 # For most projects, this workflow file will not need changing; you simply need
 # to commit it to your repository.
 #
-# You may wish to alter this file to override the set of languages analyzed,
-# or to provide custom queries or build logic.
-#
-# ******** NOTE ********
-# We have attempted to detect the languages in your repository. Please check
-# the `language` matrix defined below to confirm you have the correct set of
-# supported CodeQL languages.
+# 
***************************************************************************************************************************
+# * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+# * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+# * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+# * with the License.  You may obtain a copy of the License at                 
                                             *
+# *                                                                            
                                             *
+# *  http://www.apache.org/licenses/LICENSE-2.0                                
                                             *
+# *                                                                            
                                             *
+# * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+# * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+# * specific language governing permissions and limitations under the License. 
                                             *
+# 
***************************************************************************************************************************
 #
 name: "CodeQL"
 
@@ -32,7 +37,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        language: [ 'cpp', 'java', 'javascript' ]
+        language: [ 'java' ]
         # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 
'python' ]
         # Learn more:
         # 
https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
index 9a798c7..98fbdb9 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
@@ -1209,7 +1209,7 @@ public class RdfParserBuilder extends ReaderParserBuilder 
{
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public RdfParserBuilder swaps(Object...values) {
+       public RdfParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
index c7c32eb..625f3e6 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
@@ -1308,7 +1308,7 @@ public class RdfSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public RdfSerializerBuilder swaps(Object...values) {
+       public RdfSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 25ac462..9485367 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -248,33 +248,6 @@ public class BeanContext extends Context {
         */
        public static final String BEAN_propertyNamer = PREFIX + 
".propertyNamer.c";
 
-       /**
-        * Configuration property:  Java object swaps.
-        *
-        * <p>
-        * Swaps are used to "swap out" non-serializable classes with 
serializable equivalents during serialization,
-        * and "swap in" the non-serializable class during parsing..
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link org.apache.juneau.BeanContext#BEAN_swaps 
BEAN_swaps}
-        *      <li><b>Name:</b>  <js>"BeanContext.swaps.lo"</js>
-        *      <li><b>Data type:</b>  <c>List&lt;Object&gt;</c>
-        *      <li><b>Default:</b>  empty list
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.Swap}
-        *                      <li class='ja'>{@link 
org.apache.juneau.annotation.BeanConfig#swaps()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.BeanContextBuilder#swaps(Object...)}
-        *              </ul>
-        * </ul>
-        */
-       public static final String BEAN_swaps = PREFIX + ".swaps.lo";
-
        /*
         * The default package pattern exclusion list.
         * Any beans in packages in this list will not be considered beans.
@@ -339,13 +312,14 @@ public class BeanContext extends Context {
                beanFieldVisibility;
 
        private final Class<?>[] notBeanClasses;
-       final List<Class<?>> beanDictionary;
+       final List<Class<?>> beanDictionary, swaps;
        private final String[] notBeanPackageNames, notBeanPackagePrefixes;
-       private final PojoSwap<?,?>[] swaps;
        private final BeanRegistry beanRegistry;
        private final PropertyNamer propertyNamer;
        final String typePropertyName;
 
+       final PojoSwap[] swapArray;
+
        final Locale locale;
        final TimeZone timeZone;
        final MediaType mediaType;
@@ -371,6 +345,10 @@ public class BeanContext extends Context {
 
                cp = cp.subset(new String[]{"Context","BeanContext"});
 
+               beanConstructorVisibility = builder.beanConstructorVisibility;
+               beanClassVisibility = builder.beanClassVisibility;
+               beanMethodVisibility = builder.beanMethodVisibility;
+               beanFieldVisibility = builder.beanFieldVisibility;
                beansRequireDefaultConstructor = 
builder.beansRequireDefaultConstructor;
                beansRequireSerializable = builder.beansRequireSerializable;
                beansRequireSettersForGetters = 
builder.beansRequireSettersForGetters;
@@ -391,17 +369,13 @@ public class BeanContext extends Context {
                locale = 
ofNullable(builder.locale).orElseGet(()->Locale.getDefault());
                timeZone = builder.timeZone;
                mediaType = builder.mediaType;
-
-               beanConstructorVisibility = builder.beanConstructorVisibility;
-               beanClassVisibility = builder.beanClassVisibility;
-               beanMethodVisibility = builder.beanMethodVisibility;
-               beanFieldVisibility = builder.beanFieldVisibility;
+               beanDictionary = 
ofNullable(builder.beanDictionary).map(Collections::unmodifiableList).orElse(emptyList());
+               swaps = 
ofNullable(builder.swaps).map(Collections::unmodifiableList).orElse(emptyList());
 
                notBeanClasses = 
cp.getClassArray(BEAN_notBeanClasses).orElse(DEFAULT_NOTBEAN_CLASSES);
 
                propertyNamer = cp.getInstance(BEAN_propertyNamer, 
PropertyNamer.class).orElseGet(BasicPropertyNamer::new);
 
-
                List<String> l1 = new LinkedList<>();
                List<String> l2 = new LinkedList<>();
                for (String s : cp.getArray(BEAN_notBeanPackages, 
String.class).orElse(DEFAULT_NOTBEAN_PACKAGES)) {
@@ -414,20 +388,16 @@ public class BeanContext extends Context {
                notBeanPackagePrefixes = l2.toArray(new String[l2.size()]);
 
                LinkedList<PojoSwap<?,?>> lpf = new LinkedList<>();
-               for (Object o : cp.getList(BEAN_swaps, 
Object.class).orElse(emptyList())) {
-                       if (o instanceof Class) {
-                               ClassInfo ci = ClassInfo.of((Class<?>)o);
-                               if (ci.isChildOf(PojoSwap.class))
-                                       lpf.add(castOrCreate(PojoSwap.class, 
ci.inner()));
-                               else if (ci.isChildOf(Surrogate.class))
-                                       
lpf.addAll(SurrogateSwap.findPojoSwaps(ci.inner(), this));
-                               else
-                                       throw runtimeException("Invalid class 
{0} specified in BeanContext.swaps property.  Must be a subclass of PojoSwap or 
Surrogate.", ci.inner());
-                       } else if (o instanceof PojoSwap) {
-                               lpf.add((PojoSwap)o);
-                       }
+               for (Object o : ofNullable(swaps).orElse(emptyList())) {
+                       ClassInfo ci = ClassInfo.of((Class<?>)o);
+                       if (ci.isChildOf(PojoSwap.class))
+                               lpf.add(castOrCreate(PojoSwap.class, 
ci.inner()));
+                       else if (ci.isChildOf(Surrogate.class))
+                               
lpf.addAll(SurrogateSwap.findPojoSwaps(ci.inner(), this));
+                       else
+                               throw runtimeException("Invalid class {0} 
specified in BeanContext.swaps property.  Must be a subclass of PojoSwap or 
Surrogate.", ci.inner());
                }
-               swaps = lpf.toArray(new PojoSwap[lpf.size()]);
+               swapArray = lpf.toArray(new PojoSwap[lpf.size()]);
 
                cmCache = new ConcurrentHashMap<>();
                cmCache.put(String.class, new ClassMeta(String.class, this, 
findPojoSwaps(String.class), findChildPojoSwaps(String.class)));
@@ -436,8 +406,6 @@ public class BeanContext extends Context {
                cmObject = cmCache.get(Object.class);
                cmClass = cmCache.get(Class.class);
 
-               beanDictionary = 
ofNullable(builder.beanDictionary).map(Collections::unmodifiableList).orElse(emptyList());
-
                beanRegistry = new BeanRegistry(this, null);
        }
 
@@ -948,7 +916,7 @@ public class BeanContext extends Context {
                // Note:  On first
                if (c != null) {
                        List<PojoSwap> l = new ArrayList<>();
-                       for (PojoSwap f : swaps)
+                       for (PojoSwap f : swapArray)
                                if (f.getNormalClass().isParentOf(c))
                                        l.add(f);
                        return l.size() == 0 ? null : l.toArray(new 
PojoSwap[l.size()]);
@@ -963,10 +931,10 @@ public class BeanContext extends Context {
         * @return <jk>true</jk> if the specified class or one of its 
subclasses has a {@link PojoSwap} associated with it.
         */
        private final PojoSwap[] findChildPojoSwaps(Class<?> c) {
-               if (c == null || swaps.length == 0)
+               if (c == null || swapArray.length == 0)
                        return null;
                List<PojoSwap> l = null;
-               for (PojoSwap f : swaps) {
+               for (PojoSwap f : swapArray) {
                        if (f.getNormalClass().isChildOf(c)) {
                                if (l == null)
                                        l = new ArrayList<>();
@@ -1281,12 +1249,12 @@ public class BeanContext extends Context {
        /**
         * Java object swaps.
         *
-        * @see #BEAN_swaps
+        * @see BeanContextBuilder#swaps(Class...)
         * @return
         *      The list POJO swaps defined.
         */
        public final PojoSwap<?,?>[] getSwaps() {
-               return swaps;
+               return swapArray;
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 9a40705..bf4353e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -15,6 +15,7 @@ package org.apache.juneau;
 import static org.apache.juneau.BeanContext.*;
 import static org.apache.juneau.internal.StringUtils.*;
 import static org.apache.juneau.Visibility.*;
+import static java.util.Arrays.*;
 
 import java.beans.*;
 import java.io.*;
@@ -66,7 +67,7 @@ public class BeanContextBuilder extends ContextBuilder {
        
//-----------------------------------------------------------------------------------------------------------------
 
        Visibility beanClassVisibility, beanConstructorVisibility, 
beanMethodVisibility, beanFieldVisibility;
-       List<Class<?>> beanDictionary;
+       List<Class<?>> beanDictionary, swaps;
        boolean disableBeansRequireSomeProperties, beanMapPutReturnsOldValue, 
beansRequireDefaultConstructor, beansRequireSerializable,
                beansRequireSettersForGetters, disableIgnoreTransientFields, 
disableIgnoreUnknownNullBeanProperties, disableIgnoreMissingSetters,
                disableInterfaceProxies, findFluentSetters, 
ignoreInvocationExceptionsOnGetters, ignoreInvocationExceptionsOnSetters,
@@ -88,6 +89,7 @@ public class BeanContextBuilder extends ContextBuilder {
                beanMethodVisibility = env("BeanContext.beanMethodVisibility", 
PUBLIC);
                beanFieldVisibility = env("BeanContext.beanFieldVisibility", 
PUBLIC);
                beanDictionary = null;
+               swaps = null;
                disableBeansRequireSomeProperties = 
env("BeanContext.disableBeansRequireSomeProperties", false);
                beanMapPutReturnsOldValue = 
env("BeanContext.beanMapPutReturnsOldValue", false);
                beansRequireDefaultConstructor = 
env("BeanContext.beansRequireDefaultConstructor", false);
@@ -122,6 +124,7 @@ public class BeanContextBuilder extends ContextBuilder {
                beanMethodVisibility = copyFrom.beanMethodVisibility;
                beanFieldVisibility = copyFrom.beanFieldVisibility;
                beanDictionary = copyFrom.beanDictionary.isEmpty() ? null : new 
ArrayList<>(copyFrom.beanDictionary);
+               swaps = copyFrom.swaps.isEmpty() ? null : new 
ArrayList<>(copyFrom.swaps);
                disableBeansRequireSomeProperties = ! 
copyFrom.beansRequireSomeProperties;
                beanMapPutReturnsOldValue = copyFrom.beanMapPutReturnsOldValue;
                beansRequireDefaultConstructor = 
copyFrom.beansRequireDefaultConstructor;
@@ -156,6 +159,7 @@ public class BeanContextBuilder extends ContextBuilder {
                beanMethodVisibility = copyFrom.beanMethodVisibility;
                beanFieldVisibility = copyFrom.beanFieldVisibility;
                beanDictionary = copyFrom.beanDictionary == null ? null : new 
ArrayList<>(copyFrom.beanDictionary);
+               swaps = copyFrom.swaps == null ? null : new 
ArrayList<>(copyFrom.swaps);
                disableBeansRequireSomeProperties = 
copyFrom.disableBeansRequireSomeProperties;
                beanMapPutReturnsOldValue = copyFrom.beanMapPutReturnsOldValue;
                beansRequireDefaultConstructor = 
copyFrom.beansRequireDefaultConstructor;
@@ -194,6 +198,7 @@ public class BeanContextBuilder extends ContextBuilder {
                        beanMethodVisibility,
                        beanFieldVisibility,
                        beanDictionary,
+                       swaps,
                        integer(
                                disableBeansRequireSomeProperties,
                                beanMapPutReturnsOldValue,
@@ -1547,7 +1552,7 @@ public class BeanContextBuilder extends ContextBuilder {
         */
        @FluentSetter
        public BeanContextBuilder beanDictionary(Class<?>...values) {
-               return beanDictionary(Arrays.asList(values));
+               return beanDictionary(asList(values));
        }
 
        /**
@@ -2826,10 +2831,6 @@ public class BeanContextBuilder extends ContextBuilder {
         *      <li>The {@link Swap @Swap} annotation can also be used on bean 
methods and fields to identify swaps for values of those bean properties.
         * </ul>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link BeanContext#BEAN_swaps}
-        * </ul>
-        *
         * @param values
         *      The values to add to this setting.
         *      <br>Values can consist of any of the following types:
@@ -2841,8 +2842,32 @@ public class BeanContextBuilder extends ContextBuilder {
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public BeanContextBuilder swaps(Object...values) {
-               return appendTo(BEAN_swaps, values);
+       public BeanContextBuilder swaps(Class<?>...values) {
+               return swaps(asList(values));
+       }
+
+       /**
+        * Same as {@link #swaps(Class...)} but allows you to pass in a 
collection of classes.
+        *
+        * @param values
+        *      The values to add to this setting.
+        * @return This object (for method chaining).
+        */
+       @FluentSetter
+       public BeanContextBuilder swaps(Collection<Class<?>> values) {
+               swaps().addAll(0, values);
+               return this;
+       }
+
+       /**
+        * Returns the bean swaps list.
+        *
+        * @return The bean swaps list.
+        */
+       public List<Class<?>> swaps() {
+               if (swaps == null)
+                       swaps = new ArrayList<>();
+               return swaps;
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
index 5af5fb4..661b4ea 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
@@ -2582,7 +2582,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link BeanContext#BEAN_swaps}
+        *      <li class='jf'>{@link BeanContextBuilder#swaps(Class...)}
         * </ul>
         *
         * @param values
@@ -2596,7 +2596,7 @@ public abstract class BeanContextableBuilder extends 
ContextBuilder {
         * @return This object (for method chaining).
         */
        @FluentSetter
-       public BeanContextableBuilder swaps(Object...values) {
+       public BeanContextableBuilder swaps(Class<?>...values) {
                bcBuilder.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index 7ff36ee..d6de65e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -1499,7 +1499,7 @@ public class BeanSession extends Session {
        /**
         * Configuration property:  Java object swaps.
         *
-        * @see BeanContext#BEAN_swaps
+        * @see BeanContextBuilder#swaps(Class...)
         * @return
         *      The list POJO swaps defined.
         */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
index 25c5404..4b428ec 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
@@ -630,7 +630,7 @@ public abstract class BeanTraverseBuilder extends 
BeanContextableBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public BeanTraverseBuilder swaps(Object...values) {
+       public BeanTraverseBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
index 15f27aa..e276fe5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
@@ -994,7 +994,7 @@ public abstract class ContextBuilder {
         * </ul>
         *
         * <p>
-        * For example, the {@link BeanContext#BEAN_swaps} property which has 
the value <js>"BeanContext.swaps.lo"</js>.
+        * For example, the {@link BeanContextBuilder#swaps(Class...)} setting 
which has the value <js>"BeanContext.swaps.lo"</js>.
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bcode w800'>
@@ -1042,7 +1042,7 @@ public abstract class ContextBuilder {
         * </ul>
         *
         * <p>
-        * For example, the {@link BeanContext#BEAN_swaps} property which has 
the value <js>"BeanContext.swaps.lo"</js>.
+        * For example, the {@link BeanContextBuilder#swaps(Class...)} property 
which has the value <js>"BeanContext.swaps.lo"</js>.
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bcode w800'>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
index 914589f..e0a4dcb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
@@ -810,7 +810,7 @@ public @interface BeanConfig {
         * Same as {@link #swaps()} but replaces any existing value.
         *
         * <ul class='seealso'>
-        *      <li class='jm'>{@link BeanContextBuilder#swaps(Object...)}
+        *      <li class='jm'>{@link BeanContextBuilder#swaps(Class...)}
         * </ul>
         */
        Class<?>[] swaps_replace() default {};
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 cdec2b1..8c1d33b 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
@@ -49,14 +49,11 @@ public class BeanConfigAnnotation {
                        visibility(a.beanConstructorVisibility(), 
"beanConstructorVisibility").ifPresent(x -> b.beanConstructorVisibility(x));
                        visibility(a.beanFieldVisibility(), 
"beanFieldVisibility").ifPresent(x -> b.beanFieldVisibility(x));
                        visibility(a.beanMethodVisibility(), 
"beanMethodVisibility").ifPresent(x -> b.beanMethodVisibility(x));
-                       classes(a.dictionary()).ifPresent(x -> 
b.beanDictionary(x));
-                       classes(a.dictionary_replace()).ifPresent(x -> { 
b.beanDictionary().clear(); b.beanDictionary(x);});
                        bool(a.beanMapPutReturnsOldValue()).ifPresent(x -> 
b.beanMapPutReturnsOldValue(x));
                        bool(a.beansRequireDefaultConstructor()).ifPresent(x -> 
b.beansRequireDefaultConstructor(x));
                        bool(a.beansRequireSerializable()).ifPresent(x -> 
b.beansRequireSerializable(x));
                        bool(a.beansRequireSettersForGetters()).ifPresent(x -> 
b.beansRequireSettersForGetters(x));
                        bool(a.disableBeansRequireSomeProperties()).ifPresent(x 
-> b.disableBeansRequireSomeProperties(x));
-                       string(a.typePropertyName()).ifPresent(x -> 
b.typePropertyName(x));
                        bool(a.debug()).ifPresent(x -> b.set(CONTEXT_debug, x));
                        bool(a.findFluentSetters()).ifPresent(x -> 
b.findFluentSetters(x));
                        
bool(a.ignoreInvocationExceptionsOnGetters()).ifPresent(x -> 
b.ignoreInvocationExceptionsOnGetters(x));
@@ -65,21 +62,24 @@ public class BeanConfigAnnotation {
                        bool(a.disableIgnoreTransientFields()).ifPresent(x -> 
b.disableIgnoreTransientFields(x));
                        bool(a.ignoreUnknownBeanProperties()).ifPresent(x -> 
b.ignoreUnknownBeanProperties(x));
                        
bool(a.disableIgnoreUnknownNullBeanProperties()).ifPresent(x -> 
b.disableIgnoreUnknownNullBeanProperties(x));
-                       asList(a.interfaces()).stream().map(x -> 
BeanAnnotation.create(x).interfaceClass(x).build()).forEach(x -> 
b.annotations(x));
+                       bool(a.sortProperties()).ifPresent(x -> 
b.sortProperties(x));
+                       bool(a.useEnumNames()).ifPresent(x -> 
b.useEnumNames(x));
+                       bool(a.disableInterfaceProxies()).ifPresent(x -> 
b.disableInterfaceProxies(x));
+                       bool(a.useJavaBeanIntrospector()).ifPresent(x -> 
b.useJavaBeanIntrospector(x));
+                       string(a.typePropertyName()).ifPresent(x -> 
b.typePropertyName(x));
                        
string(a.locale()).map(Locale::forLanguageTag).ifPresent(x -> b.locale(x));
                        string(a.mediaType()).map(MediaType::of).ifPresent(x -> 
b.mediaType(x));
+                       
string(a.timeZone()).map(TimeZone::getTimeZone).ifPresent(x -> b.timeZone(x));
+                       classes(a.dictionary()).ifPresent(x -> 
b.beanDictionary(x));
+                       classes(a.dictionary_replace()).ifPresent(x -> { 
b.beanDictionary().clear(); b.beanDictionary(x);});
+                       classes(a.swaps()).ifPresent(x -> b.swaps(x));
+                       classes(a.swaps_replace()).ifPresent(x -> { 
b.swaps().clear(); b.swaps(x);});
+                       type(a.propertyNamer()).ifPresent(x -> 
b.set(BEAN_propertyNamer, x));
+                       asList(a.interfaces()).stream().map(x -> 
BeanAnnotation.create(x).interfaceClass(x).build()).forEach(x -> 
b.annotations(x));
                        b.setIfNotEmpty(BEAN_notBeanClasses, 
a.notBeanClasses());
                        b.setIfNotEmpty(BEAN_notBeanClasses, 
a.notBeanClasses_replace());
                        b.addTo(BEAN_notBeanPackages, 
stringList(a.notBeanPackages()));
                        b.setIfNotEmpty(BEAN_notBeanPackages, 
stringList(a.notBeanPackages_replace()));
-                       type(a.propertyNamer()).ifPresent(x -> 
b.set(BEAN_propertyNamer, x));
-                       bool(a.sortProperties()).ifPresent(x -> 
b.sortProperties(x));
-                       b.prependTo(BEAN_swaps, a.swaps());
-                       b.setIfNotEmpty(BEAN_swaps, a.swaps_replace());
-                       
string(a.timeZone()).map(TimeZone::getTimeZone).ifPresent(x -> b.timeZone(x));
-                       bool(a.useEnumNames()).ifPresent(x -> 
b.useEnumNames(x));
-                       bool(a.disableInterfaceProxies()).ifPresent(x -> 
b.disableInterfaceProxies(x));
-                       bool(a.useJavaBeanIntrospector()).ifPresent(x -> 
b.useJavaBeanIntrospector(x));
                }
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
index 0ca8704..6b5d46c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
@@ -468,7 +468,7 @@ public class CsvParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public CsvParserBuilder swaps(Object...values) {
+       public CsvParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
index 2cce8ef..ba03d67 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
@@ -480,7 +480,7 @@ public class CsvSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public CsvSerializerBuilder swaps(Object...values) {
+       public CsvSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
index 4d4ee8f..825dd5f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
@@ -979,7 +979,7 @@ public class HtmlDocSerializerBuilder extends 
HtmlStrippedDocSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlDocSerializerBuilder swaps(Object...values) {
+       public HtmlDocSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
index 7fa9cf9..39839b8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
@@ -471,7 +471,7 @@ public class HtmlParserBuilder extends XmlParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlParserBuilder swaps(Object...values) {
+       public HtmlParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
index 446290f..f572018 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
@@ -649,7 +649,7 @@ public class HtmlSchemaSerializerBuilder extends 
HtmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlSchemaSerializerBuilder swaps(Object...values) {
+       public HtmlSchemaSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
index 0af1c97..7ffb227 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -868,7 +868,7 @@ public class HtmlSerializerBuilder extends 
XmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlSerializerBuilder swaps(Object...values) {
+       public HtmlSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
index b2dcbb0..6e7c928 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
@@ -469,7 +469,7 @@ public class HtmlStrippedDocSerializerBuilder extends 
HtmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public HtmlStrippedDocSerializerBuilder swaps(Object...values) {
+       public HtmlStrippedDocSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
index 7609dbe..5104869 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
@@ -467,7 +467,7 @@ public class JsoParserBuilder extends 
InputStreamParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsoParserBuilder swaps(Object...values) {
+       public JsoParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
index 700d0f8..b640001 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
@@ -479,7 +479,7 @@ public class JsoSerializerBuilder extends 
OutputStreamSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsoSerializerBuilder swaps(Object...values) {
+       public JsoSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
index 129635e..f63c0b3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
@@ -508,7 +508,7 @@ public class JsonParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonParserBuilder swaps(Object...values) {
+       public JsonParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
index 1d5514e..ef7850d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
@@ -652,7 +652,7 @@ public class JsonSchemaSerializerBuilder extends 
JsonSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonSchemaSerializerBuilder swaps(Object...values) {
+       public JsonSchemaSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
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 48b3f57..82ae1e6 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
@@ -57,7 +57,7 @@ import org.apache.juneau.serializer.*;
  * The types above are considered "JSON-primitive" object types.
  * Any non-JSON-primitive object types are transformed into JSON-primitive 
object types through
  * {@link org.apache.juneau.transform.PojoSwap PojoSwaps} associated through 
the
- * {@link BeanContextBuilder#swaps(Object...)} method.
+ * {@link BeanContextBuilder#swaps(Class...)} method.
  * Several default transforms are provided for transforming Dates, Enums, 
Iterators, etc...
  *
  * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
index 6df9930..1abc983 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
@@ -622,7 +622,7 @@ public class JsonSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonSerializerBuilder swaps(Object...values) {
+       public JsonSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
index d118be3..c49f5b5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
@@ -732,7 +732,7 @@ public class JsonSchemaGeneratorBuilder extends 
BeanTraverseBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public JsonSchemaGeneratorBuilder swaps(Object...values) {
+       public JsonSchemaGeneratorBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
index 4d77b5e..97265e6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
@@ -467,7 +467,7 @@ public class MsgPackParserBuilder extends 
InputStreamParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public MsgPackParserBuilder swaps(Object...values) {
+       public MsgPackParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
index 23af04a..0daea76 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
@@ -479,7 +479,7 @@ public class MsgPackSerializerBuilder extends 
OutputStreamSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public MsgPackSerializerBuilder swaps(Object...values) {
+       public MsgPackSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
index 559f638..47af3c3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
@@ -582,7 +582,7 @@ public class OpenApiParserBuilder extends UonParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public OpenApiParserBuilder swaps(Object...values) {
+       public OpenApiParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
index a7f385c..896b101 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
@@ -605,7 +605,7 @@ public class OpenApiSerializerBuilder extends 
UonSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public OpenApiSerializerBuilder swaps(Object...values) {
+       public OpenApiSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
index 01b8c71..618c13b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
@@ -499,7 +499,7 @@ public abstract class InputStreamParserBuilder extends 
ParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public InputStreamParserBuilder swaps(Object...values) {
+       public InputStreamParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
index 378334b..8488aa3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
@@ -772,7 +772,7 @@ public abstract class ParserBuilder extends 
BeanContextableBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public ParserBuilder swaps(Object...values) {
+       public ParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
index e2928fa..8511065 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
@@ -536,7 +536,7 @@ public abstract class ReaderParserBuilder extends 
ParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public ReaderParserBuilder swaps(Object...values) {
+       public ReaderParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
index 3d8fbd3..26e8568 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
@@ -473,7 +473,7 @@ public class PlainTextParserBuilder extends 
ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public PlainTextParserBuilder swaps(Object...values) {
+       public PlainTextParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
index 4caaee9..534751e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
@@ -480,7 +480,7 @@ public class PlainTextSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public PlainTextSerializerBuilder swaps(Object...values) {
+       public PlainTextSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
index e9cd852..186ac64 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
@@ -513,7 +513,7 @@ public abstract class OutputStreamSerializerBuilder extends 
SerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public OutputStreamSerializerBuilder swaps(Object...values) {
+       public OutputStreamSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
index edc68b8..e62ed1a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
@@ -1032,7 +1032,7 @@ public abstract class SerializerBuilder extends 
BeanTraverseBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public SerializerBuilder swaps(Object...values) {
+       public SerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
index 96f5bc9..fc9de59 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
@@ -746,7 +746,7 @@ public abstract class WriterSerializerBuilder extends 
SerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public WriterSerializerBuilder swaps(Object...values) {
+       public WriterSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
index eb07a3a..71c6e73 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
@@ -500,7 +500,7 @@ public class SoapXmlSerializerBuilder extends 
XmlSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public SoapXmlSerializerBuilder swaps(Object...values) {
+       public SoapXmlSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
index d414cad..66fcf18 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/PojoSwap.java
@@ -44,9 +44,7 @@ import org.apache.juneau.serializer.*;
  * <c>PojoSwaps</c> are associated with serializers and parsers through the 
following:
  * <ul class='javatree'>
  *     <li class='ja'>{@link Swap @Swap}
- *     <li class='jm'>{@link BeanContextBuilder#swaps(Object...)}
- *     <li class='jm'>{@link BeanContextBuilder#swaps(Object...)}
- *     <li class='jm'>{@link BeanContextBuilder#swaps(Object...)}
+ *     <li class='jm'>{@link BeanContextBuilder#swaps(Class...)}
  * </ul>
  *
  * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/Surrogate.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/Surrogate.java
index 7e4a31d..84f857c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/Surrogate.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/transform/Surrogate.java
@@ -46,7 +46,7 @@ import org.apache.juneau.annotation.*;
  * </p>
  *
  * <p>
- * Surrogate classes are associated with serializers and parsers using the 
{@link BeanContextBuilder#swaps(Object...)}
+ * Surrogate classes are associated with serializers and parsers using the 
{@link BeanContextBuilder#swaps(Class...)}
  * method.
  * <p class='bcode w800'>
  *     JsonSerializer s = JsonSerializer
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
index 7f6abf1..cdfd885 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
@@ -532,7 +532,7 @@ public class UonParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UonParserBuilder swaps(Object...values) {
+       public UonParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
index da1e669..6e87159 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
@@ -623,7 +623,7 @@ public class UonSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UonSerializerBuilder swaps(Object...values) {
+       public UonSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
index 64d7329..be4c40e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
@@ -518,7 +518,7 @@ public class UrlEncodingParserBuilder extends 
UonParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UrlEncodingParserBuilder swaps(Object...values) {
+       public UrlEncodingParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
index 7b6908e..c8109b3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
@@ -520,7 +520,7 @@ public class UrlEncodingSerializerBuilder extends 
UonSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public UrlEncodingSerializerBuilder swaps(Object...values) {
+       public UrlEncodingSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
index f7088b0..3377b34 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
@@ -648,7 +648,7 @@ public class XmlParserBuilder extends ReaderParserBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public XmlParserBuilder swaps(Object...values) {
+       public XmlParserBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
index 6afbe80..828270a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
@@ -632,7 +632,7 @@ public class XmlSerializerBuilder extends 
WriterSerializerBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public XmlSerializerBuilder swaps(Object...values) {
+       public XmlSerializerBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index 1474b54..2c6afcc 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -155,13 +155,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         * {@link JsonSerializer} will be used to serialize POJOs to request 
bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link JsonParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"application/json"</js> unless overridden
@@ -202,13 +202,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link SimpleJsonSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link JsonParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"application/json"</js> unless overridden
@@ -245,13 +245,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         * {@link XmlSerializer} will be used to serialize POJOs to request 
bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link XmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to <js>"text/xml"</js> 
unless overridden
@@ -291,13 +291,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link HtmlSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link HtmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/html"</js> unless overridden
@@ -337,13 +337,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link HtmlDocSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link HtmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/html"</js> unless overridden
@@ -383,13 +383,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link HtmlStrippedDocSerializer} will be used to serialize 
POJOs to request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link HtmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/html+stripped"</js> unless overridden
@@ -430,13 +430,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link PlainTextSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link PlainTextParser} will be used to parse POJOs from 
response bodies unless overridden per request via {@link 
RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/plain"</js> unless overridden
@@ -476,13 +476,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link MsgPackSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link MsgPackParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"octal/msgpack"</js> unless overridden
@@ -523,13 +523,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link UonSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link UonParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to <js>"text/uon"</js> 
unless overridden
@@ -566,7 +566,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link UrlEncodingSerializer} will be used to serialize POJOs 
to request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *              <li>This serializer is NOT used when using the {@link 
RestRequest#formData(String, Object)} (and related) methods for constructing
         *                      the request body.  Instead, the part serializer 
specified via {@link #partSerializer(Class)} is used.
         *      </ul>
@@ -574,7 +574,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link UrlEncodingParser} will be used to parse POJOs from 
response bodies unless overridden per request via {@link 
RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"application/x-www-form-urlencoded"</js> unless overridden
@@ -614,7 +614,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link OpenApiSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *              <li>Typically the {@link RestRequest#body(Object, 
HttpPartSchema)} method will be used to specify the body of the request with the
         *                      schema describing it's structure.
         *      </ul>
@@ -622,7 +622,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      {@link OpenApiParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *              <li>Typically the {@link 
ResponseBody#schema(HttpPartSchema)} method will be used to specify the 
structure of the response body.
         *      </ul>
         * <p>
@@ -660,13 +660,13 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *      All basic Juneau serializers will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializers can be configured using any of the 
serializer property setters (e.g. {@link #sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      All basic Juneau parsers will be used to parse POJOs from 
response bodies unless overridden per request via {@link 
RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parsers can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
-        *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
#swaps(Class...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header must be set via {@link 
#headerData()}, or per-request
@@ -919,7 +919,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in a class, the 
serializer can be configured using any of the serializer property setters (e.g. 
{@link #sortCollections()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
         * </ul>
         *
         * <h5 class='section'>Example:</h5>
@@ -954,7 +954,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in a pre-instantiated 
serializer, the serializer property setters (e.g. {@link #sortCollections()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
         *      on this builder class have no effect.
         * </ul>
         *
@@ -992,7 +992,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in classes, the 
serializers can be configured using any of the serializer property setters 
(e.g. {@link #sortCollections()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
         * </ul>
         *
         * <h5 class='section'>Example:</h5>
@@ -1032,7 +1032,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in a pre-instantiated 
serializers, the serializer property setters (e.g. {@link #sortCollections()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
         *      on this builder class have no effect.
         * </ul>
         *
@@ -1105,7 +1105,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in a class, the parser 
can be configured using any of the parser property setters (e.g. {@link 
#strict()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
         * </ul>
         *
         * <h5 class='section'>Example:</h5>
@@ -1140,7 +1140,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in a pre-instantiated 
parser, the parser property setters (e.g. {@link #strict()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
         *      on this builder class have no effect.
         * </ul>
         *
@@ -1178,7 +1178,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in classes, the parsers 
can be configured using any of the parser property setters (e.g. {@link 
#strict()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined on this 
builder class.
         * </ul>
         *
         * <h5 class='section'>Example:</h5>
@@ -1218,7 +1218,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in pre-instantiated 
parsers, the parser property setters (e.g. {@link #strict()}),
-        *      bean context property setters (e.g. {@link #swaps(Object...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
+        *      bean context property setters (e.g. {@link #swaps(Class...)}), 
or generic property setters (e.g. {@link #set(String, Object)}) defined
         *      on this builder class have no effect.
         * </ul>
         *
@@ -3239,7 +3239,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in a pre-instantiated 
serializers and parsers, the serializer property setters (e.g. {@link 
#sortCollections()}),
-        *      parser property setters (e.g. {@link #strict()}), bean context 
property setters (e.g. {@link #swaps(Object...)}),
+        *      parser property setters (e.g. {@link #strict()}), bean context 
property setters (e.g. {@link #swaps(Class...)}),
         *      or generic property setters (e.g. {@link #set(String, Object)}) 
defined on this builder class have no effect.
         * </ul>
         *
@@ -3271,7 +3271,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         *
         * <ul class='notes'>
         *      <li>When using this method that takes in a pre-instantiated 
serializers and parsers, the serializer property setters (e.g. {@link 
#sortCollections()}),
-        *      parser property setters (e.g. {@link #strict()}), bean context 
property setters (e.g. {@link #swaps(Object...)}),
+        *      parser property setters (e.g. {@link #strict()}), bean context 
property setters (e.g. {@link #swaps(Class...)}),
         *      or generic property setters (e.g. {@link #set(String, Object)}) 
defined on this builder class have no effect.
         * </ul>
         *
@@ -5119,7 +5119,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public RestClientBuilder swaps(Object...values) {
+       public RestClientBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index b50d4ac..09d123c 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -156,13 +156,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         * {@link JsonSerializer} will be used to serialize POJOs to request 
bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link JsonParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"application/json"</js> unless overridden
@@ -190,13 +190,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link SimpleJsonSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link JsonParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"application/json"</js> unless overridden
@@ -232,13 +232,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         * {@link XmlSerializer} will be used to serialize POJOs to request 
bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link XmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to <js>"text/xml"</js> 
unless overridden
@@ -271,13 +271,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link HtmlSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link HtmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/html"</js> unless overridden
@@ -310,13 +310,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link HtmlDocSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link HtmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/html"</js> unless overridden
@@ -349,13 +349,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link HtmlStrippedDocSerializer} will be used to serialize 
POJOs to request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link HtmlParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/html+stripped"</js> unless overridden
@@ -389,13 +389,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link PlainTextSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link PlainTextParser} will be used to parse POJOs from 
response bodies unless overridden per request via {@link 
RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/plain"</js> unless overridden
@@ -428,13 +428,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link MsgPackSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link MsgPackParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"octal/msgpack"</js> unless overridden
@@ -468,13 +468,13 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link UonSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      {@link UonParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to <js>"text/uon"</js> 
unless overridden
@@ -504,7 +504,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link UrlEncodingSerializer} will be used to serialize POJOs 
to request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *              <li>This serializer is NOT used when using the {@link 
RestRequest#formData(String, Object)} (and related) methods for constructing
         *                      the request body.  Instead, the part serializer 
specified via {@link RestClientBuilder#partSerializer(Class)} is used.
         *      </ul>
@@ -512,7 +512,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link UrlEncodingParser} will be used to parse POJOs from 
response bodies unless overridden per request via {@link 
RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"application/x-www-form-urlencoded"</js> unless overridden
@@ -545,7 +545,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link OpenApiSerializer} will be used to serialize POJOs to 
request bodies unless overridden per request via {@link 
RestRequest#serializer(Serializer)}.
         *      <ul>
         *              <li>The serializer can be configured using any of the 
serializer property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *              <li>Typically the {@link RestRequest#body(Object, 
HttpPartSchema)} method will be used to specify the body of the request with the
         *                      schema describing it's structure.
         *      </ul>
@@ -553,7 +553,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      {@link OpenApiParser} will be used to parse POJOs from response 
bodies unless overridden per request via {@link RestRequest#parser(Parser)}.
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
-        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *              <li>Typically the {@link 
ResponseBody#schema(HttpPartSchema)} method will be used to specify the 
structure of the response body.
         *      </ul>
         * <p>
@@ -585,7 +585,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *
         * <p>
         *      The serializer is not modified by an of the serializer property 
setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *
         * <p>
         * If the <c>Content-Type</c> header is not set on the request, it will 
be set to the media type of this serializer.
@@ -606,7 +606,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *
         * <p>
         *      The serializer can be configured using any of the serializer 
property setters (e.g. {@link RestClientBuilder#sortCollections()}),
-        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *
         * <p>
         * If the <c>Content-Type</c> header is not set on the request, it will 
be set to the media type of this serializer.
@@ -627,7 +627,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *
         * <p>
         *      The parser is not modified by any of the parser property 
setters (e.g. {@link RestClientBuilder#strict()}),
-        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *
         * <p>
         * If the <c>Accept</c> header is not set on the request, it will be 
set to the media type of this parser.
@@ -648,7 +648,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *
         * <p>
         *      The parser can be configured using any of the parser property 
setters (e.g. {@link RestClientBuilder#strict()}),
-        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
+        *      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Class...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
         *
         * <p>
         * If the <c>Accept</c> header is not set on the request, it will be 
set to the media type of this parser.
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
index 1a02472..d1e9ae3 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
@@ -621,7 +621,7 @@ public class MockRestClientBuilder extends 
RestClientBuilder {
        }
 
        @Override /* GENERATED - BeanContextBuilder */
-       public MockRestClientBuilder swaps(Object...values) {
+       public MockRestClientBuilder swaps(Class<?>...values) {
                super.swaps(values);
                return this;
        }
diff --git 
a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
 
b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
index c30c4c4..3e36f71 100644
--- 
a/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
+++ 
b/juneau-rest/juneau-rest-server-jaxrs/src/main/java/org/apache/juneau/rest/jaxrs/BaseProvider.java
@@ -53,13 +53,13 @@ public class BaseProvider implements 
MessageBodyReader<Object>, MessageBodyWrite
 
                        serializers = SerializerGroup.create()
                                .add(jp.serializers())
-                               .forEach(x -> x.swaps((Object[])jp.swaps()))
+                               .forEach(x -> x.swaps(jp.swaps()))
                                .forEach(x -> x.set(properties))
                                .build();
 
                        parsers = ParserGroup.create()
                                .add(jp.parsers())
-                               .forEach(x -> x.swaps((Object[])jp.swaps()))
+                               .forEach(x -> x.swaps(jp.swaps()))
                                .forEach(x -> x.set(properties))
                                .build();
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
index bfc2064..3a0899c 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/ComboRoundTripTest.java
@@ -63,7 +63,7 @@ public abstract class ComboRoundTripTest {
                        s2 = applySettings(s);
                        if (! (comboInput.swaps.isEmpty() && 
comboInput.beanContextApplies.isEmpty())) {
                                SerializerBuilder b = s2.copy();
-                               b.swaps(comboInput.swaps.toArray());
+                               
b.swaps((Class<?>[])comboInput.swaps.toArray(new Class[0]));
                                for (Consumer<BeanContextBuilder> c : 
(List<Consumer<BeanContextBuilder>>)comboInput.beanContextApplies)
                                        b.beanContext(c);
                                s2 = b.build();
@@ -79,7 +79,7 @@ public abstract class ComboRoundTripTest {
                        p2 = applySettings(p);
                        if (! (comboInput.swaps.isEmpty() && 
comboInput.beanContextApplies.isEmpty())) {
                                ParserBuilder b = p2.copy();
-                               b.swaps(comboInput.swaps.toArray());
+                               
b.swaps((Class<?>[])comboInput.swaps.toArray(new Class[0]));
                                for (Consumer<BeanContextBuilder> c : 
(List<Consumer<BeanContextBuilder>>)comboInput.beanContextApplies)
                                        b.beanContext(c);
                                p2 = b.build();
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
index fd40071..5ece9cd 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
@@ -41,7 +41,7 @@ public class RoundTripMapsTest extends RoundTripTest {
        }
 
        @Override /* RoundTripTest */
-       public Object[] getPojoSwaps() {
+       public Class<?>[] getPojoSwaps() {
                return new Class<?>[]{
                        ByteArraySwap.Base64.class,
                };
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 0d24e26..90f6c1a 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -211,7 +211,7 @@ public abstract class RoundTripTest {
                return new Object[0];
        }
 
-       public Object[] getPojoSwaps() {
+       public Class<?>[] getPojoSwaps() {
                return new Class<?>[0];
        }
 
@@ -255,7 +255,7 @@ public abstract class RoundTripTest {
                return p;
        }
 
-       protected void swaps(Object...c) {
+       protected void swaps(Class<?>...c) {
                s = s.copy().swaps(c).build();
                if (p != null)
                        p = p.copy().swaps(c).build();
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
index f2911ed..999b94a 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
@@ -51,7 +51,7 @@ public class RoundTripTransformBeansTest extends 
RoundTripTest {
        
//====================================================================================================
        @Test
        public void testSwapBeans1() throws Exception {
-               Object[] f = {
+               Class<?>[] f = {
                        ByteArraySwap.Base64.class
                };
                swaps(f);
@@ -153,7 +153,7 @@ public class RoundTripTransformBeansTest extends 
RoundTripTest {
        
//====================================================================================================
        @Test
        public void testSwapBeans2() throws Exception {
-               Object[] f = {
+               Class<?>[] f = {
                        ByteArraySwap.Base64.class
                };
                swaps(f);
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
index cd4fd39..6906260 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
@@ -72,13 +72,13 @@ public class RestClient_Config_Context_Test {
 
        @Test
        public void a03_appendToStringObject() throws Exception {
-               A3a x = 
client().appendTo(BEAN_swaps,A3b.class).build().post("/echoBody",A3a.get()).run().cacheBody().assertBody().is("1").getBody().asType(A3a.class);
+               A3a x = 
client().swaps(A3b.class).build().post("/echoBody",A3a.get()).run().cacheBody().assertBody().is("1").getBody().asType(A3a.class);
                assertEquals(1,x.foo);
        }
 
        @Test
        public void a04_prependToStringObject() throws Exception {
-               A3a x = 
client().prependTo(BEAN_swaps,A3b.class).build().post("/echoBody",A3a.get()).run().cacheBody().assertBody().is("1").getBody().asType(A3a.class);
+               A3a x = 
client().swaps(A3b.class).build().post("/echoBody",A3a.get()).run().cacheBody().assertBody().is("1").getBody().asType(A3a.class);
                assertEquals(1,x.foo);
        }
 
@@ -117,12 +117,6 @@ public class RestClient_Config_Context_Test {
        }
 
        @Test
-       public void a07_removeFrom() throws Exception {
-               A3a x = 
client().appendTo(BEAN_swaps,A3b.class).removeFrom(BEAN_swaps,A3b.class).build().post("/echoBody",A3a.get()).run().cacheBody().assertBody().is("{foo:1}").getBody().asType(A3a.class);
-               assertEquals(1,x.foo);
-       }
-
-       @Test
        public void a09_annotations() throws Exception {
                
client().annotations(BeanAnnotation.create(A6a.class).sort(true).build()).build().post("/echoBody",A6a.get()).run().cacheBody().assertBody().is("{bar:2,baz:3,foo:1}").getBody().asType(A6a.class);
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/DefaultSwapsTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/DefaultSwapsTest.java
index d3cfcd5..24ee679 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/DefaultSwapsTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/DefaultSwapsTest.java
@@ -51,19 +51,19 @@ public class DefaultSwapsTest {
 
        private static final WriterSerializer SERIALIZER = 
SimpleJsonSerializer.DEFAULT;
 
-       private void test(String expected, Object o) throws Exception {
+       private void test1(String expected, Object o) throws Exception {
                assertEquals(expected, SERIALIZER.serialize(o));
        }
 
-       private void test(String expected, Object o, Class<?> configClass) 
throws Exception {
+       private void test2(String expected, Object o, Class<?> configClass) 
throws Exception {
                assertEquals(expected, 
SERIALIZER.copy().applyAnnotations(configClass).build().serialize(o));
        }
 
-       private void test(String expected, Object o, PojoSwap<?,?> swap) throws 
Exception {
+       private void test3(String expected, Object o, Class<?> swap) throws 
Exception {
                assertEquals(expected, 
SERIALIZER.copy().swaps(swap).build().serializeToString(o));
        }
 
-       private void test(String expected, Object o, PojoSwap<?,?> swap, 
Class<?> configClass) throws Exception {
+       private void test4(String expected, Object o, Class<?> swap, Class<?> 
configClass) throws Exception {
                assertEquals(expected, 
SERIALIZER.copy().swaps(swap).applyAnnotations(configClass).build().serializeToString(o));
        }
 
@@ -91,17 +91,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void a01_Enumeration() throws Exception {
-               test("['foo','bar']", A.elements());
+               test1("['foo','bar']", A.elements());
        }
 
        @Test
        public void a02_Enumeration_overrideSwap() throws Exception {
-               test("'FOO'", A.elements(), new ASwap());
+               test3("'FOO'", A.elements(), ASwap.class);
        }
 
        @Test
        public void a03_Enumeration_overrideAnnotation() throws Exception {
-               test("{f1:['foo','bar'],f2:'FOO'}", new ABean());
+               test1("{f1:['foo','bar'],f2:'FOO'}", new ABean());
        }
 
        private static Vector<String> Ac = new Vector<>();
@@ -130,17 +130,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void a01c_Enumeration_usingConfig() throws Exception {
-               test("['foo','bar']", Ac.elements(), AcBeanConfig.class);
+               test2("['foo','bar']", Ac.elements(), AcBeanConfig.class);
        }
 
        @Test
        public void a02c_Enumeration_overrideSwap_usingConfig() throws 
Exception {
-               test("'FOO'", Ac.elements(), new AcSwap(), AcBeanConfig.class);
+               test4("'FOO'", Ac.elements(), AcSwap.class, AcBeanConfig.class);
        }
 
        @Test
        public void a03c_Enumeration_overrideAnnotation_usingConfig() throws 
Exception {
-               test("{f1:['foo','bar'],f2:'FOO'}", new AcBean(), 
AcBeanConfig.class);
+               test2("{f1:['foo','bar'],f2:'FOO'}", new AcBean(), 
AcBeanConfig.class);
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -163,17 +163,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void b01_Iterator() throws Exception {
-               test("['foo','bar']", B.iterator());
+               test1("['foo','bar']", B.iterator());
        }
 
        @Test
        public void b02_Iterator_overrideSwap() throws Exception {
-               test("'FOO'", B.iterator(), new BSwap());
+               test3("'FOO'", B.iterator(), BSwap.class);
        }
 
        @Test
        public void b03_Iterator_overrideAnnotation() throws Exception {
-               test("{f1:['foo','bar'],f2:'FOO'}", new BBean());
+               test1("{f1:['foo','bar'],f2:'FOO'}", new BBean());
        }
 
        private static List<String> Bc = AList.of("foo","bar");
@@ -197,17 +197,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void b01c_Iterator_usingConfig() throws Exception {
-               test("['foo','bar']", Bc.iterator(), BcBeanConfig.class);
+               test2("['foo','bar']", Bc.iterator(), BcBeanConfig.class);
        }
 
        @Test
        public void b02c_Iterator_overrideSwap_usingConfig() throws Exception {
-               test("'FOO'", Bc.iterator(), new BcSwap(), BcBeanConfig.class);
+               test4("'FOO'", Bc.iterator(), BcSwap.class, BcBeanConfig.class);
        }
 
        @Test
        public void b03c_Iterator_overrideAnnotation_usingConfig() throws 
Exception {
-               test("{f1:['foo','bar'],f2:'FOO'}", new BcBean(), 
BcBeanConfig.class);
+               test2("{f1:['foo','bar'],f2:'FOO'}", new BcBean(), 
BcBeanConfig.class);
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -230,17 +230,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void c01_Locale() throws Exception {
-               test("'ja-JP'", C);
+               test1("'ja-JP'", C);
        }
 
        @Test
        public void c02_Locale_overrideSwap() throws Exception {
-               test("'FOO'", C, new CSwap());
+               test3("'FOO'", C, CSwap.class);
        }
 
        @Test
        public void c03_Locale_overrideAnnotation() throws Exception {
-               test("{f1:'ja-JP',f2:'FOO'}", new CBean());
+               test1("{f1:'ja-JP',f2:'FOO'}", new CBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -263,17 +263,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void d01_Calendar() throws Exception {
-               test("'2012-12-21T12:34:56Z'", D);
+               test1("'2012-12-21T12:34:56Z'", D);
        }
 
        @Test
        public void d02_Calendar_overrideSwap() throws Exception {
-               test("'FOO'", D, new DSwap());
+               test3("'FOO'", D, DSwap.class);
        }
 
        @Test
        public void d03_Calendar_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21T12:34:56Z',f2:'FOO'}", new DBean());
+               test1("{f1:'2012-12-21T12:34:56Z',f2:'FOO'}", new DBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -296,17 +296,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void e01_Date() throws Exception {
-               test("'2012-12-21T07:34:56'", E);
+               test1("'2012-12-21T07:34:56'", E);
        }
 
        @Test
        public void e02_Date_overrideSwap() throws Exception {
-               test("'FOO'", E, new ESwap());
+               test3("'FOO'", E, ESwap.class);
        }
 
        @Test
        public void e03_Date_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21T07:34:56',f2:'FOO'}", new EBean());
+               test1("{f1:'2012-12-21T07:34:56',f2:'FOO'}", new EBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -329,17 +329,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fa01_Instant() throws Exception {
-               test("'2012-12-21T12:34:56Z'", FA);
+               test1("'2012-12-21T12:34:56Z'", FA);
        }
 
        @Test
        public void fa02_Instant_overrideSwap() throws Exception {
-               test("'FOO'", FA, new FASwap());
+               test3("'FOO'", FA, FASwap.class);
        }
 
        @Test
        public void fa03_Instant_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21T12:34:56Z',f2:'FOO'}", new FABean());
+               test1("{f1:'2012-12-21T12:34:56Z',f2:'FOO'}", new FABean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -362,17 +362,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fb01_ZonedDateTime() throws Exception {
-               test("'2012-12-21T12:34:56Z'", FB);
+               test1("'2012-12-21T12:34:56Z'", FB);
        }
 
        @Test
        public void fb02_ZonedDateTime_overrideSwap() throws Exception {
-               test("'FOO'", FB, new FBSwap());
+               test3("'FOO'", FB, FBSwap.class);
        }
 
        @Test
        public void fb03_ZonedDateTime_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21T12:34:56Z',f2:'FOO'}", new FBBean());
+               test1("{f1:'2012-12-21T12:34:56Z',f2:'FOO'}", new FBBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -395,17 +395,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fc01_LocalDate() throws Exception {
-               test("'2012-12-21'", FC);
+               test1("'2012-12-21'", FC);
        }
 
        @Test
        public void fc02_LocalDate_overrideSwap() throws Exception {
-               test("'FOO'", FC, new FCSwap());
+               test3("'FOO'", FC, FCSwap.class);
        }
 
        @Test
        public void fc03_LocalDate_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21',f2:'FOO'}", new FCBean());
+               test1("{f1:'2012-12-21',f2:'FOO'}", new FCBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -428,17 +428,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fd01_LocalDateTime() throws Exception {
-               test("'2012-12-21T12:34:56'", FD);
+               test1("'2012-12-21T12:34:56'", FD);
        }
 
        @Test
        public void fd02_LocalDateTime_overrideSwap() throws Exception {
-               test("'FOO'", FD, new FDSwap());
+               test3("'FOO'", FD, FDSwap.class);
        }
 
        @Test
        public void fd03_LocalDateTime_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21T12:34:56',f2:'FOO'}", new FDBean());
+               test1("{f1:'2012-12-21T12:34:56',f2:'FOO'}", new FDBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -461,17 +461,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fe01_LocalTime() throws Exception {
-               test("'12:34:56'", FE);
+               test1("'12:34:56'", FE);
        }
 
        @Test
        public void fe02_LocalTime_overrideSwap() throws Exception {
-               test("'FOO'", FE, new FESwap());
+               test3("'FOO'", FE, FESwap.class);
        }
 
        @Test
        public void fe03_LocalTime_overrideAnnotation() throws Exception {
-               test("{f1:'12:34:56',f2:'FOO'}", new FEBean());
+               test1("{f1:'12:34:56',f2:'FOO'}", new FEBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -494,17 +494,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void ff01_OffsetDateTime() throws Exception {
-               test("'2012-12-21T12:34:56-05:00'", FF);
+               test1("'2012-12-21T12:34:56-05:00'", FF);
        }
 
        @Test
        public void ff02_OffsetDateTime_overrideSwap() throws Exception {
-               test("'FOO'", FF, new FFSwap());
+               test3("'FOO'", FF, FFSwap.class);
        }
 
        @Test
        public void ff03_OffsetDateTime_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21T12:34:56-05:00',f2:'FOO'}", new FFBean());
+               test1("{f1:'2012-12-21T12:34:56-05:00',f2:'FOO'}", new 
FFBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -527,17 +527,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fg01_OffsetTime() throws Exception {
-               test("'12:34:56-05:00'", FG);
+               test1("'12:34:56-05:00'", FG);
        }
 
        @Test
        public void fg02_OffsetTime_overrideSwap() throws Exception {
-               test("'FOO'", FG, new FGSwap());
+               test3("'FOO'", FG, FGSwap.class);
        }
 
        @Test
        public void fg03_OffsetTime_overrideAnnotation() throws Exception {
-               test("{f1:'12:34:56-05:00',f2:'FOO'}", new FGBean());
+               test1("{f1:'12:34:56-05:00',f2:'FOO'}", new FGBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -560,17 +560,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fh01_Year() throws Exception {
-               test("'2012'", FH);
+               test1("'2012'", FH);
        }
 
        @Test
        public void fh02_Year_overrideSwap() throws Exception {
-               test("'FOO'", FH, new FHSwap());
+               test3("'FOO'", FH, FHSwap.class);
        }
 
        @Test
        public void fh03_Year_overrideAnnotation() throws Exception {
-               test("{f1:'2012',f2:'FOO'}", new FHBean());
+               test1("{f1:'2012',f2:'FOO'}", new FHBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -593,17 +593,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fi01_YearMonth() throws Exception {
-               test("'2012-12'", FI);
+               test1("'2012-12'", FI);
        }
 
        @Test
        public void fi02_YearMonth_overrideSwap() throws Exception {
-               test("'FOO'", FI, new FISwap());
+               test3("'FOO'", FI, FISwap.class);
        }
 
        @Test
        public void fi03_YearMonth_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12',f2:'FOO'}", new FIBean());
+               test1("{f1:'2012-12',f2:'FOO'}", new FIBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -626,17 +626,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void fj01_Temporal() throws Exception {
-               test("'2012-12-21T05:00:00Z'", FJ);
+               test1("'2012-12-21T05:00:00Z'", FJ);
        }
 
        @Test
        public void fj02_Temporal_overrideSwap() throws Exception {
-               test("'FOO'", FJ, new FJSwap());
+               test3("'FOO'", FJ, FJSwap.class);
        }
 
        @Test
        public void fj03_Temporal_overrideAnnotation() throws Exception {
-               test("{f1:'2012-12-21T05:00:00Z',f2:'FOO'}", new FJBean());
+               test1("{f1:'2012-12-21T05:00:00Z',f2:'FOO'}", new FJBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -659,17 +659,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void g01_TimeZone() throws Exception {
-               test("'GMT'", G);
+               test1("'GMT'", G);
        }
 
        @Test
        public void g02_TimeZone_overrideSwap() throws Exception {
-               test("'FOO'", G, new GSwap());
+               test3("'FOO'", G, GSwap.class);
        }
 
        @Test
        public void g03_TimeZone_overrideAnnotation() throws Exception {
-               test("{f1:'GMT',f2:'FOO'}", new GBean());
+               test1("{f1:'GMT',f2:'FOO'}", new GBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -699,17 +699,17 @@ public class DefaultSwapsTest {
 
        @Test
        public void h01_XMLGregorianCalendar() throws Exception {
-               test("'2012-12-21T12:34:56.789Z'", H);
+               test1("'2012-12-21T12:34:56.789Z'", H);
        }
 
        @Test
        public void h02_XMLGregorianCalendar_overrideSwap() throws Exception {
-               test("'FOO'", H, new HSwap());
+               test3("'FOO'", H, HSwap.class);
        }
 
        @Test
        public void h03_XMLGregorianCalendar_overrideAnnotation() throws 
Exception {
-               test("{f1:'2012-12-21T12:34:56.789Z',f2:'FOO'}", new HBean());
+               test1("{f1:'2012-12-21T12:34:56.789Z',f2:'FOO'}", new HBean());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -732,16 +732,16 @@ public class DefaultSwapsTest {
 
        @Test
        public void i01_ZoneId() throws Exception {
-               test("'Z'", I);
+               test1("'Z'", I);
        }
 
        @Test
        public void i02_ZoneId_overrideSwap() throws Exception {
-               test("'FOO'", I, new ISwap());
+               test3("'FOO'", I, ISwap.class);
        }
 
        @Test
        public void i03_ZoneId_overrideAnnotation() throws Exception {
-               test("{f1:'Z',f2:'FOO'}", new IBean());
+               test1("{f1:'Z',f2:'FOO'}", new IBean());
        }
 }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
index 26559d0..6bddf05 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
@@ -91,7 +91,7 @@ public class ReaderFilterTest {
                r = reader("{foo:'bar',baz:'quz'}");
                m = new HashMap<>();
                m.put("X", r);
-               assertEquals("{X:'{foo:\\'bar\\',baz:\\'quz\\'}'}", 
s.serialize(m));
+               assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
        }
 
        
//====================================================================================================

Reply via email to