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

commit fedcd31b95febbba7ecb35a20f9041134e107eee
Author: James Bognar <[email protected]>
AuthorDate: Mon Nov 24 08:00:39 2025 -0500

    org.apache.juneau.common.reflect API improvements
---
 .../common/annotation/AppliedAnnotationObject.java | 316 ++++++++++++++++++++-
 ...mpl.java => AppliedOnTypeAnnotationObject.java} |   4 +-
 .../annotation/TargetedAnnotationBuilder.java      |  53 ----
 .../annotation/TargetedAnnotationCBuilder.java     |  52 ----
 .../annotation/TargetedAnnotationMBuilder.java     |  52 ----
 .../annotation/TargetedAnnotationMFBuilder.java    |  64 -----
 .../annotation/TargetedAnnotationMFCBuilder.java   |  50 ----
 .../annotation/TargetedAnnotationTBuilder.java     |  66 -----
 .../annotation/TargetedAnnotationTMBuilder.java    |  52 ----
 .../annotation/TargetedAnnotationTMFBuilder.java   |  64 -----
 .../annotation/TargetedAnnotationTMFCBuilder.java  |  52 ----
 .../juneau/jena/annotation/RdfAnnotation.java      |  14 +-
 .../apache/juneau/annotation/BeanAnnotation.java   |   4 +-
 .../juneau/annotation/BeanIgnoreAnnotation.java    |   4 +-
 .../apache/juneau/annotation/BeancAnnotation.java  |   2 +-
 .../apache/juneau/annotation/BeanpAnnotation.java  |   2 +-
 .../juneau/annotation/ExampleAnnotation.java       |   4 +-
 .../juneau/annotation/MarshalledAnnotation.java    |   4 +-
 .../juneau/annotation/NamePropertyAnnotation.java  |   2 +-
 .../annotation/ParentPropertyAnnotation.java       |   2 +-
 .../apache/juneau/annotation/SchemaAnnotation.java |   4 +-
 .../apache/juneau/annotation/SwapAnnotation.java   |   4 +-
 .../apache/juneau/annotation/UriAnnotation.java    |   4 +-
 .../juneau/csv/annotation/CsvAnnotation.java       |   4 +-
 .../juneau/html/annotation/HtmlAnnotation.java     |   4 +-
 .../juneau/html/annotation/HtmlLinkAnnotation.java |   4 +-
 .../juneau/http/annotation/ContentAnnotation.java  |   4 +-
 .../juneau/http/annotation/FormDataAnnotation.java |   4 +-
 .../juneau/http/annotation/HeaderAnnotation.java   |   4 +-
 .../juneau/http/annotation/PathAnnotation.java     |   4 +-
 .../http/annotation/PathRemainderAnnotation.java   |   4 +-
 .../juneau/http/annotation/QueryAnnotation.java    |   4 +-
 .../juneau/http/annotation/RequestAnnotation.java  |   4 +-
 .../juneau/http/annotation/ResponseAnnotation.java |   4 +-
 .../http/annotation/StatusCodeAnnotation.java      |   4 +-
 .../juneau/json/annotation/JsonAnnotation.java     |   4 +-
 .../msgpack/annotation/MsgPackAnnotation.java      |   4 +-
 .../juneau/oapi/annotation/OpenApiAnnotation.java  |   4 +-
 .../plaintext/annotation/PlainTextAnnotation.java  |   4 +-
 .../juneau/soap/annotation/SoapXmlAnnotation.java  |   4 +-
 .../juneau/uon/annotation/UonAnnotation.java       |   4 +-
 .../annotation/UrlEncodingAnnotation.java          |   4 +-
 .../juneau/xml/annotation/XmlAnnotation.java       |   4 +-
 .../juneau/rest/annotation/RestAnnotation.java     |   4 +-
 .../rest/annotation/RestDeleteAnnotation.java      |   2 +-
 .../rest/annotation/RestDestroyAnnotation.java     |   2 +-
 .../rest/annotation/RestEndCallAnnotation.java     |   2 +-
 .../juneau/rest/annotation/RestGetAnnotation.java  |   2 +-
 .../juneau/rest/annotation/RestInitAnnotation.java |   2 +-
 .../rest/annotation/RestInjectAnnotation.java      |   2 +-
 .../juneau/rest/annotation/RestOpAnnotation.java   |   2 +-
 .../rest/annotation/RestOptionsAnnotation.java     |   2 +-
 .../rest/annotation/RestPatchAnnotation.java       |   2 +-
 .../juneau/rest/annotation/RestPostAnnotation.java |   2 +-
 .../rest/annotation/RestPostCallAnnotation.java    |   2 +-
 .../rest/annotation/RestPostInitAnnotation.java    |   2 +-
 .../rest/annotation/RestPreCallAnnotation.java     |   2 +-
 .../juneau/rest/annotation/RestPutAnnotation.java  |   2 +-
 .../rest/annotation/RestStartCallAnnotation.java   |   2 +-
 59 files changed, 398 insertions(+), 591 deletions(-)

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 337716dcdf..eff652395d 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
@@ -16,14 +16,326 @@
  */
 package org.apache.juneau.common.annotation;
 
+import static org.apache.juneau.common.reflect.ReflectionUtils.*;
 import static org.apache.juneau.common.utils.CollectionUtils.*;
 
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+
 /**
  * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
  *
  */
 public class AppliedAnnotationObject extends AnnotationObject {
 
+       
//-----------------------------------------------------------------------------------------------------------------
+       // Static
+       
//-----------------------------------------------------------------------------------------------------------------
+
+       /**
+        * Builder for {@link AppliedAnnotationObject} objects.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class Builder<B> extends AnnotationObject.Builder<B> {
+
+               String[] on = {};
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public Builder(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * The targets this annotation applies to.
+                *
+                * @param values The targets this annotation applies to.
+                * @return This object.
+                */
+               public B on(String...values) {
+                       for (var v : values)
+                               on = addAll(on, v);
+                       return asThis();
+               }
+       }
+
+       /**
+        * Builder for applied annotations targeting classes.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class BuilderT<B> extends Builder<B> {
+
+               Class<?>[] onClass = {};
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public BuilderT(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * Appends the classes that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Class<?>...value) {
+                       for (var v : value)
+                               on = addAll(on, v.getName());
+                       return asThis();
+               }
+
+               /**
+                * Appends the classes that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               @SuppressWarnings("unchecked")
+               public B onClass(Class<?>...value) {
+                       for (var v : value)
+                               onClass = addAll(onClass, v);
+                       return asThis();
+               }
+       }
+
+       /**
+        * Builder for applied annotations targeting methods.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class BuilderM<B> extends Builder<B> {
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public BuilderM(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * Appends the methods that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Method...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+       }
+
+       /**
+        * Builder for applied annotations targeting constructors.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class BuilderC<B> extends Builder<B> {
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public BuilderC(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * Appends the constructors that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Constructor<?>...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+       }
+
+       /**
+        * Builder for applied annotations targeting methods and fields.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class BuilderMF<B> extends Builder<B> {
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public BuilderMF(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * Appends the fields that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Field...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+
+               /**
+                * Appends the methods that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Method...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+       }
+
+       /**
+        * Builder for applied annotations targeting classes and methods.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class BuilderTM<B> extends BuilderT<B> {
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public BuilderTM(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * Appends the methods that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Method...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+       }
+
+       /**
+        * Builder for applied annotations targeting classes, methods, and 
fields.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class BuilderTMF<B> extends BuilderT<B> {
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public BuilderTMF(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * Appends the fields that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Field...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+
+               /**
+                * Appends the methods that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Method...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+       }
+
+       /**
+        * 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) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return this;
+               }
+       }
+
+       /**
+        * Builder for applied annotations targeting classes, methods, fields, 
and constructors.
+        *
+        * @param <B> The actual builder class.
+        */
+       public static class BuilderTMFC<B> extends BuilderTMF<B> {
+
+               /**
+                * Constructor.
+                *
+                * @param annotationType The annotation type of the annotation 
implementation class.
+                */
+               public BuilderTMFC(Class<? extends Annotation> annotationType) {
+                       super(annotationType);
+               }
+
+               /**
+                * Appends the constructors that this annotation applies to.
+                *
+                * @param value The values to append.
+                * @return This object.
+                */
+               public B on(Constructor<?>...value) {
+                       for (var v : value)
+                               on(info(v).getFullName());
+                       return asThis();
+               }
+       }
+
+       
//-----------------------------------------------------------------------------------------------------------------
+       // Instance
+       
//-----------------------------------------------------------------------------------------------------------------
+
        private final String[] on;
 
        /**
@@ -31,7 +343,7 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
         *
         * @param b The builder used to instantiate the fields of this class.
         */
-       public AppliedAnnotationObject(TargetedAnnotationBuilder<?> b) {
+       public AppliedAnnotationObject(Builder<?> b) {
                super(b);
                this.on = copyOf(b.on);
        }
@@ -44,4 +356,4 @@ public class AppliedAnnotationObject extends 
AnnotationObject {
        public String[] on() {
                return on;
        }
-}
\ No newline at end of file
+}
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTImpl.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedOnTypeAnnotationObject.java
similarity index 90%
rename from 
juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTImpl.java
rename to 
juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedOnTypeAnnotationObject.java
index 6b5ef5d83a..d627f6b3ae 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTImpl.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/AppliedOnTypeAnnotationObject.java
@@ -22,7 +22,7 @@ import static 
org.apache.juneau.common.utils.CollectionUtils.*;
  * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
  *
  */
-public class TargetedAnnotationTImpl extends AppliedAnnotationObject {
+public class AppliedOnTypeAnnotationObject extends AppliedAnnotationObject {
 
        private final Class<?>[] onClass;
 
@@ -31,7 +31,7 @@ public class TargetedAnnotationTImpl extends 
AppliedAnnotationObject {
         *
         * @param b The builder used to instantiate the fields of this class.
         */
-       public TargetedAnnotationTImpl(TargetedAnnotationTBuilder<?> b) {
+       public AppliedOnTypeAnnotationObject(BuilderT<?> b) {
                super(b);
                this.onClass = copyOf(b.onClass);
        }
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationBuilder.java
deleted file mode 100644
index df386620e7..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationBuilder.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.utils.CollectionUtils.*;
-
-import java.lang.annotation.*;
-
-/**
- * Builder for {@link AppliedAnnotationObject} objects.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationBuilder<B> extends AnnotationObject.Builder<B> {
-
-       String[] on = {};
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * The targets this annotation applies to.
-        *
-        * @param values The targets this annotation applies to.
-        * @return This object.
-        */
-       public B on(String...values) {
-               for (var v : values)
-                       on = addAll(on, v);
-               return asThis();
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationCBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationCBuilder.java
deleted file mode 100644
index 26dd3ff4f4..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationCBuilder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.reflect.ReflectionUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationCBuilder<B> extends 
TargetedAnnotationBuilder<B> {
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationCBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the constructors that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Constructor<?>...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMBuilder.java
deleted file mode 100644
index 2ab9601fe0..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMBuilder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.reflect.ReflectionUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationMBuilder<B> extends 
TargetedAnnotationBuilder<B> {
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationMBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the methods that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Method...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMFBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMFBuilder.java
deleted file mode 100644
index 46c58fbabf..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMFBuilder.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.reflect.ReflectionUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationMFBuilder<B> extends 
TargetedAnnotationBuilder<B> {
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationMFBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the fields that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Field...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-
-       /**
-        * Appends the methods that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Method...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMFCBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMFCBuilder.java
deleted file mode 100644
index 720f838fcf..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationMFCBuilder.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.reflect.ReflectionUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- */
-public class TargetedAnnotationMFCBuilder extends 
TargetedAnnotationMFBuilder<TargetedAnnotationMFCBuilder> {
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationMFCBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the constructors that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public TargetedAnnotationMFCBuilder on(Constructor<?>...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return this;
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTBuilder.java
deleted file mode 100644
index 70a29566b0..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTBuilder.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.utils.CollectionUtils.*;
-
-import java.lang.annotation.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationTBuilder<B> extends 
TargetedAnnotationBuilder<B> {
-
-       Class<?>[] onClass = {};
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationTBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the classes that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Class<?>...value) {
-               for (var v : value)
-                       on = addAll(on, v.getName());
-               return asThis();
-       }
-
-       /**
-        * Appends the classes that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       @SuppressWarnings("unchecked")
-       public B onClass(Class<?>...value) {
-               for (var v : value)
-                       onClass = addAll(onClass, v);
-               return asThis();
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMBuilder.java
deleted file mode 100644
index 895506ed32..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMBuilder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.reflect.ReflectionUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationTMBuilder<B> extends 
TargetedAnnotationTBuilder<B> {
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationTMBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the methods that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Method...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMFBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMFBuilder.java
deleted file mode 100644
index c728e8d424..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMFBuilder.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.reflect.ReflectionUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationTMFBuilder<B> extends 
TargetedAnnotationTBuilder<B> {
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationTMFBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the fields that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Field...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-
-       /**
-        * Appends the methods that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Method...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-}
\ No newline at end of file
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMFCBuilder.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMFCBuilder.java
deleted file mode 100644
index 46fb297921..0000000000
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/annotation/TargetedAnnotationTMFCBuilder.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.juneau.common.annotation;
-
-import static org.apache.juneau.common.reflect.ReflectionUtils.*;
-
-import java.lang.annotation.*;
-import java.lang.reflect.*;
-
-/**
- * An implementation of an annotation that has an <code>on</code> value 
targeting classes/methods/fields/constructors.
- *
- *
- * @param <B> The actual builder class.
- */
-public class TargetedAnnotationTMFCBuilder<B> extends 
TargetedAnnotationTMFBuilder<B> {
-
-       /**
-        * Constructor.
-        *
-        * @param annotationType The annotation type of the annotation 
implementation class.
-        */
-       public TargetedAnnotationTMFCBuilder(Class<? extends Annotation> 
annotationType) {
-               super(annotationType);
-       }
-
-       /**
-        * Appends the constructors that this annotation applies to.
-        *
-        * @param value The values to append.
-        * @return This object.
-        */
-       public B on(Constructor<?>...value) {
-               for (var v : value)
-                       on(info(v).getFullName());
-               return asThis();
-       }
-}
\ No newline at end of file
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 ef8ca2efa2..63625363ad 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
@@ -62,7 +62,7 @@ public class RdfAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                String namespace = "", prefix = "";
                boolean beanUri;
@@ -117,31 +117,31 @@ public class RdfAnnotation {
                        return this;
                }
 
-               @Override /* Overridden from TargetedAnnotationTBuilder */
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
                public Builder on(Class<?>...value) {
                        super.on(value);
                        return this;
                }
 
-               @Override /* Overridden from TargetedAnnotationTMFBuilder */
+               @Override /* Overridden from AppliedAnnotationObject.BuilderTMF 
*/
                public Builder on(Field...value) {
                        super.on(value);
                        return this;
                }
 
-               @Override /* Overridden from TargetedAnnotationTMFBuilder */
+               @Override /* Overridden from AppliedAnnotationObject.BuilderTMF 
*/
                public Builder on(Method...value) {
                        super.on(value);
                        return this;
                }
 
-               @Override /* Overridden from TargetedAnnotationBuilder */
+               @Override /* Overridden from AppliedAnnotationObject.Builder */
                public Builder on(String...values) {
                        super.on(values);
                        return this;
                }
 
-               @Override /* Overridden from TargetedAnnotationTBuilder */
+               @Override /* Overridden from AppliedAnnotationObject.BuilderT */
                public Builder onClass(Class<?>...value) {
                        super.onClass(value);
                        return this;
@@ -205,7 +205,7 @@ public class RdfAnnotation {
                }
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Rdf {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Rdf {
 
                private final boolean beanUri;
                private final RdfCollectionFormat collectionFormat;
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 b046b32b95..4d810037a0 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 TargetedAnnotationTBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
 
                Class<?>[] dictionary = new Class[0];
                Class<?> implClass = void.class;
@@ -318,7 +318,7 @@ public class BeanAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Bean {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Bean {
 
                private final boolean findFluentSetters, sort;
                private final Class<? extends BeanInterceptor<?>> interceptor;
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 8fe73d0a1d..eeda715c9e 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
@@ -79,7 +79,7 @@ public class BeanIgnoreAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFCBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMFC<Builder> {
 
                /**
                 * Constructor.
@@ -99,7 +99,7 @@ public class BeanIgnoreAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
BeanIgnore {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements BeanIgnore {
 
                Impl(BeanIgnoreAnnotation.Builder b) {
                        super(b);
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 4e49127a6a..237d8daef9 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
@@ -79,7 +79,7 @@ public class BeancAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationCBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderC<Builder> {
 
                String properties = "";
 
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 b2f1524f95..b6988f923e 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
@@ -79,7 +79,7 @@ public class BeanpAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderMF<Builder> {
 
                Class<?> type = void.class;
                Class<?>[] dictionary = new Class[0], params = new Class[0];
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 17a84456d6..07f2ec02f0 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
@@ -79,7 +79,7 @@ public class ExampleAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                String value = "";
 
@@ -112,7 +112,7 @@ public class ExampleAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Example {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Example {
 
                private final String value;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/MarshalledAnnotation.java
index 7061b7b6f4..18682acd4d 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 TargetedAnnotationTBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
 
                Class<?> implClass = void.class;
                String example = "";
@@ -124,7 +124,7 @@ public class MarshalledAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Marshalled {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Marshalled {
 
                private final Class<?> implClass;
                private final String example;
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 2453298bb8..53b2abdf45 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
@@ -79,7 +79,7 @@ public class NamePropertyAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderMF<Builder> {
 
                /**
                 * Constructor.
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 378d2bca48..f47e9e8068 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
@@ -79,7 +79,7 @@ public class ParentPropertyAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderMF<Builder> {
 
                /**
                 * Constructor.
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 c022cf00b7..945a4ded04 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
@@ -85,7 +85,7 @@ public class SchemaAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                boolean aev, allowEmptyValue, emax, emin, exclusiveMaximum, 
exclusiveMinimum, ignore, r, readOnly, required, ro, sie, skipIfEmpty, ui, 
uniqueItems;
                ExternalDocs externalDocs = ExternalDocsAnnotation.DEFAULT;
@@ -925,7 +925,7 @@ public class SchemaAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Schema {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Schema {
 
                private final boolean aev, allowEmptyValue, exclusiveMaximum, 
emax, exclusiveMinimum, emin, uniqueItems, ui, required, r, readOnly, ro, sie, 
skipIfEmpty, ignore;
                private final ExternalDocs externalDocs;
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 ba1fe9a124..969fb555c5 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
@@ -79,7 +79,7 @@ public class SwapAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                Class<?> impl = void.class;
                Class<?> value = void.class;
@@ -148,7 +148,7 @@ public class SwapAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Swap {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Swap {
 
                private final Class<?> impl, value;
                private final String template;
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 505fe70a0c..0ae5949b15 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
@@ -79,7 +79,7 @@ public class UriAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                /**
                 * Constructor.
@@ -99,7 +99,7 @@ public class UriAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Uri {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Uri {
 
                Impl(UriAnnotation.Builder b) {
                        super(b);
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 40d0f8dcbc..9cc0b905c3 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
@@ -80,7 +80,7 @@ public class CsvAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                /**
                 * Constructor.
@@ -100,7 +100,7 @@ public class CsvAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Csv {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Csv {
 
                Impl(CsvAnnotation.Builder b) {
                        super(b);
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 e01a444cf1..0083160dfd 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
@@ -85,7 +85,7 @@ public class HtmlAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                String anchorText = "", link = "", style = "";
                HtmlFormat format = HtmlFormat.HTML;
@@ -187,7 +187,7 @@ public class HtmlAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Html {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Html {
 
                private boolean noTableHeaders, noTables;
                private Class<? extends HtmlRender> render;
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 9189576d47..92bb36b3f8 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
@@ -83,7 +83,7 @@ public class HtmlLinkAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationTBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
 
                String nameProperty = "", uriProperty = "";
 
@@ -127,7 +127,7 @@ public class HtmlLinkAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
HtmlLink {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements HtmlLink {
 
                private final String nameProperty, uriProperty;
 
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 bde7c150af..b57db41c8c 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
@@ -80,7 +80,7 @@ public class ContentAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTM<Builder> {
 
                String def = "";
                String[] description = {};
@@ -138,7 +138,7 @@ public class ContentAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Content {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Content {
 
                private final String def;
                private final String[] description;
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 804711adec..c649e44086 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
@@ -87,7 +87,7 @@ public class FormDataAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Void.class;
@@ -178,7 +178,7 @@ public class FormDataAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
FormData {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements FormData {
 
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
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 f67f00529c..46592cc2c2 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
@@ -87,7 +87,7 @@ public class HeaderAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Void.class;
@@ -178,7 +178,7 @@ public class HeaderAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Header {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Header {
 
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
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 31af11282e..161f42594d 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
@@ -88,7 +88,7 @@ public class PathAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Void.class;
@@ -179,7 +179,7 @@ public class PathAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Path {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Path {
 
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
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 d67cf520fb..df4d8a54ae 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
@@ -92,7 +92,7 @@ public class PathRemainderAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Void.class;
@@ -173,7 +173,7 @@ public class PathRemainderAnnotation {
                }
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
PathRemainder {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements PathRemainder {
 
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
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 4c13ee93c7..24972f0068 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
@@ -87,7 +87,7 @@ public class QueryAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Void.class;
@@ -178,7 +178,7 @@ public class QueryAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Query {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Query {
 
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
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 d3c49e924d..2c5b8015a1 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
@@ -81,7 +81,7 @@ public class RequestAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationTBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
 
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Void.class;
@@ -126,7 +126,7 @@ public class RequestAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Request {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Request {
 
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
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 91cf0ba480..6aa375df7a 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
@@ -81,7 +81,7 @@ public class ResponseAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTM<Builder> {
 
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Void.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Void.class;
@@ -162,7 +162,7 @@ public class ResponseAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Response {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Response {
 
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
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 38868404b4..22965be7db 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
@@ -81,7 +81,7 @@ public class StatusCodeAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTM<Builder> {
 
                int value[] = {};
 
@@ -114,7 +114,7 @@ public class StatusCodeAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
StatusCode {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements StatusCode {
 
                private final int[] value;
 
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 b11cd70ce5..5b6e367d4a 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
@@ -83,7 +83,7 @@ public class JsonAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                String wrapperAttr = "";
 
@@ -116,7 +116,7 @@ public class JsonAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Json {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Json {
 
                private final String wrapperAttr;
 
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 06a68eba99..4c012fa896 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
@@ -83,7 +83,7 @@ public class MsgPackAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                /**
                 * Constructor.
@@ -103,7 +103,7 @@ public class MsgPackAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
MsgPack {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements MsgPack {
 
                Impl(MsgPackAnnotation.Builder b) {
                        super(b);
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 0eea282ddb..9889c8b1c7 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
@@ -83,7 +83,7 @@ public class OpenApiAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                /**
                 * Constructor.
@@ -103,7 +103,7 @@ public class OpenApiAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
OpenApi {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements OpenApi {
 
                Impl(OpenApiAnnotation.Builder b) {
                        super(b);
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 5603a3785e..e3759cf13f 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
@@ -80,7 +80,7 @@ public class PlainTextAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                /**
                 * Constructor.
@@ -100,7 +100,7 @@ public class PlainTextAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
PlainText {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements PlainText {
 
                Impl(PlainTextAnnotation.Builder b) {
                        super(b);
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 b8e2d8b751..f0b92029c2 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
@@ -80,7 +80,7 @@ public class SoapXmlAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                /**
                 * Constructor.
@@ -100,7 +100,7 @@ public class SoapXmlAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
SoapXml {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements SoapXml {
 
                Impl(SoapXmlAnnotation.Builder b) {
                        super(b);
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 10a59d3b1c..6768be5743 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
@@ -83,7 +83,7 @@ public class UonAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                /**
                 * Constructor.
@@ -103,7 +103,7 @@ public class UonAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Uon {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Uon {
 
                Impl(UonAnnotation.Builder b) {
                        super(b);
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 55fbdd2000..3f29ca4346 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
@@ -83,7 +83,7 @@ public class UrlEncodingAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                boolean expandedParams;
 
@@ -116,7 +116,7 @@ public class UrlEncodingAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
UrlEncoding {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements UrlEncoding {
 
                private final boolean expandedParams;
 
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 87e09ecf70..700cea2ebc 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
@@ -83,7 +83,7 @@ public class XmlAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends 
TargetedAnnotationTMFBuilder<Builder> {
+       public static class Builder extends 
AppliedAnnotationObject.BuilderTMF<Builder> {
 
                String childName = "", namespace = "", prefix = "";
                XmlFormat format = XmlFormat.DEFAULT;
@@ -150,7 +150,7 @@ public class XmlAnnotation {
 
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Xml {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Xml {
 
                private final String childName, namespace, prefix;
                private final XmlFormat format;
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 36ce19acf8..e2896f8586 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
@@ -59,7 +59,7 @@ public class RestAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationTBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderT<Builder> {
 
                Class<? extends Encoder>[] encoders = new Class[0];
                Class<? extends HttpPartParser> partParser = 
HttpPartParser.Void.class;
@@ -700,7 +700,7 @@ public class RestAnnotation {
                }
        }
 
-       private static class Impl extends TargetedAnnotationTImpl implements 
Rest {
+       private static class Impl extends AppliedOnTypeAnnotationObject 
implements Rest {
 
                private final Class<? extends Encoder>[] encoders;
                private final Class<? extends HttpPartParser> partParser;
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 a73f929c4a..e2b787c174 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
@@ -49,7 +49,7 @@ public class RestDeleteAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                Class<? extends RestGuard>[] guards = new Class[0];
                Class<? extends RestMatcher>[] matchers = new Class[0];
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 671407a738..5650848d91 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
@@ -56,7 +56,7 @@ public class RestDestroyAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                /**
                 * Constructor.
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 9c525128fa..ff0390e7fc 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
@@ -56,7 +56,7 @@ public class RestEndCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                /**
                 * Constructor.
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 a44d9adcd7..20e3f1ce6e 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
@@ -51,7 +51,7 @@ public class RestGetAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                Class<? extends RestConverter>[] converters = new Class[0];
                Class<? extends RestGuard>[] guards = new Class[0];
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 917276a2be..41c539188c 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
@@ -56,7 +56,7 @@ public class RestInitAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                /**
                 * Constructor.
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 9c2c99e723..0e2f456e2c 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
@@ -53,7 +53,7 @@ public class RestInjectAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                String name, value;
                String[] methodScope;
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 4e8386e62e..3bc6bf26d0 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
@@ -54,7 +54,7 @@ public class RestOpAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                Class<? extends RestConverter>[] converters = new Class[0];
                Class<? extends RestGuard>[] guards = new Class[0];
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 4aec2babbe..b446fbc0c4 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
@@ -51,7 +51,7 @@ public class RestOptionsAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                Class<? extends RestConverter>[] converters = new Class[0];
                Class<? extends RestGuard>[] guards = new Class[0];
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 6afc656450..1ceafbbf14 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
@@ -51,7 +51,7 @@ public class RestPatchAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                Class<? extends RestConverter>[] converters = new Class[0];
                Class<? extends RestGuard>[] guards = new Class[0];
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 dae0e31873..1ca6fb2ff4 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
@@ -51,7 +51,7 @@ public class RestPostAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                Class<? extends RestConverter>[] converters = new Class[0];
                Class<? extends RestGuard>[] guards = new Class[0];
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 de1f6384de..99653d069a 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
@@ -56,7 +56,7 @@ public class RestPostCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                /**
                 * Constructor.
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 2c799cc947..d3f4888ef7 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
@@ -56,7 +56,7 @@ public class RestPostInitAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                boolean childFirst;
 
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 63c4a0e948..d4c6752297 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
@@ -56,7 +56,7 @@ public class RestPreCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                /**
                 * Constructor.
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 29bc1e184e..cfdbe89a69 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
@@ -51,7 +51,7 @@ public class RestPutAnnotation {
         * </ul>
         */
        @SuppressWarnings("unchecked")
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                Class<? extends RestConverter>[] converters = new Class[0];
                Class<? extends RestGuard>[] guards = new Class[0];
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 f9884753e2..61ab4e7b6e 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
@@ -56,7 +56,7 @@ public class RestStartCallAnnotation {
         *      <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#annotations(Annotation...)}
         * </ul>
         */
-       public static class Builder extends TargetedAnnotationMBuilder<Builder> 
{
+       public static class Builder extends 
AppliedAnnotationObject.BuilderM<Builder> {
 
                /**
                 * Constructor.

Reply via email to