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 c06a7bb485 org.apache.juneau.common.reflect API improvements
c06a7bb485 is described below

commit c06a7bb485d00aca1ba72115fefb84b46045c7ac
Author: James Bognar <[email protected]>
AuthorDate: Mon Nov 24 11:04:51 2025 -0500

    org.apache.juneau.common.reflect API improvements
---
 .../juneau/common/annotation/AnnotationObject.java |   7 +-
 .../common/annotation/AppliedAnnotationObject.java | 125 +++++++--------------
 .../annotation/AppliedOnClassAnnotationObject.java |   2 +-
 .../common/collections/ControlledArrayList.java    |   4 +-
 .../juneau/common/collections/ReversedList.java    |   2 +-
 .../juneau/common/io/CharSequenceReader.java       |   2 +-
 .../apache/juneau/common/io/PathReaderBuilder.java |  10 +-
 .../apache/juneau/common/io/ReaderInputStream.java |  16 +--
 .../juneau/common/utils/CollectionUtils.java       |   2 +-
 .../org/apache/juneau/common/utils/DateUtils.java  |   4 +-
 .../java/org/apache/juneau/config/Section.java     |   2 +-
 .../apache/juneau/config/internal/ConfigMap.java   |   4 +-
 .../juneau/jena/annotation/RdfAnnotation.java      |  26 ++---
 .../src/main/java/org/apache/juneau/BeanMeta.java  |   2 +-
 .../apache/juneau/annotation/BeanAnnotation.java   |  22 +++-
 .../juneau/annotation/BeanIgnoreAnnotation.java    |  38 ++++++-
 .../apache/juneau/annotation/BeancAnnotation.java  |  14 ++-
 .../apache/juneau/annotation/BeanpAnnotation.java  |  20 +++-
 .../juneau/annotation/ExampleAnnotation.java       |  32 +++++-
 .../juneau/annotation/ExternalDocsAnnotation.java  |   2 +-
 .../apache/juneau/annotation/ItemsAnnotation.java  |   5 +-
 .../juneau/annotation/MarshalledAnnotation.java    |  19 +++-
 .../juneau/annotation/NamePropertyAnnotation.java  |  22 +++-
 .../annotation/ParentPropertyAnnotation.java       |  22 +++-
 .../apache/juneau/annotation/SchemaAnnotation.java |  39 ++++++-
 .../juneau/annotation/SubItemsAnnotation.java      |   5 +-
 .../apache/juneau/annotation/SwapAnnotation.java   |  33 +++++-
 .../apache/juneau/annotation/UriAnnotation.java    |  34 +++++-
 .../org/apache/juneau/collections/JsonList.java    |   4 +-
 .../java/org/apache/juneau/cp/BasicFileFinder.java |   2 +-
 .../juneau/csv/annotation/CsvAnnotation.java       |  33 +++++-
 .../juneau/html/annotation/HtmlAnnotation.java     |  33 +++++-
 .../juneau/html/annotation/HtmlLinkAnnotation.java |  19 +++-
 .../juneau/http/annotation/ContactAnnotation.java  |   4 +-
 .../juneau/http/annotation/ContentAnnotation.java  |  26 ++++-
 .../juneau/http/annotation/FormDataAnnotation.java |  32 +++++-
 .../http/annotation/HasFormDataAnnotation.java     |   2 +-
 .../juneau/http/annotation/HasQueryAnnotation.java |   2 +-
 .../juneau/http/annotation/HeaderAnnotation.java   |  33 +++++-
 .../juneau/http/annotation/LicenseAnnotation.java  |   2 +-
 .../juneau/http/annotation/PathAnnotation.java     |  33 +++++-
 .../http/annotation/PathRemainderAnnotation.java   |  34 +++++-
 .../juneau/http/annotation/QueryAnnotation.java    |  33 +++++-
 .../juneau/http/annotation/RequestAnnotation.java  |  19 +++-
 .../juneau/http/annotation/ResponseAnnotation.java |  27 ++++-
 .../http/annotation/StatusCodeAnnotation.java      |  27 ++++-
 .../juneau/http/annotation/TagAnnotation.java      |   2 +-
 .../org/apache/juneau/internal/FilteredMap.java    |   2 +-
 .../juneau/json/annotation/JsonAnnotation.java     |  33 +++++-
 .../msgpack/annotation/MsgPackAnnotation.java      |  34 +++++-
 .../juneau/oapi/annotation/OpenApiAnnotation.java  |  34 +++++-
 .../plaintext/annotation/PlainTextAnnotation.java  |  34 +++++-
 .../juneau/soap/annotation/SoapXmlAnnotation.java  |  34 +++++-
 .../juneau/uon/annotation/UonAnnotation.java       |  34 +++++-
 .../annotation/UrlEncodingAnnotation.java          |  33 +++++-
 .../juneau/xml/annotation/XmlAnnotation.java       |  33 +++++-
 .../apache/juneau/rest/client/ResponseContent.java |   6 +-
 .../org/apache/juneau/rest/client/RestClient.java  |   8 +-
 .../rest/client/remote/RemoteOperationMeta.java    |   2 +-
 .../rest/annotation/OpSwaggerAnnotation.java       |   2 +-
 .../juneau/rest/annotation/RestAnnotation.java     |  18 ++-
 .../rest/annotation/RestDeleteAnnotation.java      |  14 ++-
 .../rest/annotation/RestDestroyAnnotation.java     |  13 ++-
 .../rest/annotation/RestEndCallAnnotation.java     |  13 ++-
 .../juneau/rest/annotation/RestGetAnnotation.java  |  14 ++-
 .../juneau/rest/annotation/RestInitAnnotation.java |  13 ++-
 .../rest/annotation/RestInjectAnnotation.java      |  13 ++-
 .../juneau/rest/annotation/RestOpAnnotation.java   |  16 ++-
 .../rest/annotation/RestOptionsAnnotation.java     |  14 ++-
 .../rest/annotation/RestPatchAnnotation.java       |  14 ++-
 .../juneau/rest/annotation/RestPostAnnotation.java |  14 ++-
 .../rest/annotation/RestPostCallAnnotation.java    |  13 ++-
 .../rest/annotation/RestPostInitAnnotation.java    |  13 ++-
 .../rest/annotation/RestPreCallAnnotation.java     |  13 ++-
 .../juneau/rest/annotation/RestPutAnnotation.java  |  14 ++-
 .../rest/annotation/RestStartCallAnnotation.java   |  13 ++-
 .../juneau/rest/annotation/SwaggerAnnotation.java  |   2 +-
 77 files changed, 1192 insertions(+), 203 deletions(-)

diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
index a4e6afcc5a..0612031424 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AnnotationObject.java
@@ -17,7 +17,6 @@
 package org.apache.juneau.common.annotation;
 
 import static java.util.Arrays.*;
-import static org.apache.juneau.common.utils.CollectionUtils.copyOf;
 import static org.apache.juneau.common.utils.ThrowableUtils.*;
 import static org.apache.juneau.common.utils.Utils.*;
 
@@ -47,10 +46,8 @@ public class AnnotationObject implements Annotation {
 
        /**
         * Builder for {@link AnnotationObject} objects.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class Builder<B> {
+       public static class Builder {
 
                private Class<? extends Annotation> annotationType;
 
@@ -83,7 +80,7 @@ public class AnnotationObject implements Annotation {
         *
         * @param b The builder used to instantiate the fields of this class.
         */
-       public AnnotationObject(Builder<?> b) {
+       public AnnotationObject(Builder b) {
                this.annotationType = b.getAnnotationType();
        }
 
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
index 43c19cdd83..ef44879c6b 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedAnnotationObject.java
@@ -34,10 +34,8 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
 
        /**
         * Builder for {@link AppliedAnnotationObject} objects.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class Builder<B> extends AnnotationObject.Builder<B> {
+       public static class Builder extends AnnotationObject.Builder {
 
                String[] on = {};
 
@@ -56,20 +54,17 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param values The targets this annotation applies to.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(String...values) {
+               public Builder on(String...values) {
                        for (var v : values)
                                on = addAll(on, v);
-                       return (B)this;
+                       return this;
                }
        }
 
        /**
         * Builder for applied annotations targeting classes.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class BuilderT<B> extends Builder<B> {
+       public static class BuilderT extends Builder {
 
                Class<?>[] onClass = {};
 
@@ -88,11 +83,10 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Class<?>...value) {
+               public BuilderT on(Class<?>...value) {
                        for (var v : value)
                                on = addAll(on, v.getName());
-                       return (B)this;
+                       return this;
                }
 
                /**
@@ -102,19 +96,17 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @return This object.
                 */
                @SuppressWarnings("unchecked")
-               public B onClass(Class<?>...value) {
+               public BuilderT onClass(Class<?>...value) {
                        for (var v : value)
                                onClass = addAll(onClass, v);
-                       return (B)this;
+                       return this;
                }
        }
 
        /**
         * Builder for applied annotations targeting methods.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class BuilderM<B> extends Builder<B> {
+       public static class BuilderM extends Builder {
 
                /**
                 * Constructor.
@@ -131,20 +123,17 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Method...value) {
+               public BuilderM on(Method...value) {
                        for (var v : value)
                                on(info(v).getFullName());
-                       return (B)this;
+                       return this;
                }
        }
 
        /**
         * Builder for applied annotations targeting constructors.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class BuilderC<B> extends Builder<B> {
+       public static class BuilderC extends Builder {
 
                /**
                 * Constructor.
@@ -161,20 +150,17 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Constructor<?>...value) {
+               public BuilderC on(Constructor<?>...value) {
                        for (var v : value)
                                on(info(v).getFullName());
-                       return (B)this;
+                       return this;
                }
        }
 
        /**
         * Builder for applied annotations targeting methods and fields.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class BuilderMF<B> extends Builder<B> {
+       public static class BuilderMF extends Builder {
 
                /**
                 * Constructor.
@@ -191,11 +177,10 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Field...value) {
+               public BuilderMF on(Field...value) {
                        for (var v : value)
                                on(info(v).getFullName());
-                       return (B)this;
+                       return this;
                }
 
                /**
@@ -204,20 +189,17 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Method...value) {
+               public BuilderMF on(Method...value) {
                        for (var v : value)
                                on(info(v).getFullName());
-                       return (B)this;
+                       return this;
                }
        }
 
        /**
         * Builder for applied annotations targeting classes and methods.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class BuilderTM<B> extends BuilderT<B> {
+       public static class BuilderTM extends BuilderT {
 
                /**
                 * Constructor.
@@ -234,20 +216,29 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Method...value) {
+               public BuilderTM on(Method...value) {
                        for (var v : value)
                                on(info(v).getFullName());
-                       return (B)this;
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public BuilderTM on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public BuilderTM onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
                }
        }
 
        /**
         * Builder for applied annotations targeting classes, methods, and 
fields.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class BuilderTMF<B> extends BuilderT<B> {
+       public static class BuilderTMF extends BuilderT {
 
                /**
                 * Constructor.
@@ -264,11 +255,10 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Field...value) {
+               public BuilderTMF on(Field...value) {
                        for (var v : value)
                                on(info(v).getFullName());
-                       return (B)this;
+                       return this;
                }
 
                /**
@@ -277,35 +267,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Method...value) {
-                       for (var v : value)
-                               on(info(v).getFullName());
-                       return (B)this;
-               }
-       }
-
-       /**
-        * Builder for applied annotations targeting methods, fields, and 
constructors.
-        */
-       public static class BuilderMFC extends BuilderMF<BuilderMFC> {
-
-               /**
-                * Constructor.
-                *
-                * @param annotationType The annotation type of the annotation 
implementation class.
-                */
-               public BuilderMFC(Class<? extends Annotation> annotationType) {
-                       super(annotationType);
-               }
-
-               /**
-                * Appends the constructors that this annotation applies to.
-                *
-                * @param value The values to append.
-                * @return This object.
-                */
-               public BuilderMFC on(Constructor<?>...value) {
+               public BuilderTMF on(Method...value) {
                        for (var v : value)
                                on(info(v).getFullName());
                        return this;
@@ -314,10 +276,8 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
 
        /**
         * Builder for applied annotations targeting classes, methods, fields, 
and constructors.
-        *
-        * @param <B> The actual builder class.
         */
-       public static class BuilderTMFC<B> extends BuilderTMF<B> {
+       public static class BuilderTMFC extends BuilderTMF {
 
                /**
                 * Constructor.
@@ -334,11 +294,10 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
                 * @param value The values to append.
                 * @return This object.
                 */
-               @SuppressWarnings("unchecked")
-               public B on(Constructor<?>...value) {
+               public BuilderTMFC on(Constructor<?>...value) {
                        for (var v : value)
                                on(info(v).getFullName());
-                       return (B)this;
+                       return this;
                }
        }
 
@@ -353,7 +312,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
         *
         * @param b The builder used to instantiate the fields of this class.
         */
-       public AppliedAnnotationObject(Builder<?> b) {
+       public AppliedAnnotationObject(Builder b) {
                super(b);
                this.on = copyOf(b.on);
        }
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedOnClassAnnotationObject.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedOnClassAnnotationObject.java
index c6d38912ac..290052077b 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedOnClassAnnotationObject.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedOnClassAnnotationObject.java
@@ -31,7 +31,7 @@ public class AppliedOnClassAnnotationObject extends 
AppliedAnnotationObject {
         *
         * @param b The builder used to instantiate the fields of this class.
         */
-       public AppliedOnClassAnnotationObject(BuilderT<?> b) {
+       public AppliedOnClassAnnotationObject(BuilderT b) {
                super(b);
                this.onClass = copyOf(b.onClass);
        }
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ControlledArrayList.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ControlledArrayList.java
index 13e91fcef0..710f95bfff 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ControlledArrayList.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ControlledArrayList.java
@@ -130,7 +130,7 @@ public class ControlledArrayList<E> extends ArrayList<E> {
        }
 
        @Override
-       public ListIterator<E> listIterator(final int index) {
+       public ListIterator<E> listIterator(int index) {
                if (! unmodifiable)
                        return overrideListIterator(index);
 
@@ -252,7 +252,7 @@ public class ControlledArrayList<E> extends ArrayList<E> {
         * @param index Index of the first element to be returned from the list 
iterator.
         * @return A list iterator over the elements in this list (in proper 
sequence), starting at the specified position in the list.
         */
-       public ListIterator<E> overrideListIterator(final int index) {
+       public ListIterator<E> overrideListIterator(int index) {
                return super.listIterator(index);
        }
 
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ReversedList.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ReversedList.java
index 8c76a056e3..4296126a94 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ReversedList.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/collections/ReversedList.java
@@ -163,7 +163,7 @@ public class ReversedList<E> extends AbstractList<E> 
implements RandomAccess {
         * @throws IndexOutOfBoundsException if the index is out of range.
         */
        @Override
-       public ListIterator<E> listIterator(final int index) {
+       public ListIterator<E> listIterator(int index) {
                if (index < 0 || index > size())
                        throw new IndexOutOfBoundsException("Index: " + index + 
", Size: " + size());
 
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/CharSequenceReader.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/CharSequenceReader.java
index b50835cad7..56ba3b63ba 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/CharSequenceReader.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/CharSequenceReader.java
@@ -70,7 +70,7 @@ public class CharSequenceReader extends BufferedReader {
        }
 
        @Override /* Overridden from Reader */
-       public int read(final char[] cbuf, final int off, final int len) {
+       public int read(char[] cbuf, final int off, final int len) {
                if (next >= length)
                        return -1;
                int n = Math.min(length - next, len);
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/PathReaderBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/PathReaderBuilder.java
index bfd25f9111..685a5686fc 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/PathReaderBuilder.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/PathReaderBuilder.java
@@ -44,7 +44,7 @@ public class PathReaderBuilder {
         * @param path The path being written to.
         * @return A new builder.
         */
-       public static PathReaderBuilder create(final Path path) {
+       public static PathReaderBuilder create(Path path) {
                return new PathReaderBuilder().path(path);
        }
 
@@ -86,7 +86,7 @@ public class PathReaderBuilder {
         * @param charset The character encoding. The default is {@link 
Charset#defaultCharset()}. Null resets to the default.
         * @return This object.
         */
-       public PathReaderBuilder charset(final Charset charset) {
+       public PathReaderBuilder charset(Charset charset) {
                this.charset = charset;
                return this;
        }
@@ -97,7 +97,7 @@ public class PathReaderBuilder {
         * @param charset The character encoding. The default is {@link 
Charset#defaultCharset()}. Null resets to the default.
         * @return This object.
         */
-       public PathReaderBuilder charset(final String charset) {
+       public PathReaderBuilder charset(String charset) {
                this.charset = nn(charset) ? Charset.forName(charset) : null;
                return this;
        }
@@ -108,7 +108,7 @@ public class PathReaderBuilder {
         * @param path The path being written from.
         * @return This object.
         */
-       public PathReaderBuilder path(final Path path) {
+       public PathReaderBuilder path(Path path) {
                this.path = path;
                return this;
        }
@@ -119,7 +119,7 @@ public class PathReaderBuilder {
         * @param path The path of the path being written from.
         * @return This object.
         */
-       public PathReaderBuilder path(final String path) {
+       public PathReaderBuilder path(String path) {
                this.path = Paths.get(path);
                return this;
        }
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/ReaderInputStream.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/ReaderInputStream.java
index e38eba9d53..8c683533f7 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/ReaderInputStream.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/io/ReaderInputStream.java
@@ -98,7 +98,7 @@ public class ReaderInputStream extends InputStream {
         * @param reader the target {@link Reader}
         * @param charset the charset encoding
         */
-       public ReaderInputStream(final Reader reader, final Charset charset) {
+       public ReaderInputStream(Reader reader, Charset charset) {
                this(reader, charset, DEFAULT_BUFFER_SIZE);
        }
 
@@ -109,7 +109,7 @@ public class ReaderInputStream extends InputStream {
         * @param charset the charset encoding
         * @param bufferSize the size of the input buffer in number of 
characters
         */
-       public ReaderInputStream(final Reader reader, final Charset charset, 
final int bufferSize) {
+       public ReaderInputStream(Reader reader, Charset charset, int 
bufferSize) {
                // @formatter:off
                this(reader,
                         charset.newEncoder()
@@ -127,7 +127,7 @@ public class ReaderInputStream extends InputStream {
         * @param encoder the charset encoder
         * @since 2.1
         */
-       public ReaderInputStream(final Reader reader, final CharsetEncoder 
encoder) {
+       public ReaderInputStream(Reader reader, CharsetEncoder encoder) {
                this(reader, encoder, DEFAULT_BUFFER_SIZE);
        }
 
@@ -138,7 +138,7 @@ public class ReaderInputStream extends InputStream {
         * @param encoder the charset encoder
         * @param bufferSize the size of the input buffer in number of 
characters
         */
-       public ReaderInputStream(final Reader reader, final CharsetEncoder 
encoder, final int bufferSize) {
+       public ReaderInputStream(Reader reader, CharsetEncoder encoder, int 
bufferSize) {
                this.reader = reader;
                this.encoder = encoder;
                this.encoderIn = CharBuffer.allocate(bufferSize);
@@ -154,7 +154,7 @@ public class ReaderInputStream extends InputStream {
         * @param reader the target {@link Reader}
         * @param charsetName the name of the charset encoding
         */
-       public ReaderInputStream(final Reader reader, final String charsetName) 
{
+       public ReaderInputStream(Reader reader, String charsetName) {
                this(reader, charsetName, DEFAULT_BUFFER_SIZE);
        }
 
@@ -165,7 +165,7 @@ public class ReaderInputStream extends InputStream {
         * @param charsetName the name of the charset encoding
         * @param bufferSize the size of the input buffer in number of 
characters
         */
-       public ReaderInputStream(final Reader reader, final String charsetName, 
final int bufferSize) {
+       public ReaderInputStream(Reader reader, String charsetName, int 
bufferSize) {
                this(reader, Charset.forName(charsetName), bufferSize);
        }
 
@@ -208,7 +208,7 @@ public class ReaderInputStream extends InputStream {
         * @throws IOException if an I/O error occurs
         */
        @Override
-       public int read(final byte[] b) throws IOException {
+       public int read(byte[] b) throws IOException {
                return read(b, 0, b.length);
        }
 
@@ -223,7 +223,7 @@ public class ReaderInputStream extends InputStream {
         * @throws IOException if an I/O error occurs
         */
        @Override
-       public int read(final byte[] array, int off, int len) throws 
IOException {
+       public int read(byte[] array, int off, int len) throws IOException {
                Objects.requireNonNull(array, "array");
                if (len < 0 || off < 0 || (off + len) > array.length) {
                        throw new IndexOutOfBoundsException("Array Size=" + 
array.length + ", offset=" + off + ", length=" + len);
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/CollectionUtils.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/CollectionUtils.java
index 3a3a1cda72..962f2f9a77 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/CollectionUtils.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/CollectionUtils.java
@@ -1287,7 +1287,7 @@ public class CollectionUtils {
         * @param array The array being wrapped in a <c>Set</c> interface.
         * @return The new set.
         */
-       public static <T> Set<T> toSet(final T[] array) {
+       public static <T> Set<T> toSet(T[] array) {
                assertArgNotNull("array", array);
                return new AbstractSet<>() {
 
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/DateUtils.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/DateUtils.java
index 4ff2fa1f9e..a993d00e34 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/DateUtils.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/utils/DateUtils.java
@@ -72,7 +72,7 @@ public class DateUtils {
                 *      This simple date-format should not be used to {@link 
SimpleDateFormat#applyPattern(String) apply} to a
                 *      different pattern.
                 */
-               public static SimpleDateFormat formatFor(final String pattern) {
+               public static SimpleDateFormat formatFor(String pattern) {
                        var ref = THREADLOCAL_FORMATS.get();
                        var formats = ref.get();
                        if (formats == null) {
@@ -130,7 +130,7 @@ public class DateUtils {
         * @throws IllegalArgumentException If the given date pattern is 
invalid.
         * @see SimpleDateFormat
         */
-       public static String formatDate(final Date date, final String pattern) {
+       public static String formatDate(Date date, String pattern) {
                return DateFormatHolder.formatFor(pattern).format(date);
        }
 
diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java
index 2ef1f3d2ed..21983b5d9e 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Section.java
@@ -185,7 +185,7 @@ public class Section {
         * @return The proxy interface.
         */
        @SuppressWarnings("unchecked")
-       public <T> Optional<T> asInterface(final Class<T> c) {
+       public <T> Optional<T> asInterface(Class<T> c) {
                assertArgNotNull("c", c);
 
                if (! c.isInterface())
diff --git 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
index 8932a08be6..43dd56fa37 100644
--- 
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
+++ 
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
@@ -161,7 +161,7 @@ public class ConfigMap implements ConfigStoreListener {
                        return this;
                }
 
-               synchronized Import register(final ConfigEventListener 
listener) {
+               synchronized Import register(ConfigEventListener listener) {
                        var l2 = (ConfigEventListener)events -> {
                                var events2 = events.stream().filter(x -> ! 
hasEntry(x.getSection(), 
x.getKey())).collect(Collectors.toCollection(ConfigEvents::new));
                                if (! events2.isEmpty())
@@ -172,7 +172,7 @@ public class ConfigMap implements ConfigStoreListener {
                        return this;
                }
 
-               synchronized Import unregister(final ConfigEventListener 
listener) {
+               synchronized Import unregister(ConfigEventListener listener) {
                        configMap.unregister(listenerMap.remove(listener));
                        return this;
                }
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
index 4ee8266e0b..1936c0e629 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
@@ -61,7 +61,7 @@ public class RdfAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String namespace = "", prefix = "";
                private boolean beanUri;
@@ -134,18 +134,6 @@ public class RdfAnnotation {
                        return this;
                }
 
-               @Override /* Overridden from AppliedAnnotationObject.Builder */
-               public Builder on(String...values) {
-                       super.on(values);
-                       return this;
-               }
-
-               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
-               public Builder onClass(Class<?>...value) {
-                       super.onClass(value);
-                       return this;
-               }
-
                /**
                 * Sets the {@link Rdf#prefix} property on this annotation.
                 *
@@ -156,6 +144,18 @@ public class RdfAnnotation {
                        this.prefix = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
index 0e3fc0a896..c9b90051a2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
@@ -886,7 +886,7 @@ public class BeanMeta<T> {
         * @param pNames Explicit list of property names and order of 
properties.  If <jk>null</jk>, determine automatically.
         * @param implClassConstructor The constructor to use if one cannot be 
found.  Can be <jk>null</jk>.
         */
-       protected BeanMeta(final ClassMeta<T> classMeta, BeanContext ctx, 
BeanFilter beanFilter, String[] pNames, ConstructorInfo implClassConstructor) {
+       protected BeanMeta(ClassMeta<T> classMeta, BeanContext ctx, BeanFilter 
beanFilter, String[] pNames, ConstructorInfo implClassConstructor) {
                this.classMeta = classMeta;
                this.ctx = ctx;
                this.c = classMeta.getInnerClass();
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
index dcde9cf5a4..e88d25b2ba 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
@@ -80,7 +80,7 @@ public class BeanAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderT {
 
                private String[] description = {};
                private Class<?>[] dictionary = new Class[0];
@@ -89,7 +89,8 @@ public class BeanAnnotation {
                private Class<?> stopClass = void.class;
                private Class<? extends BeanInterceptor<?>> interceptor = 
BeanInterceptor.Void.class;
                private Class<? extends PropertyNamer> propertyNamer = 
BasicPropertyNamer.class;
-               private String example = "", excludeProperties = "", p = "", 
properties = "", readOnlyProperties = "", ro = "", typeName = "", 
typePropertyName = "", wo = "", writeOnlyProperties = "", xp = "";
+               private String example = "", excludeProperties = "", p = "", 
properties = "", readOnlyProperties = "", ro = "", typeName = "", 
typePropertyName = "", wo = "", writeOnlyProperties = "",
+                       xp = "";
                private boolean findFluentSetters, sort;
 
                /**
@@ -328,6 +329,23 @@ public class BeanAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Bean {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
index b663ce42fd..f4ba5bc717 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class BeanIgnoreAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMFC<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMFC 
{
 
                private String[] description = {};
 
@@ -110,6 +111,41 @@ public class BeanIgnoreAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderC */
+               public Builder on(Constructor<?>...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements BeanIgnore {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
index 4220242bf2..878b01a3b4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class BeancAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderC<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderC {
 
                private String[] description = {};
                private String properties = "";
@@ -122,6 +123,17 @@ public class BeancAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderC */
+               public Builder on(Constructor<?>...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedAnnotationObject implements 
Beanc {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
index 2083cabb0c..e0c6e69a5e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class BeanpAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderMF {
 
                private String[] description = {};
                private Class<?> type = void.class;
@@ -212,6 +213,23 @@ public class BeanpAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedAnnotationObject implements 
Beanp {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
index 0956885590..8e97498a3b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class ExampleAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private String value = "";
@@ -122,6 +123,35 @@ public class ExampleAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Example {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExternalDocsAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExternalDocsAnnotation.java
index 35123f19a2..41eb7165b1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExternalDocsAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExternalDocsAnnotation.java
@@ -40,7 +40,7 @@ public class ExternalDocsAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private String url = "";
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ItemsAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ItemsAnnotation.java
index 4aab14e959..76078ff21f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ItemsAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ItemsAnnotation.java
@@ -34,12 +34,13 @@ public class ItemsAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private boolean emax, emin, exclusiveMaximum, exclusiveMinimum, 
ui, uniqueItems;
                private long maxItems = -1, maxLength = -1, maxi = -1, maxl = 
-1, minItems = -1, minLength = -1, mini = -1, minl = -1;
-               private String $ref = "", cf = "", collectionFormat = "", f = 
"", format = "", max = "", maximum = "", min = "", minimum = "", mo = "", 
multipleOf = "", p = "", pattern = "", t = "", type = "";
+               private String $ref = "", cf = "", collectionFormat = "", f = 
"", format = "", max = "", maximum = "", min = "", minimum = "", mo = "", 
multipleOf = "", p = "", pattern = "", t = "",
+                       type = "";
                private String[] _default = {}, _enum = {}, df = {}, e = {};
                private SubItems items = SubItemsAnnotation.DEFAULT;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
index 399ecbc830..d3489d2bb5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
@@ -79,7 +79,7 @@ public class MarshalledAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderT {
 
                private String[] description = {};
                private Class<?> implClass = void.class;
@@ -134,6 +134,23 @@ public class MarshalledAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Marshalled {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
index fa368516c2..41c2d43f53 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class NamePropertyAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderMF {
 
                private String[] description = {};
 
@@ -109,6 +110,25 @@ public class NamePropertyAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
NameProperty {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
index 37d44caf54..a90c939034 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class ParentPropertyAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderMF {
 
                private String[] description = {};
 
@@ -109,6 +110,25 @@ public class ParentPropertyAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
ParentProperty {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SchemaAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SchemaAnnotation.java
index 8a6cd6b0b4..40cbfc4d14 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SchemaAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SchemaAnnotation.java
@@ -22,6 +22,7 @@ import static 
org.apache.juneau.common.utils.CollectionUtils.*;
 import static org.apache.juneau.jsonschema.SchemaUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 import java.util.*;
 import java.util.function.*;
 
@@ -85,15 +86,15 @@ public class SchemaAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private boolean aev, allowEmptyValue, emax, emin, 
exclusiveMaximum, exclusiveMinimum, ignore, r, readOnly, required, ro, sie, 
skipIfEmpty, ui, uniqueItems;
                private ExternalDocs externalDocs = 
ExternalDocsAnnotation.DEFAULT;
                private Items items = ItemsAnnotation.DEFAULT;
                private long maxi = -1, maxItems = -1, maxl = -1, maxLength = 
-1, maxp = -1, maxProperties = -1, mini = -1, minItems = -1, minl = -1, 
minLength = -1, minp = -1, minProperties = -1;
-               private String $ref = "", cf = "", collectionFormat = "", 
discriminator = "", f = "", format = "", max = "", maximum = "", min = "", 
minimum = "", mo = "", multipleOf = "", p = "", pattern = "",
-                       t = "", title = "", type = "";
-               private String[] _default = {}, _enum = {}, 
additionalProperties = {}, allOf = {}, d = {}, description = {}, df = {}, e = 
{}, properties = {}, value = {}, xml = {};
+               private String $ref = "", cf = "", collectionFormat = "", 
discriminator = "", f = "", format = "", max = "", maximum = "", min = "", 
minimum = "", mo = "", multipleOf = "", p = "",
+                       pattern = "", t = "", title = "", type = "";
+               private String[] _default = {}, _enum = {}, 
additionalProperties = {}, allOf = {}, d = {}, description = {}, df = {}, e = 
{}, properties = {}, xml = {};
                private boolean deprecatedProperty;
                private String $id = "", contentMediaType = "", contentEncoding 
= "", exclusiveMaximumValue = "", exclusiveMinimumValue = "";
                private String[] _const = {}, examples = {}, $comment = {}, 
prefixItems = {}, unevaluatedItems = {}, unevaluatedProperties = {}, 
dependentSchemas = {}, dependentRequired = {}, _if = {},
@@ -933,6 +934,36 @@ public class SchemaAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Schema {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SubItemsAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SubItemsAnnotation.java
index 7b8e07e20a..076d30aefe 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SubItemsAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SubItemsAnnotation.java
@@ -40,10 +40,11 @@ public class SubItemsAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
-               private String $ref = "", cf = "", collectionFormat = "", f = 
"", format = "", max = "", maximum = "", min = "", minimum = "", mo = "", 
multipleOf = "", p = "", pattern = "", t = "", type = "";
+               private String $ref = "", cf = "", collectionFormat = "", f = 
"", format = "", max = "", maximum = "", min = "", minimum = "", mo = "", 
multipleOf = "", p = "", pattern = "", t = "",
+                       type = "";
                private long maxItems = -1, maxLength = -1, maxi = -1, maxl = 
-1, minItems = -1, minLength = -1, mini = -1, minl = -1;
                private boolean emax, emin, exclusiveMaximum, exclusiveMinimum, 
ui, uniqueItems;
                private String[] _default = {}, _enum = {}, df = {}, e = {}, 
items = {};
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
index 27c9d211c3..d21acd6b9e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class SwapAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private Class<?> impl = void.class;
@@ -158,6 +159,36 @@ public class SwapAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Swap {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
index 4d09ecdb80..a44f10e54c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class UriAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
 
@@ -109,6 +110,37 @@ public class UriAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Uri {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
index 0b01df32e7..273b8f293a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
@@ -154,7 +154,7 @@ public class JsonList extends LinkedList<Object> {
                }
 
                @Override /* Overridden from List */
-               public ListIterator<Object> listIterator(final int location) {
+               public ListIterator<Object> listIterator(int location) {
                        return Collections.emptyList().listIterator(location);
                }
 
@@ -607,7 +607,7 @@ public class JsonList extends LinkedList<Object> {
         * @param childType The child object type.
         * @return A new <c>Iterable</c> object over this list.
         */
-       public <E> Iterable<E> elements(final Class<E> childType) {
+       public <E> Iterable<E> elements(Class<E> childType) {
                final Iterator<?> iterator = iterator();
                return () -> new Iterator<>() {
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
index 35a5a7c6dc..8247cae860 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
@@ -206,7 +206,7 @@ public class BasicFileFinder implements FileFinder {
         *      <br>If <jk>null</jk>, won't look for localized file names.
         * @return An iterator of file names to look at.
         */
-       protected List<String> getCandidateFileNames(final String fileName, 
final Locale locale) {
+       protected List<String> getCandidateFileNames(String fileName, Locale 
locale) {
 
                if (locale == null)
                        return Collections.singletonList(fileName);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
index a0b5acedc9..20d631bf43 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class CsvAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
 
@@ -109,6 +110,36 @@ public class CsvAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Csv {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
index 3caa059d6d..1fdef293e7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.html.*;
@@ -84,7 +85,7 @@ public class HtmlAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private String anchorText = "", link = "", style = "";
@@ -196,6 +197,36 @@ public class HtmlAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Html {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
index fcc63f08eb..d304beb9aa 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
@@ -82,7 +82,7 @@ public class HtmlLinkAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderT {
 
                private String[] description = {};
                private String nameProperty = "", uriProperty = "";
@@ -136,6 +136,23 @@ public class HtmlLinkAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements HtmlLink {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContactAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContactAnnotation.java
index 3822a316c6..4e0fc4ff85 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContactAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContactAnnotation.java
@@ -27,6 +27,7 @@ import org.apache.juneau.common.annotation.*;
  *
  */
 public class ContactAnnotation {
+
        /**
         * Builder class.
         *
@@ -34,7 +35,7 @@ public class ContactAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private String email = "", name = "", url = "";
@@ -98,7 +99,6 @@ public class ContactAnnotation {
                        this.url = value;
                        return this;
                }
-
        }
 
        private static class Object extends AnnotationObject implements Contact 
{
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContentAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContentAnnotation.java
index c5f105fe47..2a82cb8a83 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContentAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ContentAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
@@ -80,7 +81,7 @@ public class ContentAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTM {
 
                private String def = "";
                private String[] description = {};
@@ -135,6 +136,29 @@ public class ContentAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Content {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
index 02fb519a85..d2d911c9fb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
@@ -23,6 +23,7 @@ import static org.apache.juneau.common.utils.StringUtils.*;
 import static org.apache.juneau.common.utils.Utils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -87,7 +88,7 @@ public class FormDataAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
@@ -188,6 +189,35 @@ public class FormDataAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements FormData {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasFormDataAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasFormDataAnnotation.java
index c6ebba2b27..0ee01b137e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasFormDataAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasFormDataAnnotation.java
@@ -34,7 +34,7 @@ public class HasFormDataAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private String name = "", value = "";
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasQueryAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasQueryAnnotation.java
index 669aeeb772..1e64b64cfa 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasQueryAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HasQueryAnnotation.java
@@ -34,7 +34,7 @@ public class HasQueryAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private String name = "", value = "";
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
index 448d96fad0..2d008b0414 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
@@ -23,6 +23,7 @@ import static org.apache.juneau.common.utils.StringUtils.*;
 import static org.apache.juneau.common.utils.Utils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -87,7 +88,7 @@ public class HeaderAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
@@ -188,6 +189,36 @@ public class HeaderAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Header {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/LicenseAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/LicenseAnnotation.java
index 4f3cd18e96..e03f6f76fe 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/LicenseAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/LicenseAnnotation.java
@@ -34,7 +34,7 @@ public class LicenseAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private String name = "", url = "";
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
index e6f644ae9e..af43a3646b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathAnnotation.java
@@ -24,6 +24,7 @@ import static org.apache.juneau.common.utils.StringUtils.*;
 import static org.apache.juneau.common.utils.Utils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -88,7 +89,7 @@ public class PathAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
@@ -189,6 +190,36 @@ public class PathAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Path {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathRemainderAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathRemainderAnnotation.java
index 0a52fa734e..68ffb4369f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathRemainderAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/PathRemainderAnnotation.java
@@ -22,6 +22,7 @@ import static 
org.apache.juneau.common.utils.CollectionUtils.*;
 import static org.apache.juneau.common.utils.Utils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -92,7 +93,7 @@ public class PathRemainderAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                private String[] description = {};
@@ -170,6 +171,37 @@ public class PathRemainderAnnotation {
                        this.serializer = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements PathRemainder {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
index 33f2592ac0..4c8c0e9e4d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
@@ -23,6 +23,7 @@ import static org.apache.juneau.common.utils.StringUtils.*;
 import static org.apache.juneau.common.utils.Utils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -87,7 +88,7 @@ public class QueryAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
@@ -188,6 +189,36 @@ public class QueryAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Query {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
index 9343f009bc..5bac5a260e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/RequestAnnotation.java
@@ -80,7 +80,7 @@ public class RequestAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderT {
 
                private String[] description = {};
                private Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
@@ -135,6 +135,23 @@ public class RequestAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Request {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
index f8ac7ee7b1..5b269dc29e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/ResponseAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
@@ -81,7 +82,7 @@ public class ResponseAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTM {
 
                private String[] description = {};
                private Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
@@ -172,6 +173,30 @@ public class ResponseAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Response {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCodeAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCodeAnnotation.java
index c158f7f9c9..d68fc57c7d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCodeAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/StatusCodeAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -80,7 +81,7 @@ public class StatusCodeAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTM {
 
                private String[] description = {};
                private int value[] = {};
@@ -123,6 +124,30 @@ public class StatusCodeAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements StatusCode {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/TagAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/TagAnnotation.java
index e37e9099a8..465994a716 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/TagAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/TagAnnotation.java
@@ -35,7 +35,7 @@ public class TagAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private ExternalDocs externalDocs = 
ExternalDocsAnnotation.DEFAULT;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredMap.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredMap.java
index 9d745928c3..b252ae103f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredMap.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredMap.java
@@ -86,7 +86,7 @@ public class FilteredMap<K,V> extends AbstractMap<K,V> 
implements Delegate<Map<K
        @Override /* Overridden from Delegate */
        public ClassMeta<Map<K,V>> getClassMeta() { return classMeta; }
 
-       private Map.Entry<K,V> createEntry(final K key) {
+       private Map.Entry<K,V> createEntry(K key) {
                return new Map.Entry<>() {
 
                        @Override /* Overridden from Map.Entry */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
index e277452c1d..48b68db191 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -82,7 +83,7 @@ public class JsonAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private String wrapperAttr = "";
@@ -125,6 +126,36 @@ public class JsonAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Json {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
index 870d55ee3a..41dee87018 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -82,7 +83,7 @@ public class MsgPackAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
 
@@ -112,6 +113,37 @@ public class MsgPackAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements MsgPack {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
index 95c2207029..776ef12b77 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -82,7 +83,7 @@ public class OpenApiAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
 
@@ -112,6 +113,37 @@ public class OpenApiAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements OpenApi {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
index e485b43967..b1d68e1130 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class PlainTextAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
 
@@ -109,6 +110,37 @@ public class PlainTextAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements PlainText {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
index 2acc713d73..ff3344555e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -79,7 +80,7 @@ public class SoapXmlAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
 
@@ -109,6 +110,37 @@ public class SoapXmlAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements SoapXml {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
index 11f1c44075..aab2077e5a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -82,7 +83,7 @@ public class UonAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
 
@@ -112,6 +113,37 @@ public class UonAnnotation {
                        this.description = value;
                        return this;
                }
+
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Uon {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
index 4c06cf30f2..076b0744a6 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -82,7 +83,7 @@ public class UrlEncodingAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private boolean expandedParams;
@@ -125,6 +126,36 @@ public class UrlEncodingAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements UrlEncoding {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
index 6858dcbcc2..14d2fe6c47 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
 import java.lang.annotation.*;
+import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.common.annotation.*;
@@ -82,7 +83,7 @@ public class XmlAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderTMF {
 
                private String[] description = {};
                private String childName = "", namespace = "", prefix = "";
@@ -159,6 +160,36 @@ public class XmlAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderMF 
*/
+               public Builder on(Field...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedOnClassAnnotationObject 
implements Xml {
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
index f2ac7a568d..1db4f5d09c 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
@@ -440,7 +440,7 @@ public class ResponseContent implements HttpEntity {
         *      RestClient.Builder#executorService(ExecutorService, boolean) 
for defining the executor service for creating
         *      {@link Future Futures}.
         */
-       public <T> Future<T> asFuture(final Class<T> type) throws 
RestCallException {
+       public <T> Future<T> asFuture(Class<T> type) throws RestCallException {
                return client.getExecutorService().submit(() -> as(type));
        }
 
@@ -466,7 +466,7 @@ public class ResponseContent implements HttpEntity {
         *      RestClient.Builder#executorService(ExecutorService, boolean) 
for defining the executor service for creating
         *      {@link Future Futures}.
         */
-       public <T> Future<T> asFuture(final ClassMeta<T> type) throws 
RestCallException {
+       public <T> Future<T> asFuture(ClassMeta<T> type) throws 
RestCallException {
                return client.getExecutorService().submit(() -> as(type));
        }
 
@@ -498,7 +498,7 @@ public class ResponseContent implements HttpEntity {
         *      RestClient.Builder#executorService(ExecutorService, boolean) 
for defining the executor service for creating
         *      {@link Future Futures}.
         */
-       public <T> Future<T> asFuture(final Type type, final Type...args) 
throws RestCallException {
+       public <T> Future<T> asFuture(Type type, Type...args) throws 
RestCallException {
                return client.getExecutorService().submit(() -> as(type, args));
        }
 
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 9df550b4e6..68de91f3f9 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -6822,7 +6822,7 @@ public class RestClient extends BeanContextable 
implements HttpClient, Closeable
         * @return The new proxy interface.
         */
        @SuppressWarnings({ "unchecked" })
-       public <T> T getRemote(final Class<T> interfaceClass, Object rootUrl, 
final Serializer serializer, final Parser parser) {
+       public <T> T getRemote(Class<T> interfaceClass, Object rootUrl, 
Serializer serializer, Parser parser) {
 
                if (rootUrl == null)
                        rootUrl = this.rootUrl;
@@ -7020,7 +7020,7 @@ public class RestClient extends BeanContextable 
implements HttpClient, Closeable
         * @return The new proxy interface.
         * @throws RemoteMetadataException If the REST URI cannot be determined 
based on the information given.
         */
-       public <T> T getRrpcInterface(final Class<T> interfaceClass) {
+       public <T> T getRrpcInterface(Class<T> interfaceClass) {
                return getRrpcInterface(interfaceClass, null);
        }
 
@@ -7036,7 +7036,7 @@ public class RestClient extends BeanContextable 
implements HttpClient, Closeable
         * @param uri The URI of the REST interface.
         * @return The new proxy interface.
         */
-       public <T> T getRrpcInterface(final Class<T> interfaceClass, final 
Object uri) {
+       public <T> T getRrpcInterface(Class<T> interfaceClass, Object uri) {
                return getRrpcInterface(interfaceClass, uri, null, null);
        }
 
@@ -7055,7 +7055,7 @@ public class RestClient extends BeanContextable 
implements HttpClient, Closeable
         * @return The new proxy interface.
         */
        @SuppressWarnings({ "unchecked" })
-       public <T> T getRrpcInterface(final Class<T> interfaceClass, Object 
uri, final Serializer serializer, final Parser parser) {
+       public <T> T getRrpcInterface(Class<T> interfaceClass, Object uri, 
Serializer serializer, Parser parser) {
 
                if (uri == null) {
                        var rm = new RrpcInterfaceMeta(interfaceClass, "");
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
index d26589f2be..decf0e1527 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
@@ -211,7 +211,7 @@ public class RemoteOperationMeta {
         * @param m The Java method.
         * @param defaultMethod The default HTTP method if not specified 
through annotation.
         */
-       public RemoteOperationMeta(final String parentPath, Method m, String 
defaultMethod) {
+       public RemoteOperationMeta(String parentPath, Method m, String 
defaultMethod) {
                var b = new Builder(parentPath, m, defaultMethod);
                this.httpMethod = b.httpMethod;
                this.fullPath = b.fullPath;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/OpSwaggerAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/OpSwaggerAnnotation.java
index 54032cc919..5b304c748b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/OpSwaggerAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/OpSwaggerAnnotation.java
@@ -38,7 +38,7 @@ public class OpSwaggerAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private ExternalDocs externalDocs = 
ExternalDocsAnnotation.DEFAULT;
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index f002773149..762769307a 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -58,7 +58,7 @@ public class RestAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderT {
 
                private String[] description = {};
                private Class<? extends Encoder>[] encoders = new Class[0];
@@ -626,6 +626,22 @@ public class RestAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
+               public Builder on(Class<?>...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from 
AppliedOnClassAnnotationObject.Builder */
+               public Builder onClass(Class<?>...value) {
+                       super.onClass(value);
+                       return this;
+               }
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
index 04fb260e7f..65c6dd6c98 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
@@ -48,7 +48,7 @@ public class RestDeleteAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private Class<? extends RestGuard>[] guards = new Class[0];
@@ -275,6 +275,17 @@ public class RestDeleteAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        /**
@@ -313,6 +324,7 @@ public class RestDeleteAnnotation {
                        string(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
string(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(x));
                }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestDelete {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroyAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroyAnnotation.java
index b1692a3909..e7ba561468 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroyAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDestroyAnnotation.java
@@ -57,7 +57,7 @@ public class RestDestroyAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
 
@@ -88,6 +88,17 @@ public class RestDestroyAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestDestroy {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCallAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCallAnnotation.java
index 81551175f9..b600fe5591 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCallAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCallAnnotation.java
@@ -57,7 +57,7 @@ public class RestEndCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
 
@@ -88,6 +88,17 @@ public class RestEndCallAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestEndCall {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
index d33bfa7345..ad10877d3e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
@@ -50,7 +50,7 @@ public class RestGetAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private Class<? extends RestConverter>[] converters = new 
Class[0];
@@ -314,6 +314,17 @@ public class RestGetAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        /**
@@ -355,6 +366,7 @@ public class RestGetAnnotation {
                        string(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
string(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(x));
                }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestGet {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInitAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInitAnnotation.java
index da0e55dcdc..a54e9a4b34 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInitAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInitAnnotation.java
@@ -57,7 +57,7 @@ public class RestInitAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
 
@@ -88,6 +88,17 @@ public class RestInitAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestInit {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInjectAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInjectAnnotation.java
index 92dad03016..1bb3ff8800 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInjectAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInjectAnnotation.java
@@ -54,7 +54,7 @@ public class RestInjectAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private String name, value;
@@ -120,6 +120,17 @@ public class RestInjectAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestInject {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
index 8e058025ef..89d7845baa 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
@@ -53,7 +53,7 @@ public class RestOpAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private Class<? extends RestConverter>[] converters = new 
Class[0];
@@ -386,6 +386,17 @@ public class RestOpAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        /**
@@ -442,6 +453,7 @@ public class RestOpAnnotation {
                                }
                        }
                }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestOp {
@@ -629,7 +641,7 @@ public class RestOpAnnotation {
        public static final RestOp DEFAULT = create().build();
        /**
         * Predicate that can be used to filter annotation streams.
-        * 
+        *
         * <p>
         * Example: 
<c>classInfo.getAnnotations().stream().filter(REST_OP_GROUP)</c>
         */
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptionsAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptionsAnnotation.java
index f11853e82f..b378d89165 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptionsAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptionsAnnotation.java
@@ -50,7 +50,7 @@ public class RestOptionsAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private Class<? extends RestConverter>[] converters = new 
Class[0];
@@ -314,6 +314,17 @@ public class RestOptionsAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        /**
@@ -355,6 +366,7 @@ public class RestOptionsAnnotation {
                        string(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
string(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(x));
                }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestOptions {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatchAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatchAnnotation.java
index 99a7412800..0eb5267603 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatchAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatchAnnotation.java
@@ -50,7 +50,7 @@ public class RestPatchAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private Class<? extends RestConverter>[] converters = new 
Class[0];
                private Class<? extends RestGuard>[] guards = new Class[0];
@@ -370,6 +370,17 @@ public class RestPatchAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        /**
@@ -416,6 +427,7 @@ public class RestPatchAnnotation {
                        string(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
string(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(x));
                }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestPatch {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
index 4c0a473b73..507ac1f800 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
@@ -50,7 +50,7 @@ public class RestPostAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private Class<? extends RestConverter>[] converters = new 
Class[0];
@@ -371,6 +371,17 @@ public class RestPostAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        /**
@@ -417,6 +428,7 @@ public class RestPostAnnotation {
                        string(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
string(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(x));
                }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestPost {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCallAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCallAnnotation.java
index d967aff03b..1243bf9638 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCallAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCallAnnotation.java
@@ -57,7 +57,7 @@ public class RestPostCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
 
@@ -88,6 +88,17 @@ public class RestPostCallAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestPostCall {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInitAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInitAnnotation.java
index 901d7fe598..30e4a3c77d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInitAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostInitAnnotation.java
@@ -57,7 +57,7 @@ public class RestPostInitAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private boolean childFirst;
@@ -99,6 +99,17 @@ public class RestPostInitAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestPostInit {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCallAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCallAnnotation.java
index 14b85c33fa..3820a7832f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCallAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCallAnnotation.java
@@ -57,7 +57,7 @@ public class RestPreCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
 
@@ -88,6 +88,17 @@ public class RestPreCallAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestPreCall {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
index 19039e58fe..f1a9a0484d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
@@ -50,7 +50,7 @@ public class RestPutAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
                private Class<? extends RestConverter>[] converters = new 
Class[0];
@@ -371,6 +371,17 @@ public class RestPutAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
        }
 
        /**
@@ -417,6 +428,7 @@ public class RestPutAnnotation {
                        string(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
string(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(x));
                }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestPut {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCallAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCallAnnotation.java
index bb7276e9d8..a23cf28b01 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCallAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCallAnnotation.java
@@ -57,7 +57,7 @@ public class RestStartCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
+       public static class Builder extends AppliedAnnotationObject.BuilderM {
 
                private String[] description = {};
 
@@ -88,6 +88,17 @@ public class RestStartCallAnnotation {
                        return this;
                }
 
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
+               public Builder on(String...value) {
+                       super.on(value);
+                       return this;
+               }
+               @Override /* Overridden from AppliedAnnotationObject.BuilderM */
+               public Builder on(java.lang.reflect.Method...value) {
+                       super.on(value);
+                       return this;
+               }
+
        }
 
        private static class Object extends AppliedAnnotationObject implements 
RestStartCall {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/SwaggerAnnotation.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/SwaggerAnnotation.java
index a1877cf632..df13e6672e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/SwaggerAnnotation.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/SwaggerAnnotation.java
@@ -39,7 +39,7 @@ public class SwaggerAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends AnnotationObject.Builder<Builder> {
+       public static class Builder extends AnnotationObject.Builder {
 
                private String[] description = {};
                private Contact contact = ContactAnnotation.DEFAULT;

Reply via email to