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

commit 74187dadb1708b536089a283fab38252037736ac
Author: James Bognar <[email protected]>
AuthorDate: Thu Nov 20 10:18:09 2025 -0500

    org.apache.juneau.common.reflect API improvements
---
 .../juneau/common/reflect/AnnotationProvider.java  | 20 +++----
 .../apache/juneau/common/reflect/ClassInfo.java    |  6 +-
 .../apache/juneau/common/reflect/MethodInfo.java   | 67 +---------------------
 .../java/org/apache/juneau/AnnotationWorkList.java | 10 ++--
 .../src/main/java/org/apache/juneau/Context.java   |  8 +--
 .../annotation/InvalidAnnotationException.java     |  8 +--
 .../rest/client/remote/RemoteOperationMeta.java    |  4 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 10 ++--
 .../java/org/apache/juneau/rest/RestOpContext.java |  2 +-
 .../juneau/rest/debug/BasicDebugEnablement.java    |  8 ++-
 .../juneau/rest/matcher/ClientVersionMatcher.java  | 14 +++--
 .../rest/swagger/BasicSwaggerProviderSession.java  |  2 +-
 .../annotation/BeanConfigAnnotation_Test.java      |  6 +-
 .../org/apache/juneau/annotation/Bean_Test.java    | 12 ++--
 .../juneau/common/reflect/AnnotationInfoTest.java  |  2 +-
 .../juneau/common/reflect/ClassInfo_Test.java      | 12 ++--
 .../juneau/common/reflect/MethodInfo_Test.java     | 32 +++++------
 .../juneau/csv/annotation/CsvConfig_Test.java      |  8 +--
 .../juneau/html/HtmlConfigAnnotation_Test.java     | 12 ++--
 .../juneau/html/HtmlDocConfigAnnotation_Test.java  | 28 ++++-----
 .../juneau/json/JsonConfigAnnotationTest.java      | 12 ++--
 .../jsonschema/JsonSchemaConfigAnnotationTest.java |  6 +-
 .../juneau/jsonschema/JsonSchemaGeneratorTest.java |  2 +-
 .../msgpack/MsgPackConfigAnnotationTest.java       | 12 ++--
 .../juneau/oapi/OpenApiConfigAnnotation_Test.java  |  8 +--
 .../juneau/parser/ParserConfigAnnotationTest.java  | 12 ++--
 .../plaintext/PlainTextConfigAnnotation_Test.java  |  8 +--
 .../client/RestClient_Config_Context_Test.java     |  2 +-
 .../serializer/SerializerConfigAnnotationTest.java | 12 ++--
 .../juneau/soap/SoapXmlConfigAnnotationTest.java   |  6 +-
 .../apache/juneau/uon/UonConfigAnnotationTest.java | 12 ++--
 .../UrlEncodingConfigAnnotationTest.java           | 12 ++--
 .../apache/juneau/xml/XmlConfigAnnotationTest.java | 12 ++--
 33 files changed, 164 insertions(+), 223 deletions(-)

diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
index fdde9aebca..75f64e9f2c 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
@@ -541,7 +541,7 @@ public class AnnotationProvider {
         * @return A stream of {@link AnnotationInfo} objects. Never 
<jk>null</jk>.
         */
        @SuppressWarnings("unchecked")
-       public Stream<AnnotationInfo<Annotation>> find(ClassInfo clazz, 
AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> find(ClassInfo 
clazz, AnnotationTraversal... traversals) {
                assertArgNotNull("clazz", clazz);
                if (traversals.length == 0)
                        traversals = a(PARENTS, PACKAGE);
@@ -596,7 +596,7 @@ public class AnnotationProvider {
         * @param traversals The traversal options (what to search and order).
         * @return A stream of {@link AnnotationInfo} objects in parent-first 
order. Never <jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> findTopDown(ClassInfo clazz, 
AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> 
findTopDown(ClassInfo clazz, AnnotationTraversal... traversals) {
                return rstream(find(clazz, traversals).toList());
        }
 
@@ -719,7 +719,7 @@ public class AnnotationProvider {
         * @param traversals The traversal options.
         * @return A stream of {@link AnnotationInfo} objects. Never 
<jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> find(MethodInfo method, 
AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> find(MethodInfo 
method, AnnotationTraversal... traversals) {
                assertArgNotNull("method", method);
                if (traversals.length == 0)
                        traversals = a(SELF, MATCHING_METHODS, DECLARING_CLASS, 
RETURN_TYPE, PACKAGE);
@@ -778,7 +778,7 @@ public class AnnotationProvider {
         * @param traversals The traversal options.
         * @return A stream of {@link AnnotationInfo} objects in parent-first 
order. Never <jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> findTopDown(MethodInfo 
method, AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> 
findTopDown(MethodInfo method, AnnotationTraversal... traversals) {
                return rstream(find(method, traversals).toList());
        }
 
@@ -955,7 +955,7 @@ public class AnnotationProvider {
         *      <br>Valid values: {@link AnnotationTraversal#SELF SELF}, {@link 
AnnotationTraversal#MATCHING_PARAMETERS MATCHING_PARAMETERS}, {@link 
AnnotationTraversal#PARAMETER_TYPE PARAMETER_TYPE}
         * @return A stream of {@link AnnotationInfo} objects in 
child-to-parent order. Never <jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> find(ParameterInfo parameter, 
AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> find(ParameterInfo 
parameter, AnnotationTraversal... traversals) {
                assertArgNotNull("parameter", parameter);
                if (traversals.length == 0)
                        traversals = a(SELF, MATCHING_PARAMETERS, 
PARAMETER_TYPE);
@@ -987,7 +987,7 @@ public class AnnotationProvider {
         *      <br>Valid values: {@link AnnotationTraversal#SELF SELF}, {@link 
AnnotationTraversal#MATCHING_PARAMETERS MATCHING_PARAMETERS}, {@link 
AnnotationTraversal#PARAMETER_TYPE PARAMETER_TYPE}
         * @return A stream of {@link AnnotationInfo} objects in 
parent-to-child order. Never <jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> findTopDown(ParameterInfo 
parameter, AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> 
findTopDown(ParameterInfo parameter, AnnotationTraversal... traversals) {
                return rstream(find(parameter, traversals).toList());
        }
 
@@ -1088,7 +1088,7 @@ public class AnnotationProvider {
         * @param traversals The traversal options.
         * @return A stream of {@link AnnotationInfo} objects. Never 
<jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> find(FieldInfo field, 
AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> find(FieldInfo 
field, AnnotationTraversal... traversals) {
                assertArgNotNull("field", field);
                if (traversals.length == 0)
                        traversals = a(SELF);
@@ -1134,7 +1134,7 @@ public class AnnotationProvider {
         * @param traversals The traversal options.
         * @return A stream of {@link AnnotationInfo} objects in parent-first 
order. Never <jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> findTopDown(FieldInfo field, 
AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> 
findTopDown(FieldInfo field, AnnotationTraversal... traversals) {
                return rstream(find(field, traversals).toList());
        }
 
@@ -1230,7 +1230,7 @@ public class AnnotationProvider {
         * @param traversals The traversal options.
         * @return A stream of {@link AnnotationInfo} objects. Never 
<jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> find(ConstructorInfo 
constructor, AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> 
find(ConstructorInfo constructor, AnnotationTraversal... traversals) {
                assertArgNotNull("constructor", constructor);
                if (traversals.length == 0)
                        traversals = a(SELF);
@@ -1276,7 +1276,7 @@ public class AnnotationProvider {
         * @param traversals The traversal options.
         * @return A stream of {@link AnnotationInfo} objects in parent-first 
order. Never <jk>null</jk>.
         */
-       public Stream<AnnotationInfo<Annotation>> findTopDown(ConstructorInfo 
constructor, AnnotationTraversal... traversals) {
+       public Stream<AnnotationInfo<? extends Annotation>> 
findTopDown(ConstructorInfo constructor, AnnotationTraversal... traversals) {
                return rstream(find(constructor, traversals).toList());
        }
 
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
index f8e8471591..991008d0c1 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
@@ -189,7 +189,7 @@ public class ClassInfo extends ElementInfo implements 
Annotatable {
        private final Supplier<List<ClassInfo>> interfaces;  // All interfaces 
implemented by this class and its parents, in child-to-parent order.
        private final Supplier<List<ClassInfo>> allParents;  // All parent 
classes and interfaces, classes first, then in child-to-parent order.
        private final Supplier<List<ClassInfo>> parentsAndInterfaces;  // All 
parent classes and interfaces with proper traversal of interface hierarchy to 
avoid duplicates.
-       private final Supplier<List<AnnotationInfo<Annotation>>> 
annotationInfos;  // All annotations on this class and parent 
classes/interfaces in child-to-parent order.
+       private final Supplier<List<AnnotationInfo<? extends Annotation>>> 
annotationInfos;  // All annotations on this class and parent 
classes/interfaces in child-to-parent order.
        private final Supplier<List<RecordComponent>> recordComponents;  // All 
record components if this is a record class (Java 14+).
        private final Supplier<List<Type>> genericInterfaces;  // All generic 
interface types (e.g., List<String> implements Comparable<List<String>>).
        private final Supplier<List<TypeVariable<?>>> typeParameters;  // All 
type parameters declared on this class (e.g., <T, U> in class Foo<T, U>).
@@ -759,7 +759,7 @@ public class ClassInfo extends ElementInfo implements 
Annotatable {
         *
         * @return An unmodifiable list of all annotation infos.
         */
-       public List<AnnotationInfo<Annotation>> getAnnotations() { return 
annotationInfos.get(); }
+       public List<AnnotationInfo<? extends Annotation>> getAnnotations() { 
return annotationInfos.get(); }
 
        /**
         * Returns all annotations of the specified type on this class and 
parent classes/interfaces in child-to-parent order.
@@ -2470,7 +2470,7 @@ public class ClassInfo extends ElementInfo implements 
Annotatable {
         *
         * @return A list of all annotation infos in child-to-parent order.
         */
-       private List<AnnotationInfo<Annotation>> findAnnotations() {
+       private List<AnnotationInfo<? extends Annotation>> findAnnotations() {
                var list = new ArrayList<AnnotationInfo<Annotation>>();
 
                // On all parent classes and interfaces (properly traversed to 
avoid duplicates)
diff --git 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/MethodInfo.java
 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/MethodInfo.java
index cd6cff422a..525c8a6a3b 100644
--- 
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/MethodInfo.java
+++ 
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/MethodInfo.java
@@ -75,7 +75,6 @@ public class MethodInfo extends ExecutableInfo implements 
Comparable<MethodInfo>
        private final Supplier<ClassInfo> returnType;
        private final Supplier<List<MethodInfo>> matchingMethods;
        private final Supplier<List<AnnotationInfo<Annotation>>> annotations;
-       private final Supplier<List<AnnotationInfo<Annotation>>> 
allAnnotationInfos;
 
        /**
         * Constructor.
@@ -89,7 +88,6 @@ public class MethodInfo extends ExecutableInfo implements 
Comparable<MethodInfo>
                this.returnType = memoize(() -> 
ClassInfo.of(inner.getReturnType(), inner.getGenericReturnType()));
                this.matchingMethods = memoize(this::findMatchingMethods);
                this.annotations = memoize(() -> 
getMatchingMethods().stream().flatMap(m -> 
m.getDeclaredAnnotations().stream()).toList());
-               this.allAnnotationInfos = memoize(this::findAllAnnotationInfos);
        }
 
        /**
@@ -199,30 +197,6 @@ public class MethodInfo extends ExecutableInfo implements 
Comparable<MethodInfo>
                        .map(a -> (AnnotationInfo<A>)a);
        }
 
-       /**
-        * Returns all annotations on the declaring class, this method and 
parent overridden methods, return type, and package in child-to-parent order.
-        *
-        * <p>
-        *      Annotations are ordered as follows:
-        * <ol>
-        *      <li>Current method
-        *      <li>Parent methods (child-to-parent order)
-        *      <li>Return type on current method
-        *      <li>Return type on parent methods (child-to-parent order)
-        *      <li>Current class
-        *      <li>Parent classes/interfaces (child-to-parent order)
-        *      <li>Package annotations on the declaring class's package
-        * </ol>
-        *
-        * <p>
-        *      List is unmodifiable.
-        *
-        * @return A list of all annotations.
-        */
-       public List<AnnotationInfo<Annotation>> getAllAnnotations() {
-               return allAnnotationInfos.get();
-       }
-
        private List<MethodInfo> findMatchingMethods() {
                var result = new ArrayList<MethodInfo>();
                result.add(this); // 1. This method
@@ -259,39 +233,6 @@ public class MethodInfo extends ExecutableInfo implements 
Comparable<MethodInfo>
                        .forEach(pi -> addMatchingMethodsFromInterface(result, 
pi));
        }
 
-       @SuppressWarnings("unchecked")
-       private List<AnnotationInfo<Annotation>> findAllAnnotationInfos() {
-               var list = new ArrayList<AnnotationInfo<Annotation>>();
-               var returnType = getReturnType().unwrap(Value.class, 
Optional.class);
-
-               // 1. Current method
-               list.addAll(getDeclaredAnnotations());
-
-               // 2. Parent methods in child-to-parent order
-               getMatchingMethods().stream().skip(1).forEach(m -> 
list.addAll(m.getDeclaredAnnotations()));
-
-               // 3. Return type on current
-               returnType.getDeclaredAnnotations().forEach(x -> list.add(x));
-
-               // 4. Return type on parent methods in child-to-parent order
-               getMatchingMethods().stream().skip(1).forEach(m -> {
-                       m.getReturnType().unwrap(Value.class, 
Optional.class).getDeclaredAnnotations().forEach(x -> list.add(x));
-               });
-
-               // 5. Current class
-               declaringClass.getDeclaredAnnotations().forEach(x -> 
list.add(x));
-
-               // 6. Parent classes/interfaces in child-to-parent order
-               
declaringClass.getParentsAndInterfaces().stream().skip(1).forEach(c -> 
c.getDeclaredAnnotations().forEach(x -> list.add(x)));
-
-               // 7. Package annotations
-               var pkg = declaringClass.getPackage();
-               if (nn(pkg))
-                       pkg.getAnnotations().forEach(x -> list.add(x));
-
-               return u(list);
-       }
-
        @Override /* Overridden from ExecutableInfo */
        public MethodInfo accessible() {
                super.accessible();
@@ -433,13 +374,7 @@ public class MethodInfo extends ExecutableInfo implements 
Comparable<MethodInfo>
         */
        @Override
        public <A extends Annotation> boolean hasAnnotation(Class<A> type) {
-               // Inline implementation using reflection directly instead of 
delegating to AnnotationProvider.DEFAULT
-               if (!nn(type))
-                       return false;
-               for (var m2 : getMatchingMethods())
-                       if (m2.inner().getAnnotation(type) != null)
-                               return true;
-               return false;
+               return getAnnotations(type).findAny().isPresent();
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
index 24e205d6a3..18c3ffca2f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
@@ -63,7 +63,7 @@ public class AnnotationWorkList extends 
ArrayList<AnnotationWork> {
         * @param annotations The annotations to create work from.
         * @return A new list.
         */
-       public static AnnotationWorkList of(Stream<AnnotationInfo<?>> 
annotations) {
+       public static AnnotationWorkList of(Stream<AnnotationInfo<? extends 
Annotation>> annotations) {
                return create().add(annotations);
        }
 
@@ -74,7 +74,7 @@ public class AnnotationWorkList extends 
ArrayList<AnnotationWork> {
         * @param annotations The annotations to create work from.
         * @return A new list.
         */
-       public static AnnotationWorkList of(VarResolverSession vrs, 
Stream<AnnotationInfo<?>> annotations) {
+       public static AnnotationWorkList of(VarResolverSession vrs, 
Stream<AnnotationInfo<? extends Annotation>> annotations) {
                return create(vrs).add(annotations);
        }
 
@@ -102,7 +102,7 @@ public class AnnotationWorkList extends 
ArrayList<AnnotationWork> {
         * @param annotations The annotations to create work from.
         * @return This object.
         */
-       public AnnotationWorkList add(Stream<AnnotationInfo<?>> annotations) {
+       public AnnotationWorkList add(Stream<AnnotationInfo<? extends 
Annotation>> annotations) {
                
annotations.sorted(Comparator.comparingInt(AnnotationInfo::getRank)).forEach(this::applyAnnotation);
                return this;
        }
@@ -118,7 +118,7 @@ public class AnnotationWorkList extends 
ArrayList<AnnotationWork> {
                        Annotation a = ai.inner();
                        ContextApply cpa = 
a.annotationType().getAnnotation(ContextApply.class);
                        Constructor<? extends AnnotationApplier<?,?>>[] 
applyConstructors;
-                       
+
                        if (cpa == null) {
                                applyConstructors = 
a(AnnotationApplier.NoOp.class.getConstructor(VarResolverSession.class));
                        } else {
@@ -126,7 +126,7 @@ public class AnnotationWorkList extends 
ArrayList<AnnotationWork> {
                                for (int i = 0; i < cpa.value().length; i++)
                                        applyConstructors[i] = (Constructor<? 
extends 
AnnotationApplier<?,?>>)cpa.value()[i].getConstructor(VarResolverSession.class);
                        }
-                       
+
                        for (var applyConstructor : applyConstructors) {
                                AnnotationApplier<Annotation,Object> applier = 
(AnnotationApplier<Annotation,Object>)applyConstructor.newInstance(vrs);
                                add(ai, applier);
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index c8f4992485..bad6d79313 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -672,13 +672,13 @@ public abstract class Context {
                        AnnotationProvider ap = AnnotationProvider.INSTANCE;
                        CollectionUtils.traverse(x, y -> {
                                if (x instanceof Class<?> x2)
-                                       
work.add(ap.findTopDown(ClassInfo.of(x2)).filter(CONTEXT_APPLY_FILTER).map(ai 
-> (AnnotationInfo<?>)ai));
+                                       
work.add(ap.findTopDown(ClassInfo.of(x2)).filter(CONTEXT_APPLY_FILTER));
                                else if (x instanceof ClassInfo x2)
-                                       
work.add(ap.findTopDown(x2).filter(CONTEXT_APPLY_FILTER).map(ai -> 
(AnnotationInfo<?>)ai));
+                                       
work.add(ap.findTopDown(x2).filter(CONTEXT_APPLY_FILTER));
                                else if (x instanceof Method x2)
-                                       
work.add(ap.findTopDown(MethodInfo.of(x2)).filter(CONTEXT_APPLY_FILTER).map(ai 
-> (AnnotationInfo<?>)ai));
+                                       
work.add(ap.findTopDown(MethodInfo.of(x2)).filter(CONTEXT_APPLY_FILTER));
                                else if (x instanceof MethodInfo x2)
-                                       
work.add(ap.findTopDown(x2).filter(CONTEXT_APPLY_FILTER).map(ai -> 
(AnnotationInfo<?>)ai));
+                                       
work.add(ap.findTopDown(x2).filter(CONTEXT_APPLY_FILTER));
                                else
                                        illegalArg("Invalid type passed to 
applyAnnotations:  {0}", cn(x));
                        });
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/InvalidAnnotationException.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/InvalidAnnotationException.java
index 1ab35beb9f..8bf7ee9546 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/InvalidAnnotationException.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/InvalidAnnotationException.java
@@ -45,13 +45,13 @@ public class InvalidAnnotationException extends 
BasicRuntimeException {
         */
        @SafeVarargs
        public static void assertNoInvalidAnnotations(MethodInfo onMethod, 
Class<? extends Annotation>...types) throws InvalidAnnotationException {
-               Annotation a = Arrays.stream(types)
+               Arrays.stream(types)
                        .map(t -> 
onMethod.getAnnotations(t).findFirst().map(AnnotationInfo::inner).orElse(null))
                        .filter(Objects::nonNull)
                        .findFirst()
-                       .orElse(null);
-               if (nn(a))
-                       throw new InvalidAnnotationException("@{0} annotation 
cannot be used in a @{1} bean.  Method=''{2}''", scn(a), 
scn(onMethod.getDeclaringClass()), onMethod);
+                       .ifPresent(a -> {
+                               throw new InvalidAnnotationException("@{0} 
annotation cannot be used in a @{1} bean.  Method=''{2}''", scn(a), 
scn(onMethod.getDeclaringClass()), onMethod);
+                       });
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
index bd1372a36b..f7cdd68a0e 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationMeta.java
@@ -65,9 +65,9 @@ public class RemoteOperationMeta {
                        var mi = MethodInfo.of(m);
                        AnnotationProvider ap = AnnotationProvider.INSTANCE;
 
-                       List<AnnotationInfo<?>> al = 
ap.findTopDown(mi).filter(REMOTE_OP_GROUP).map(ai -> 
(AnnotationInfo<?>)ai).collect(Collectors.toList());
+                       List<AnnotationInfo<?>> al = 
ap.findTopDown(mi).filter(REMOTE_OP_GROUP).collect(Collectors.toList());
                        if (al.isEmpty())
-                               al = 
rstream(mi.getReturnType().unwrap(Value.class, 
Optional.class).getAnnotations()).filter(REMOTE_OP_GROUP).map(ai -> 
(AnnotationInfo<?>)ai).collect(Collectors.toList());
+                               al = 
ap.findTopDown(mi.getReturnType().unwrap(Value.class, 
Optional.class)).filter(REMOTE_OP_GROUP).collect(Collectors.toList());
 
                        var _httpMethod = Value.<String>empty();
                        var _path = Value.<String>empty();
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index fa96a8a6ae..fc9e05b48d 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1773,9 +1773,9 @@ public class RestContext extends Context {
                                ));
                        // @formatter:on
 
-               rci.getAllMethods().stream().filter(x -> 
x.hasAnnotation(RestInject.class)).forEach(x -> {
-                       var rt = x.getReturnType().<Object>inner();
-                       var name = 
RestInjectAnnotation.name(x.getAnnotations(RestInject.class).findFirst().map(AnnotationInfo::inner).orElse(null));
+                       rci.getAllMethods().stream().filter(x -> 
x.hasAnnotation(RestInject.class)).forEach(x -> {
+                               var rt = x.getReturnType().<Object>inner();
+                               var name = 
RestInjectAnnotation.name(x.getAnnotations(RestInject.class).findFirst().map(AnnotationInfo::inner).orElse(null));
                                if (! (DELAYED_INJECTION.contains(rt) || 
DELAYED_INJECTION_NAMES.contains(name))) {
                                        // @formatter:off
                                        beanStore
@@ -1787,7 +1787,7 @@ public class RestContext extends Context {
                        });
 
                        var vrs = varResolver().build().createSession();
-                       var work = AnnotationWorkList.of(vrs, 
rstream(rci.getAnnotations()).filter(CONTEXT_APPLY_FILTER).map(ai -> 
(AnnotationInfo<?>)ai));
+                       var work = AnnotationWorkList.of(vrs, 
AnnotationProvider.INSTANCE.findTopDown(rci).filter(CONTEXT_APPLY_FILTER));
 
                        apply(work);
                        beanContext().apply(work);
@@ -4583,7 +4583,7 @@ public class RestContext extends Context {
                        // @formatter:on
 
                        for (var mi : rci.getPublicMethods()) {
-                               List<AnnotationInfo<?>> al = 
ap.findTopDown(mi).filter(REST_OP_GROUP).map(ai -> 
(AnnotationInfo<?>)ai).collect(Collectors.toList());
+                               List<AnnotationInfo<?>> al = 
ap.findTopDown(mi).filter(REST_OP_GROUP).collect(Collectors.toList());
 
                                // Also include methods on @Rest-annotated 
interfaces.
                                if (al.isEmpty()) {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index 13ac3d41b5..e9537e37b0 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -135,7 +135,7 @@ public class RestOpContext extends Context implements 
Comparable<RestOpContext>
                                var vr = context.getVarResolver();
                                var vrs = vr.createSession();
 
-                               var work = AnnotationWorkList.of(vrs, 
ap.findTopDown(mi, SELF, MATCHING_METHODS, DECLARING_CLASS, RETURN_TYPE, 
PACKAGE).filter(CONTEXT_APPLY_FILTER).map(ai -> (AnnotationInfo<?>)ai));
+                               var work = AnnotationWorkList.of(vrs, 
ap.findTopDown(mi, SELF, MATCHING_METHODS, DECLARING_CLASS, RETURN_TYPE, 
PACKAGE).filter(CONTEXT_APPLY_FILTER));
 
                                apply(work);
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
index 1971987559..a15e15e861 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/debug/BasicDebugEnablement.java
@@ -25,6 +25,7 @@ import java.util.*;
 import org.apache.juneau.*;
 import org.apache.juneau.cp.*;
 import org.apache.juneau.common.reflect.*;
+import org.apache.juneau.common.utils.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.util.*;
@@ -85,11 +86,14 @@ public class BasicDebugEnablement extends DebugEnablement {
                // @formatter:off
                ci.getPublicMethods().stream()
                        .forEach(x ->
-                               rstream(x.getAllAnnotations())
+                               ap.findTopDown(x)
                                        .filter(REST_OP_GROUP)
                                        .flatMap(ai -> 
ai.getValue(String.class, "debug").stream())
+                                       .filter(Utils::isNotEmpty)
                                        .map(varResolver::resolve)
-                                       .forEach(y -> 
opt(Enablement.fromString(y)).ifPresent(e -> b.enable(e, x.getFullName())))
+                                       .map(Enablement::fromString)
+                                       .filter(Objects::nonNull)
+                                       .forEach(e -> b.enable(e, 
x.getFullName()))
                        );
                // @formatter:on
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
index 29a0c21e05..6d97fb5c2c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
@@ -16,13 +16,11 @@
  */
 package org.apache.juneau.rest.matcher;
 
-import static org.apache.juneau.common.utils.CollectionUtils.*;
 import static org.apache.juneau.common.utils.StringUtils.*;
 import static org.apache.juneau.rest.annotation.RestOpAnnotation.*;
 
-import org.apache.juneau.common.collections.*;
-import org.apache.juneau.common.utils.*;
 import org.apache.juneau.common.reflect.*;
+import org.apache.juneau.common.utils.*;
 
 import jakarta.servlet.http.*;
 
@@ -48,9 +46,13 @@ public class ClientVersionMatcher extends RestMatcher {
         */
        public ClientVersionMatcher(String clientVersionHeader, MethodInfo mi) {
                this.clientVersionHeader = isEmpty(clientVersionHeader) ? 
"Client-Version" : clientVersionHeader;
-               Value<String> clientVersion = Value.empty();
-               
rstream(mi.getAllAnnotations()).filter(REST_OP_GROUP).forEach(ai -> 
ai.getValue(String.class, "clientVersion").filter(NOT_EMPTY).ifPresent(x -> 
clientVersion.set(x)));
-               range = new VersionRange(clientVersion.orElse(null));
+               var clientVersion = AnnotationProvider.INSTANCE.find(mi)
+                       .filter(REST_OP_GROUP)
+                       .flatMap(ai -> ai.getValue(String.class, 
"clientVersion").stream())
+                       .filter(NOT_EMPTY)
+                       .findFirst()
+                       .orElse(null);
+               range = new VersionRange(clientVersion);
        }
 
        @Override /* Overridden from RestMatcher */
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
index ce1778c99f..c5910ce539 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
@@ -276,7 +276,7 @@ public class BasicSwaggerProviderSession {
 
                        Method m = sm.getJavaMethod();
                        var mi = MethodInfo.of(m);
-                       List<AnnotationInfo<?>> al = 
rstream(mi.getAllAnnotations()).filter(REST_OP_GROUP).map(ai -> 
(AnnotationInfo<?>)ai).collect(Collectors.toList());
+                       List<AnnotationInfo<?>> al = 
ap.findTopDown(mi).filter(REST_OP_GROUP).collect(Collectors.toList());
                        String mn = m.getName();
 
                        // Get the operation from the existing swagger so far.
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
index ce4b272c71..08adb127d1 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/annotation/BeanConfigAnnotation_Test.java
@@ -145,7 +145,7 @@ class BeanConfigAnnotation_Test extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void a01_basic() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var bs = JsonSerializer.create().apply(al).build().getSession();
 
                check("PRIVATE", bs.getBeanClassVisibility());
@@ -188,7 +188,7 @@ class BeanConfigAnnotation_Test extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void b01_noValues() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var js = JsonSerializer.create().apply(al).build();
                var bc = js.getBeanContext();
                check("PUBLIC", bc.getBeanClassVisibility());
@@ -233,7 +233,7 @@ class BeanConfigAnnotation_Test extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void c01_noAnnotation() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var js = JsonSerializer.create().apply(al).build();
                var bc = js.getBeanContext();
                check("PUBLIC", bc.getBeanClassVisibility());
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java
index f7f6bda985..75fcf949a0 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java
@@ -72,7 +72,7 @@ class Bean_Test extends TestBase {
        static ClassInfo a2ci = ClassInfo.of(A2Config.class);
 
        @Test void a02_beanAnnotationOverridesPrivate_usingConfig() throws 
Exception {
-               var al = 
AnnotationWorkList.of(rstream(a2ci.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(rstream(a2ci.getAnnotations()));
                var js = Json5Serializer.create().apply(al).build();
                var jp = JsonParser.create().apply(al).build();
 
@@ -156,7 +156,7 @@ class Bean_Test extends TestBase {
        static ClassInfo b2ci = ClassInfo.of(B2Config.class);
 
        @Test void a04_beanxAnnotationOverridesPrivate_usingConfig() throws 
Exception {
-               var al = 
AnnotationWorkList.of(rstream(b2ci.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(rstream(b2ci.getAnnotations()));
                var js = Json5Serializer.create().apply(al).build();
                var jp = JsonParser.create().apply(al).build();
 
@@ -223,7 +223,7 @@ class Bean_Test extends TestBase {
        }
 
        @Test void 
d03_beanPropertiesExcludePropertiesCombined_beanConfigOverride() throws 
Exception {
-               var al = AnnotationWorkList.of(vr, 
rstream(dConfig.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(vr, 
rstream(dConfig.getAnnotations()));
                var js = Json5Serializer.create().apply(al).build();
                var jp = JsonParser.create().apply(al).build();
 
@@ -235,7 +235,7 @@ class Bean_Test extends TestBase {
        }
 
        @Test void d04_beanPXpCombined_beanConfigOverride() throws Exception {
-               var al = AnnotationWorkList.of(vr, 
rstream(dConfig.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(vr, 
rstream(dConfig.getAnnotations()));
                var js = Json5Serializer.create().apply(al).build();
                var jp = JsonParser.create().apply(al).build();
 
@@ -334,7 +334,7 @@ class Bean_Test extends TestBase {
        }
 
        @Test void 
e03_beanPropertiesExcludePropertiesCombined_multipleBeanAnnotations_beanConfigOverride()
 throws Exception {
-               var al = AnnotationWorkList.of(vr, 
rstream(eConfig.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(vr, 
rstream(eConfig.getAnnotations()));
                var js = Json5Serializer.create().apply(al).build();
                var jp = JsonParser.create().apply(al).build();
 
@@ -346,7 +346,7 @@ class Bean_Test extends TestBase {
        }
 
        @Test void 
e04_beanPXpCombined_multipleBeanAnnotations_beanConfigOverride() throws 
Exception {
-               var al = AnnotationWorkList.of(vr, 
rstream(eConfig.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(vr, 
rstream(eConfig.getAnnotations()));
                var js = Json5Serializer.create().apply(al).build();
                var jp = JsonParser.create().apply(al).build();
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/AnnotationInfoTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/AnnotationInfoTest.java
index b92461028d..6629f4abb3 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/AnnotationInfoTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/AnnotationInfoTest.java
@@ -51,7 +51,7 @@ class AnnotationInfoTest extends TestBase {
 
        @Test void d01_isInGroup() {
                var d = ClassInfo.of(D.class);
-               var l = rstream(d.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).filter(x -> x.isInGroup(D1.class));
+               var l = rstream(d.getAnnotations()).filter(x -> 
x.isInGroup(D1.class));
                assertSize(2, l);
        }
 }
\ No newline at end of file
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
index d2d49b39a4..5721230421 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
@@ -591,9 +591,9 @@ public class ClassInfo_Test extends TestBase {
 
        @Test void getAnnotationsMapParentFirst() {
                // Note: Order changed after inlining - interfaces now 
processed when they appear in hierarchy, not after all classes
-               check("@PA(10),@A(2),@A(1),@A(5),@A(3),@A(6),@A(7)", 
rstream(g3.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).collect(Collectors.toList()));
-               check("@PA(10),@A(2),@A(1),@A(5),@A(3),@A(6),@A(7)", 
rstream(g4.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).collect(Collectors.toList()));
-               check("@PA(10),@A(3)", rstream(g5.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).collect(Collectors.toList()));
+               check("@PA(10),@A(2),@A(1),@A(5),@A(3),@A(6),@A(7)", 
rstream(g3.getAnnotations()).collect(Collectors.toList()));
+               check("@PA(10),@A(2),@A(1),@A(5),@A(3),@A(6),@A(7)", 
rstream(g4.getAnnotations()).collect(Collectors.toList()));
+               check("@PA(10),@A(3)", 
rstream(g5.getAnnotations()).collect(Collectors.toList()));
        }
 
        @A(1) @AConfig(1) interface GBI1 {}
@@ -609,9 +609,9 @@ public class ClassInfo_Test extends TestBase {
        static ClassInfo gb3=of(GB3.class), gb4=of(GB4.class), 
gb5=of(GB5.class);
 
        @Test void getConfigAnnotationsMapParentFirst() {
-               
check("@AConfig(2),@AConfig(1),@AConfig(5),@AConfig(3),@AConfig(6),@AConfig(7)",
 rstream(gb3.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).filter(CONTEXT_APPLY_FILTER).collect(Collectors.toList()));
-               
check("@AConfig(2),@AConfig(1),@AConfig(5),@AConfig(3),@AConfig(6),@AConfig(7)",
 rstream(gb4.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).filter(CONTEXT_APPLY_FILTER).collect(Collectors.toList()));
-               check("@AConfig(3)", rstream(gb5.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai).filter(CONTEXT_APPLY_FILTER).collect(Collectors.toList()));
+               
check("@AConfig(2),@AConfig(1),@AConfig(5),@AConfig(3),@AConfig(6),@AConfig(7)",
 
rstream(gb3.getAnnotations()).filter(CONTEXT_APPLY_FILTER).collect(Collectors.toList()));
+               
check("@AConfig(2),@AConfig(1),@AConfig(5),@AConfig(3),@AConfig(6),@AConfig(7)",
 
rstream(gb4.getAnnotations()).filter(CONTEXT_APPLY_FILTER).collect(Collectors.toList()));
+               check("@AConfig(3)", 
rstream(gb5.getAnnotations()).filter(CONTEXT_APPLY_FILTER).collect(Collectors.toList()));
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
index 11fed59691..0b553bbc71 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/MethodInfo_Test.java
@@ -363,14 +363,14 @@ class MethodInfo_Test extends TestBase {
                check(null, Stream.<Class<? extends Annotation>>of(AX.class, 
A.class).map(t -> 
c_a5.getAnnotations(t).findFirst().map(AnnotationInfo::inner).orElse(null)).filter(Objects::nonNull).findFirst().orElse(null));
        }
 
-       @Test void getAnnotationsMapParentFirst() {
-               // Note: Order changed after inlining - method annotations now 
come after class annotations
-               check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a1)", 
rstream(c_a1.getAllAnnotations()).collect(Collectors.toList()));
-               check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a2a),@A(a2b)", 
rstream(c_a2.getAllAnnotations()).collect(Collectors.toList()));
-               check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a3)", 
rstream(c_a3.getAllAnnotations()).collect(Collectors.toList()));
-               check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a4)", 
rstream(c_a4.getAllAnnotations()).collect(Collectors.toList()));
-               check("@PA(10),@A(C1),@A(C2),@A(C3)", 
rstream(c_a5.getAllAnnotations()).collect(Collectors.toList()));
-       }
+//     @Test void getAnnotationsMapParentFirst() {
+//             // Note: Order changed after inlining - method annotations now 
come after class annotations
+//             check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a1)", 
rstream(c_a1.getAllAnnotations()).collect(Collectors.toList()));
+//             check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a2a),@A(a2b)", 
rstream(c_a2.getAllAnnotations()).collect(Collectors.toList()));
+//             check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a3)", 
rstream(c_a3.getAllAnnotations()).collect(Collectors.toList()));
+//             check("@PA(10),@A(C1),@A(C2),@A(C3),@A(a4)", 
rstream(c_a4.getAllAnnotations()).collect(Collectors.toList()));
+//             check("@PA(10),@A(C1),@A(C2),@A(C3)", 
rstream(c_a5.getAllAnnotations()).collect(Collectors.toList()));
+//     }
 
        @A("C1") @AConfig("C1")
        public interface CB1 {
@@ -406,14 +406,14 @@ class MethodInfo_Test extends TestBase {
                cb_a4 = ofm(CB3.class, "a4"),  // NOSONAR
                cb_a5 = ofm(CB3.class, "a5");  // NOSONAR
 
-       @Test void getConfigAnnotationsMapParentFirst() {
-               // Note: Order changed after inlining - method annotations now 
come after class annotations
-               check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a1)", 
rstream(cb_a1.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
-               
check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a2a),@AConfig(a2b)", 
rstream(cb_a2.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
-               check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a3)", 
rstream(cb_a3.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
-               check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a4)", 
rstream(cb_a4.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
-               check("@AConfig(C1),@AConfig(C2),@AConfig(C3)", 
rstream(cb_a5.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
-       }
+//     @Test void getConfigAnnotationsMapParentFirst() {
+//             // Note: Order changed after inlining - method annotations now 
come after class annotations
+//             check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a1)", 
rstream(cb_a1.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
+//             
check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a2a),@AConfig(a2b)", 
rstream(cb_a2.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
+//             check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a3)", 
rstream(cb_a3.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
+//             check("@AConfig(C1),@AConfig(C2),@AConfig(C3),@AConfig(a4)", 
rstream(cb_a4.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
+//             check("@AConfig(C1),@AConfig(C2),@AConfig(C3)", 
rstream(cb_a5.getAllAnnotations()).filter(CONTEXT_APPLY_FILTER).toList());
+//     }
 
        
//-----------------------------------------------------------------------------------------------------------------
        // Return type.
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/csv/annotation/CsvConfig_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/csv/annotation/CsvConfig_Test.java
index 8e4db44a61..4066d2d6e5 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/csv/annotation/CsvConfig_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/csv/annotation/CsvConfig_Test.java
@@ -38,12 +38,12 @@ class CsvConfig_Test extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void defaultsSerializer() {
-               var al = 
AnnotationWorkList.of(rstream(b.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->CsvSerializer.create().apply(al).build());
        }
 
        @Test void defaultsParser() {
-               var al = 
AnnotationWorkList.of(rstream(b.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(rstream(b.getAnnotations()));
                assertDoesNotThrow(()->CsvParser.create().apply(al).build());
        }
 
@@ -55,12 +55,12 @@ class CsvConfig_Test extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = 
AnnotationWorkList.of(rstream(b.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->CsvSerializer.create().apply(al).build());
        }
 
        @Test void noAnnotationParser() {
-               var al = 
AnnotationWorkList.of(rstream(b.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(rstream(b.getAnnotations()));
                assertDoesNotThrow(()->CsvParser.create().apply(al).build());
        }
 }
\ No newline at end of file
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/html/HtmlConfigAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/html/HtmlConfigAnnotation_Test.java
index 751c1c8c07..25e4014150 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/html/HtmlConfigAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/html/HtmlConfigAnnotation_Test.java
@@ -57,7 +57,7 @@ class HtmlConfigAnnotation_Test extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = HtmlSerializer.create().apply(al).build().getSession();
                check("true", x.isAddBeanTypes());
                check("true", x.isAddKeyValueTableHeaders());
@@ -68,7 +68,7 @@ class HtmlConfigAnnotation_Test extends TestBase {
        }
 
        @Test void basicParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                
assertDoesNotThrow(()->HtmlParser.create().apply(al).build().createSession());
        }
 
@@ -81,7 +81,7 @@ class HtmlConfigAnnotation_Test extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void defaultsSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = HtmlSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isAddKeyValueTableHeaders());
@@ -92,7 +92,7 @@ class HtmlConfigAnnotation_Test extends TestBase {
        }
 
        @Test void defaultsParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->HtmlParser.create().apply(al).build().createSession());
        }
 
@@ -104,7 +104,7 @@ class HtmlConfigAnnotation_Test extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = HtmlSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isAddKeyValueTableHeaders());
@@ -115,7 +115,7 @@ class HtmlConfigAnnotation_Test extends TestBase {
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                
assertDoesNotThrow(()->HtmlParser.create().apply(al).build().createSession());
        }
 }
\ No newline at end of file
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/html/HtmlDocConfigAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/html/HtmlDocConfigAnnotation_Test.java
index 8a4d5eb1b8..d20d9d0060 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/html/HtmlDocConfigAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/html/HtmlDocConfigAnnotation_Test.java
@@ -77,7 +77,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basic() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("foo", x.getAside());
                check("foo", x.getFooter());
@@ -102,7 +102,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void defaults() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("", x.getAside());
                check("", x.getFooter());
@@ -126,7 +126,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotation() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("", x.getAside());
                check("", x.getFooter());
@@ -161,7 +161,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo d1 = ClassInfo.of(D1.class);
 
        @Test void inheritance1() {
-               var al = AnnotationWorkList.of(sr, 
rstream(d1.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(d1.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("foo2,foo", x.getAside());
                check("foo2,foo", x.getFooter());
@@ -189,7 +189,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo d2 = ClassInfo.of(D2.class);
 
        @Test void inheritance2() {
-               var al = AnnotationWorkList.of(sr, 
rstream(d2.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(d2.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("foo,foo2", x.getAside());
                check("foo,foo2", x.getFooter());
@@ -217,7 +217,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo d3 = ClassInfo.of(D3.class);
 
        @Test void inheritance3() {
-               var al = AnnotationWorkList.of(sr, 
rstream(d3.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(d3.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("foo2", x.getAside());
                check("foo2", x.getFooter());
@@ -245,7 +245,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo d4 = ClassInfo.of(D4.class);
 
        @Test void inheritance4() {
-               var al = AnnotationWorkList.of(sr, 
rstream(d4.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(d4.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("", x.getAside());
                check("", x.getFooter());
@@ -299,7 +299,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        }
 
        @Test void widgets_basic() {
-               var al = AnnotationWorkList.of(sr, 
rstream(e.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(e.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("$W{E}", x.getAside());
                check("$W{E}", x.getFooter());
@@ -316,7 +316,7 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        }
 
        @Test void widgets_resolution() throws Exception {
-               var al = AnnotationWorkList.of(sr, 
rstream(e.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(e.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                var r = x.serialize(null).replaceAll("[\r\n]+", "|");
                assertContainsAll(r, 
"<aside>xxx</aside>","<footer>xxx</footer>","<head>xxx","<style>@import 
\"xxx\"; xxx zzz</style>","<nav><ol><li>xxx</li></ol>xxx</nav>","<script>xxx| 
yyy|</script>");
@@ -362,31 +362,31 @@ class HtmlDocConfigAnnotation_Test extends TestBase {
        static ClassInfo f5 = ClassInfo.of(F5.class);
 
        @Test void e01_rankedAnnotations_f1() {
-               var al = AnnotationWorkList.of(sr, 
rstream(f1.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(f1.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("f1", x.getAside());
        }
 
        @Test void e02_rankedAnnotations_f2() {
-               var al = AnnotationWorkList.of(sr, 
rstream(f2.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(f2.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("f1", x.getAside());
        }
 
        @Test void e03_rankedAnnotations_f3() {
-               var al = AnnotationWorkList.of(sr, 
rstream(f3.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(f3.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("f3", x.getAside());
        }
 
        @Test void e04_rankedAnnotations_f4() {
-               var al = AnnotationWorkList.of(sr, 
rstream(f4.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(f4.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("f3", x.getAside());
        }
 
        @Test void e05_rankedAnnotations_f5() {
-               var al = AnnotationWorkList.of(sr, 
rstream(f5.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, 
rstream(f5.getAnnotations()));
                var x = 
HtmlDocSerializer.create().apply(al).build().getSession();
                check("f5", x.getAside());
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/json/JsonConfigAnnotationTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/json/JsonConfigAnnotationTest.java
index d0495ab0c1..93d931d3fb 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/json/JsonConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/json/JsonConfigAnnotationTest.java
@@ -54,7 +54,7 @@ class JsonConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = JsonSerializer.create().apply(al).build().getSession();
                check("true", x.isAddBeanTypes());
                check("true", x.isEscapeSolidus());
@@ -62,7 +62,7 @@ class JsonConfigAnnotationTest extends TestBase {
        }
 
        @Test void basicParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = JsonParser.create().apply(al).build().getSession();
                check("true", x.isValidateEnd());
        }
@@ -76,7 +76,7 @@ class JsonConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = JsonSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isEscapeSolidus());
@@ -84,7 +84,7 @@ class JsonConfigAnnotationTest extends TestBase {
        }
 
        @Test void noValuesParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = JsonParser.create().apply(al).build().getSession();
                check("false", x.isValidateEnd());
        }
@@ -97,7 +97,7 @@ class JsonConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = JsonSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isEscapeSolidus());
@@ -105,7 +105,7 @@ class JsonConfigAnnotationTest extends TestBase {
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = JsonParser.create().apply(al).build().getSession();
                check("false", x.isValidateEnd());
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaConfigAnnotationTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaConfigAnnotationTest.java
index 173fa7dd29..5bf19c3ca4 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaConfigAnnotationTest.java
@@ -68,7 +68,7 @@ class JsonSchemaConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basic() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = 
JsonSchemaGenerator.create().apply(al).build().getSession();
                check("BEAN", x.getAddDescriptionsTo());
                check("BEAN", x.getAddExamplesTo());
@@ -88,7 +88,7 @@ class JsonSchemaConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValues() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = 
JsonSchemaGenerator.create().apply(al).build().getSession();
                check("", x.getAddDescriptionsTo());
                check("", x.getAddExamplesTo());
@@ -107,7 +107,7 @@ class JsonSchemaConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotation() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = 
JsonSchemaGenerator.create().apply(al).build().getSession();
                check("", x.getAddDescriptionsTo());
                check("", x.getAddExamplesTo());
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
index 3ca2898d9f..03880f00d5 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
@@ -1302,7 +1302,7 @@ class JsonSchemaGeneratorTest extends TestBase {
        static ClassInfo bConfig = ClassInfo.of(BConfig.class);
 
        @Test void schemaOnClass_onConfig() throws Exception {
-               var al = 
AnnotationWorkList.of(rstream(bConfig.getAnnotations()).map(ai -> 
(AnnotationInfo<?>)ai));
+               var al = 
AnnotationWorkList.of(rstream(bConfig.getAnnotations()));
                var x = 
JsonSchemaGenerator.create().apply(al).build().getSession();
                assertContains("$ref", r(x.getSchema(new B())));
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/msgpack/MsgPackConfigAnnotationTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/msgpack/MsgPackConfigAnnotationTest.java
index 132ed2fdec..de58ae64b4 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/msgpack/MsgPackConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/msgpack/MsgPackConfigAnnotationTest.java
@@ -51,13 +51,13 @@ class MsgPackConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = 
MsgPackSerializer.create().apply(al).build().getSession();
                check("true", x.isAddBeanTypes());
        }
 
        @Test void basicParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                
assertDoesNotThrow(()->MsgPackParser.create().apply(al).build().createSession());
        }
 
@@ -70,13 +70,13 @@ class MsgPackConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = 
MsgPackSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
        }
 
        @Test void noValuesParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->MsgPackParser.create().apply(al).build().createSession());
        }
 
@@ -88,13 +88,13 @@ class MsgPackConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = 
MsgPackSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                
assertDoesNotThrow(()->MsgPackParser.create().apply(al).build().createSession());
        }
 }
\ No newline at end of file
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/oapi/OpenApiConfigAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/oapi/OpenApiConfigAnnotation_Test.java
index 91f33b381b..2e03ed8fb9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/oapi/OpenApiConfigAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/oapi/OpenApiConfigAnnotation_Test.java
@@ -41,12 +41,12 @@ class OpenApiConfigAnnotation_Test extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->OpenApiSerializer.create().apply(al).build().createSession());
        }
 
        @Test void noValuesParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->OpenApiParser.create().apply(al).build().createSession());
        }
 
@@ -58,12 +58,12 @@ class OpenApiConfigAnnotation_Test extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                
assertDoesNotThrow(()->OpenApiSerializer.create().apply(al).build().createSession());
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                
assertDoesNotThrow(()->OpenApiParser.create().apply(al).build().createSession());
        }
 }
\ No newline at end of file
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/parser/ParserConfigAnnotationTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/parser/ParserConfigAnnotationTest.java
index 1504eec0de..af2c810f36 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/parser/ParserConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/parser/ParserConfigAnnotationTest.java
@@ -70,7 +70,7 @@ class ParserConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicReaderParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = JsonParser.create().apply(al).build().getSession();
                check("true", x.isAutoCloseStreams());
                check("1", x.getDebugOutputLines());
@@ -83,7 +83,7 @@ class ParserConfigAnnotationTest extends TestBase {
        }
 
        @Test void basicInputStreamParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = MsgPackParser.create().apply(al).build().getSession();
                check("true", x.isAutoCloseStreams());
                check("HEX", x.getBinaryFormat());
@@ -103,7 +103,7 @@ class ParserConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesReaderParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = JsonParser.create().apply(al).build().getSession();
                check("false", x.isAutoCloseStreams());
                check("5", x.getDebugOutputLines());
@@ -116,7 +116,7 @@ class ParserConfigAnnotationTest extends TestBase {
        }
 
        @Test void noValuesInputStreamParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = MsgPackParser.create().apply(al).build().getSession();
                check("false", x.isAutoCloseStreams());
                check("HEX", x.getBinaryFormat());
@@ -135,7 +135,7 @@ class ParserConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationReaderParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = JsonParser.create().apply(al).build().getSession();
                check("false", x.isAutoCloseStreams());
                check("5", x.getDebugOutputLines());
@@ -148,7 +148,7 @@ class ParserConfigAnnotationTest extends TestBase {
        }
 
        @Test void noAnnotationInputStreamParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = MsgPackParser.create().apply(al).build().getSession();
                check("false", x.isAutoCloseStreams());
                check("HEX", x.getBinaryFormat());
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/plaintext/PlainTextConfigAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/plaintext/PlainTextConfigAnnotation_Test.java
index a419067b94..311cb0f066 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/plaintext/PlainTextConfigAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/plaintext/PlainTextConfigAnnotation_Test.java
@@ -41,12 +41,12 @@ class PlainTextConfigAnnotation_Test extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->PlainTextSerializer.create().apply(al).build().createSession());
        }
 
        @Test void noValuesParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                
assertDoesNotThrow(()->PlainTextParser.create().apply(al).build().createSession());
        }
 
@@ -58,12 +58,12 @@ class PlainTextConfigAnnotation_Test extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                
assertDoesNotThrow(()->PlainTextSerializer.create().apply(al).build().createSession());
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                
assertDoesNotThrow(()->PlainTextParser.create().apply(al).build().createSession());
        }
 }
\ No newline at end of file
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
index 602b223f7a..4fd7dc75e4 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
@@ -112,7 +112,7 @@ class RestClient_Config_Context_Test extends TestBase {
                
client().applyAnnotations(A6b.class).build().post("/echoBody",A6a.get()).run().cacheContent().assertContent("{bar:2,baz:3,foo:1}").getContent().as(A6a.class);
                
client().applyAnnotations(A6c.class).build().post("/echoBody",A6a.get()).run().cacheContent().assertContent("{bar:2,baz:3,foo:1}").getContent().as(A6a.class);
                
client().applyAnnotations(A6d.class.getMethod("foo")).build().post("/echoBody",A6a.get()).run().cacheContent().assertContent("{bar:2,baz:3,foo:1}").getContent().as(A6a.class);
-               var al = 
AnnotationWorkList.of(rstream(ClassInfo.of(A6c.class).getAnnotations()).filter(CONTEXT_APPLY_FILTER).map(ai
 -> (AnnotationInfo<?>)ai));
+               var al = 
AnnotationWorkList.of(rstream(ClassInfo.of(A6c.class).getAnnotations()).filter(CONTEXT_APPLY_FILTER));
                
client().apply(al).build().post("/echoBody",A6a.get()).run().cacheContent().assertContent("{bar:2,baz:3,foo:1}").getContent().as(A6a.class);
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/serializer/SerializerConfigAnnotationTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/serializer/SerializerConfigAnnotationTest.java
index 78a6aed736..0f3ffec7f6 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/serializer/SerializerConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/serializer/SerializerConfigAnnotationTest.java
@@ -80,7 +80,7 @@ class SerializerConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicWriterSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = JsonSerializer.create().apply(al).build().getSession();
                check("true", ((SerializerSession)x).isAddBeanTypes());
                check("true", x.isAddRootType());
@@ -104,7 +104,7 @@ class SerializerConfigAnnotationTest extends TestBase {
        }
 
        @Test void basicOutputStreamSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = 
MsgPackSerializer.create().apply(al).build().getSession();
                check("true", ((SerializerSession)x).isAddBeanTypes());
                check("true", x.isAddRootType());
@@ -134,7 +134,7 @@ class SerializerConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesWriterSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = JsonSerializer.create().apply(al).build().getSession();
                check("false", ((SerializerSession)x).isAddBeanTypes());
                check("false", x.isAddRootType());
@@ -154,7 +154,7 @@ class SerializerConfigAnnotationTest extends TestBase {
        }
 
        @Test void noValuesOutputStreamSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = 
MsgPackSerializer.create().apply(al).build().getSession();
                check("false", ((SerializerSession)x).isAddBeanTypes());
                check("false", x.isAddRootType());
@@ -179,7 +179,7 @@ class SerializerConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationWriterSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = JsonSerializer.create().apply(al).build().getSession();
                check("false", ((SerializerSession)x).isAddBeanTypes());
                check("false", x.isAddRootType());
@@ -199,7 +199,7 @@ class SerializerConfigAnnotationTest extends TestBase {
        }
 
        @Test void noAnnotationOutputStreamSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = 
MsgPackSerializer.create().apply(al).build().getSession();
                check("false", ((SerializerSession)x).isAddBeanTypes());
                check("false", x.isAddRootType());
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/soap/SoapXmlConfigAnnotationTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/soap/SoapXmlConfigAnnotationTest.java
index 39bb069745..3f10a32a7b 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/soap/SoapXmlConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/soap/SoapXmlConfigAnnotationTest.java
@@ -51,7 +51,7 @@ class SoapXmlConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basic() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = 
SoapXmlSerializer.create().apply(al).build().getSession();
                check("foo", x.getSoapAction());
        }
@@ -65,7 +65,7 @@ class SoapXmlConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValues() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = 
SoapXmlSerializer.create().apply(al).build().getSession();
                check("http://www.w3.org/2003/05/soap-envelope";, 
x.getSoapAction());
        }
@@ -78,7 +78,7 @@ class SoapXmlConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotation() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = 
SoapXmlSerializer.create().apply(al).build().getSession();
                check("http://www.w3.org/2003/05/soap-envelope";, 
x.getSoapAction());
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/uon/UonConfigAnnotationTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/uon/UonConfigAnnotationTest.java
index c896fd82ef..dc872bea26 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/uon/UonConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/uon/UonConfigAnnotationTest.java
@@ -55,7 +55,7 @@ class UonConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = UonSerializer.create().apply(al).build().getSession();
                check("true", x.isAddBeanTypes());
                check("true", x.isEncoding());
@@ -63,7 +63,7 @@ class UonConfigAnnotationTest extends TestBase {
        }
 
        @Test void basicParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = UonParser.create().apply(al).build().getSession();
                check("true", x.isDecoding());
                check("true", x.isValidateEnd());
@@ -78,7 +78,7 @@ class UonConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = UonSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isEncoding());
@@ -86,7 +86,7 @@ class UonConfigAnnotationTest extends TestBase {
        }
 
        @Test void noValuesParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = UonParser.create().apply(al).build().getSession();
                check("false", x.isDecoding());
                check("false", x.isValidateEnd());
@@ -100,7 +100,7 @@ class UonConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = UonSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isEncoding());
@@ -108,7 +108,7 @@ class UonConfigAnnotationTest extends TestBase {
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = UonParser.create().apply(al).build().getSession();
                check("false", x.isDecoding());
                check("false", x.isValidateEnd());
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingConfigAnnotationTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingConfigAnnotationTest.java
index eb221887be..03ab4f4771 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingConfigAnnotationTest.java
@@ -51,13 +51,13 @@ class UrlEncodingConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = 
UrlEncodingSerializer.create().apply(al).build().getSession();
                check("true", x.isExpandedParams());
        }
 
        @Test void basicParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = 
UrlEncodingParser.create().apply(al).build().getSession();
                check("true", x.isExpandedParams());
        }
@@ -71,13 +71,13 @@ class UrlEncodingConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = 
UrlEncodingSerializer.create().apply(al).build().getSession();
                check("false", x.isExpandedParams());
        }
 
        @Test void noValuesParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = 
UrlEncodingParser.create().apply(al).build().getSession();
                check("false", x.isExpandedParams());
        }
@@ -90,13 +90,13 @@ class UrlEncodingConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = 
UrlEncodingSerializer.create().apply(al).build().getSession();
                check("false", x.isExpandedParams());
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = 
UrlEncodingParser.create().apply(al).build().getSession();
                check("false", x.isExpandedParams());
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlConfigAnnotationTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlConfigAnnotationTest.java
index 864fe937cc..c60ceb5946 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/xml/XmlConfigAnnotationTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/xml/XmlConfigAnnotationTest.java
@@ -101,7 +101,7 @@ class XmlConfigAnnotationTest extends TestBase {
        static ClassInfo a = ClassInfo.of(A.class);
 
        @Test void basicSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = XmlSerializer.create().apply(al).build().getSession();
                check("true", x.isAddBeanTypes());
                check("true", x.isAddNamespaceUrisToRoot());
@@ -112,7 +112,7 @@ class XmlConfigAnnotationTest extends TestBase {
        }
 
        @Test void basicParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(a.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(a.getAnnotations()));
                var x = XmlParser.create().apply(al).build().getSession();
                check("AA", x.getEventAllocator());
                check("true", x.isPreserveRootElement());
@@ -130,7 +130,7 @@ class XmlConfigAnnotationTest extends TestBase {
        static ClassInfo b = ClassInfo.of(B.class);
 
        @Test void noValuesSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = XmlSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isAddNamespaceUrisToRoot());
@@ -141,7 +141,7 @@ class XmlConfigAnnotationTest extends TestBase {
        }
 
        @Test void noValuesParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(b.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(b.getAnnotations()));
                var x = XmlParser.create().apply(al).build().getSession();
                check(null, x.getEventAllocator());
                check("false", x.isPreserveRootElement());
@@ -158,7 +158,7 @@ class XmlConfigAnnotationTest extends TestBase {
        static ClassInfo c = ClassInfo.of(C.class);
 
        @Test void noAnnotationSerializer() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = XmlSerializer.create().apply(al).build().getSession();
                check("false", x.isAddBeanTypes());
                check("false", x.isAddNamespaceUrisToRoot());
@@ -169,7 +169,7 @@ class XmlConfigAnnotationTest extends TestBase {
        }
 
        @Test void noAnnotationParser() {
-               var al = AnnotationWorkList.of(sr, 
rstream(c.getAnnotations()).map(ai -> (AnnotationInfo<?>)ai));
+               var al = AnnotationWorkList.of(sr, rstream(c.getAnnotations()));
                var x = XmlParser.create().apply(al).build().getSession();
                check(null, x.getEventAllocator());
                check("false", x.isPreserveRootElement());

Reply via email to