You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by gi...@apache.org on 2025/11/07 01:27:59 UTC

(juneau) branch asf-staging updated: Deploy documentation staging from 23a0d0a219a1967414fcd179b23b026bffcda33e 23a0d0a219a1967414fcd179b23b026bffcda33e

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 8a2f29856a Deploy documentation staging from 23a0d0a219a1967414fcd179b23b026bffcda33e 23a0d0a219a1967414fcd179b23b026bffcda33e
8a2f29856a is described below

commit 8a2f29856ad5a4a9298a2e93ecd87d03a0414262
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Fri Nov 7 01:27:53 2025 +0000

    Deploy documentation staging from 23a0d0a219a1967414fcd179b23b026bffcda33e 23a0d0a219a1967414fcd179b23b026bffcda33e
---
 site/xref/org/apache/juneau/BeanMeta.html          |  30 +-
 site/xref/org/apache/juneau/BeanPropertyMeta.html  |  10 +-
 site/xref/org/apache/juneau/BeanRegistry.html      |   2 +-
 site/xref/org/apache/juneau/ClassMeta.html         |  26 +-
 .../apache/juneau/common/reflect/ClassInfo.html    | 351 +++++++-------
 .../juneau/common/reflect/ConstructorInfo.html     | 183 ++++----
 .../apache/juneau/common/reflect/FieldInfo.html    | 507 ++++++++++-----------
 .../apache/juneau/common/reflect/MethodInfo.html   |  12 +-
 .../juneau/common/reflect/ParameterInfo.html       |   2 +-
 .../rest/swagger/BasicSwaggerProviderSession.html  |  16 +-
 site/xref/org/apache/juneau/swap/AutoListSwap.html |   8 +-
 site/xref/org/apache/juneau/swap/AutoMapSwap.html  |   8 +-
 .../org/apache/juneau/swap/AutoNumberSwap.html     |   8 +-
 .../org/apache/juneau/swap/AutoObjectSwap.html     |   8 +-
 .../xref/org/apache/juneau/swap/SurrogateSwap.html |   2 +-
 15 files changed, 578 insertions(+), 595 deletions(-)

diff --git a/site/xref/org/apache/juneau/BeanMeta.html b/site/xref/org/apache/juneau/BeanMeta.html
index 643e11c022..518771ecc8 100644
--- a/site/xref/org/apache/juneau/BeanMeta.html
+++ b/site/xref/org/apache/juneau/BeanMeta.html
@@ -238,8 +238,8 @@
 <a class="jxr_linenumber" name="L230" href="#L230">230</a> 
 <a class="jxr_linenumber" name="L231" href="#L231">231</a> 				Map&lt;String,BeanPropertyMeta.Builder&gt; normalProps = map();
 <a class="jxr_linenumber" name="L232" href="#L232">232</a> 
-<a class="jxr_linenumber" name="L233" href="#L233">233</a> 				<strong class="jxr_keyword">boolean</strong> hasBean = ci.hasAnnotation(ctx, Bean.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L234" href="#L234">234</a> 				<strong class="jxr_keyword">boolean</strong> hasBeanIgnore = ci.hasAnnotation(ctx, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L233" href="#L233">233</a> 				<strong class="jxr_keyword">boolean</strong> hasBean = ci.hasAnnotation(ctx.getAnnotationProvider(), Bean.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L234" href="#L234">234</a> 				<strong class="jxr_keyword">boolean</strong> hasBeanIgnore = ci.hasAnnotation(ctx.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L235" href="#L235">235</a> 
 <a class="jxr_linenumber" name="L236" href="#L236">236</a> 				<em class="jxr_comment">/// See if this class matches one the patterns in the exclude-class list.</em>
 <a class="jxr_linenumber" name="L237" href="#L237">237</a> 				<strong class="jxr_keyword">if</strong> (ctx.isNotABean(c))
@@ -256,7 +256,7 @@
 <a class="jxr_linenumber" name="L248" href="#L248">248</a> 					<strong class="jxr_keyword">return</strong> <span class="jxr_string">"Class is not serializable"</span>;
 <a class="jxr_linenumber" name="L249" href="#L249">249</a> 
 <a class="jxr_linenumber" name="L250" href="#L250">250</a> 				<em class="jxr_comment">// Look for @Beanc constructor on public constructors.</em>
-<a class="jxr_linenumber" name="L251" href="#L251">251</a> 				ci.getPublicConstructors().stream().filter(x -&gt; x.hasAnnotation(ctx, Beanc.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
+<a class="jxr_linenumber" name="L251" href="#L251">251</a> 				ci.getPublicConstructors().stream().filter(x -&gt; x.hasAnnotation(ctx.getAnnotationProvider(), Beanc.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
 <a class="jxr_linenumber" name="L252" href="#L252">252</a> 					<strong class="jxr_keyword">if</strong> (nn(constructor))
 <a class="jxr_linenumber" name="L253" href="#L253">253</a> 						<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(c, <span class="jxr_string">"Multiple instances of '@Beanc' found."</span>);
 <a class="jxr_linenumber" name="L254" href="#L254">254</a> 					constructor = x;
@@ -280,13 +280,13 @@
 <a class="jxr_linenumber" name="L272" href="#L272">272</a> 
 <a class="jxr_linenumber" name="L273" href="#L273">273</a> 				<em class="jxr_comment">// Look for @Beanc on all other constructors.</em>
 <a class="jxr_linenumber" name="L274" href="#L274">274</a> 				<strong class="jxr_keyword">if</strong> (constructor == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L275" href="#L275">275</a> 					ci.getDeclaredConstructors().stream().filter(x -&gt; x.hasAnnotation(ctx, Beanc.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
+<a class="jxr_linenumber" name="L275" href="#L275">275</a> 					ci.getDeclaredConstructors().stream().filter(x -&gt; x.hasAnnotation(ctx.getAnnotationProvider(), Beanc.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
 <a class="jxr_linenumber" name="L276" href="#L276">276</a> 						<strong class="jxr_keyword">if</strong> (nn(constructor))
 <a class="jxr_linenumber" name="L277" href="#L277">277</a> 							<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(c, <span class="jxr_string">"Multiple instances of '@Beanc' found."</span>);
 <a class="jxr_linenumber" name="L278" href="#L278">278</a> 						constructor = x;
 <a class="jxr_linenumber" name="L279" href="#L279">279</a> 						constructorArgs = <strong class="jxr_keyword">new</strong> String[0];
 <a class="jxr_linenumber" name="L280" href="#L280">280</a> 						<em class="jxr_comment">// Inline Context.forEachAnnotation() call</em>
-<a class="jxr_linenumber" name="L281" href="#L281">281</a> 				ctx.getAnnotationProvider().find(Beanc.<strong class="jxr_keyword">class</strong>, x.<strong class="jxr_keyword">inner</strong>()).map(x2 -&gt; x2.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; ! y.properties().isEmpty()).forEach(z -&gt; constructorArgs = splita(z.properties()));
+<a class="jxr_linenumber" name="L281" href="#L281">281</a> 						ctx.getAnnotationProvider().find(Beanc.<strong class="jxr_keyword">class</strong>, x.<strong class="jxr_keyword">inner</strong>()).map(x2 -&gt; x2.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; ! y.properties().isEmpty()).forEach(z -&gt; constructorArgs = splita(z.properties()));
 <a class="jxr_linenumber" name="L282" href="#L282">282</a> 						<strong class="jxr_keyword">if</strong> (! x.hasNumParameters(constructorArgs.length)) {
 <a class="jxr_linenumber" name="L283" href="#L283">283</a> 							<strong class="jxr_keyword">if</strong> (constructorArgs.length != 0)
 <a class="jxr_linenumber" name="L284" href="#L284">284</a> 							<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(c, <span class="jxr_string">"Number of properties defined in '@Beanc' annotation does not match number of parameters in constructor."</span>);
@@ -578,10 +578,10 @@
 <a class="jxr_linenumber" name="L570" href="#L570">570</a> 			<em class="jxr_comment">// @formatter:off</em>
 <a class="jxr_linenumber" name="L571" href="#L571">571</a> 			c2.getDeclaredFields().stream()
 <a class="jxr_linenumber" name="L572" href="#L572">572</a> 				.filter(x -&gt; x.isNotStatic()
-<a class="jxr_linenumber" name="L573" href="#L573">573</a> 				&amp;&amp; (x.isNotTransient() || noIgnoreTransients)
-<a class="jxr_linenumber" name="L574" href="#L574">574</a> 				&amp;&amp; (x.hasNoAnnotation(Transient.<strong class="jxr_keyword">class</strong>) || noIgnoreTransients)
-<a class="jxr_linenumber" name="L575" href="#L575">575</a> 				&amp;&amp; x.hasNoAnnotation(ctx, BeanIgnore.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L576" href="#L576">576</a> 				&amp;&amp; (v.isVisible(x.<strong class="jxr_keyword">inner</strong>()) || x.hasAnnotation(ctx, Beanp.<strong class="jxr_keyword">class</strong>)))
+<a class="jxr_linenumber" name="L573" href="#L573">573</a> 			&amp;&amp; (x.isNotTransient() || noIgnoreTransients)
+<a class="jxr_linenumber" name="L574" href="#L574">574</a> 			&amp;&amp; (x.hasNoAnnotation(Transient.<strong class="jxr_keyword">class</strong>) || noIgnoreTransients)
+<a class="jxr_linenumber" name="L575" href="#L575">575</a> 			&amp;&amp; x.hasNoAnnotation(ctx.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L576" href="#L576">576</a> 			&amp;&amp; (v.isVisible(x.<strong class="jxr_keyword">inner</strong>()) || x.hasAnnotation(ctx.getAnnotationProvider(), Beanp.<strong class="jxr_keyword">class</strong>)))
 <a class="jxr_linenumber" name="L577" href="#L577">577</a> 				.forEach(x -&gt; l.add(x.<strong class="jxr_keyword">inner</strong>())
 <a class="jxr_linenumber" name="L578" href="#L578">578</a> 			);
 <a class="jxr_linenumber" name="L579" href="#L579">579</a> 			<em class="jxr_comment">// @formatter:on</em>
@@ -603,9 +603,9 @@
 <a class="jxr_linenumber" name="L595" href="#L595">595</a> 
 <a class="jxr_linenumber" name="L596" href="#L596">596</a> 		forEachClass(ClassInfo.of(c), stopClass, c2 -&gt; {
 <a class="jxr_linenumber" name="L597" href="#L597">597</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> m : c2.getDeclaredMethods()) {
-<a class="jxr_linenumber" name="L598" href="#L598">598</a> 				<strong class="jxr_keyword">if</strong> (m.isStatic() || m.isBridge() || m.getParameterCount() &gt; 2 || m.hasAnnotation(ctx, BeanIgnore.<strong class="jxr_keyword">class</strong>))
+<a class="jxr_linenumber" name="L598" href="#L598">598</a> 				<strong class="jxr_keyword">if</strong> (m.isStatic() || m.isBridge() || m.getParameterCount() &gt; 2 || m.hasAnnotation(ctx.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>))
 <a class="jxr_linenumber" name="L599" href="#L599">599</a> 					<strong class="jxr_keyword">continue</strong>;
-<a class="jxr_linenumber" name="L600" href="#L600">600</a> 				Transient t = m.getAnnotation(ctx, Transient.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L600" href="#L600">600</a> 				Transient t = m.getAnnotation(ctx.getAnnotationProvider(), Transient.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L601" href="#L601">601</a> 				<strong class="jxr_keyword">if</strong> (nn(t) &amp;&amp; t.value())
 <a class="jxr_linenumber" name="L602" href="#L602">602</a> 					<strong class="jxr_keyword">continue</strong>;
 <a class="jxr_linenumber" name="L603" href="#L603">603</a> 
@@ -714,10 +714,10 @@
 <a class="jxr_linenumber" name="L706" href="#L706">706</a> 			<em class="jxr_comment">// @formatter:off</em>
 <a class="jxr_linenumber" name="L707" href="#L707">707</a> 			FieldInfo f = c2.getDeclaredField(
 <a class="jxr_linenumber" name="L708" href="#L708">708</a> 				x -&gt; x.isNotStatic()
-<a class="jxr_linenumber" name="L709" href="#L709">709</a> 				&amp;&amp; (x.isNotTransient() || noIgnoreTransients)
-<a class="jxr_linenumber" name="L710" href="#L710">710</a> 				&amp;&amp; (x.hasNoAnnotation(Transient.<strong class="jxr_keyword">class</strong>) || noIgnoreTransients)
-<a class="jxr_linenumber" name="L711" href="#L711">711</a> 				&amp;&amp; x.hasNoAnnotation(ctx, BeanIgnore.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L712" href="#L712">712</a> 				&amp;&amp; x.hasName(name)
+<a class="jxr_linenumber" name="L709" href="#L709">709</a> 			&amp;&amp; (x.isNotTransient() || noIgnoreTransients)
+<a class="jxr_linenumber" name="L710" href="#L710">710</a> 			&amp;&amp; (x.hasNoAnnotation(Transient.<strong class="jxr_keyword">class</strong>) || noIgnoreTransients)
+<a class="jxr_linenumber" name="L711" href="#L711">711</a> 			&amp;&amp; x.hasNoAnnotation(ctx.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L712" href="#L712">712</a> 			&amp;&amp; x.hasName(name)
 <a class="jxr_linenumber" name="L713" href="#L713">713</a> 			);
 <a class="jxr_linenumber" name="L714" href="#L714">714</a> 			<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L715" href="#L715">715</a> 			<strong class="jxr_keyword">if</strong> (nn(f))
diff --git a/site/xref/org/apache/juneau/BeanPropertyMeta.html b/site/xref/org/apache/juneau/BeanPropertyMeta.html
index 1897a5c5e5..25bce693ca 100644
--- a/site/xref/org/apache/juneau/BeanPropertyMeta.html
+++ b/site/xref/org/apache/juneau/BeanPropertyMeta.html
@@ -687,10 +687,10 @@
 <a class="jxr_linenumber" name="L679" href="#L679">679</a> 		BeanContext bc = beanContext;
 <a class="jxr_linenumber" name="L680" href="#L680">680</a> 		<strong class="jxr_keyword">if</strong> (a == <strong class="jxr_keyword">null</strong>)
 <a class="jxr_linenumber" name="L681" href="#L681">681</a> 			<strong class="jxr_keyword">return</strong> l;
-<a class="jxr_linenumber" name="L682" href="#L682">682</a> 		getBeanMeta().getClassMeta().getInfo().forEachAnnotation(bc, a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
+<a class="jxr_linenumber" name="L682" href="#L682">682</a> 		getBeanMeta().getClassMeta().getInfo().forEachAnnotation(bc.getAnnotationProvider(), a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L683" href="#L683">683</a> 		<strong class="jxr_keyword">if</strong> (nn(field)) {
 <a class="jxr_linenumber" name="L684" href="#L684">684</a> 			bc.getAnnotationProvider().find(a, field).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; l.add(x));
-<a class="jxr_linenumber" name="L685" href="#L685">685</a> 			ClassInfo.of(field.getType()).forEachAnnotation(bc, a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
+<a class="jxr_linenumber" name="L685" href="#L685">685</a> 			ClassInfo.of(field.getType()).forEachAnnotation(bc.getAnnotationProvider(), a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L686" href="#L686">686</a> 		}
 <a class="jxr_linenumber" name="L687" href="#L687">687</a> 		<strong class="jxr_keyword">if</strong> (nn(getter)) {
 <a class="jxr_linenumber" name="L688" href="#L688">688</a> 			<em class="jxr_comment">// Walk up the inheritance hierarchy for the getter method</em>
@@ -698,7 +698,7 @@
 <a class="jxr_linenumber" name="L690" href="#L690">690</a> 				bc.getAnnotationProvider().find(a, parentGetter).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L691" href="#L691">691</a> 			});
 <a class="jxr_linenumber" name="L692" href="#L692">692</a> 			bc.getAnnotationProvider().find(a, getter).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; l.add(x));
-<a class="jxr_linenumber" name="L693" href="#L693">693</a> 			ClassInfo.of(getter.getReturnType()).forEachAnnotation(bc, a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
+<a class="jxr_linenumber" name="L693" href="#L693">693</a> 			ClassInfo.of(getter.getReturnType()).forEachAnnotation(bc.getAnnotationProvider(), a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L694" href="#L694">694</a> 		}
 <a class="jxr_linenumber" name="L695" href="#L695">695</a> 		<strong class="jxr_keyword">if</strong> (nn(setter)) {
 <a class="jxr_linenumber" name="L696" href="#L696">696</a> 			<em class="jxr_comment">// Walk up the inheritance hierarchy for the setter method</em>
@@ -706,7 +706,7 @@
 <a class="jxr_linenumber" name="L698" href="#L698">698</a> 				bc.getAnnotationProvider().find(a, parentSetter).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L699" href="#L699">699</a> 			});
 <a class="jxr_linenumber" name="L700" href="#L700">700</a> 			bc.getAnnotationProvider().find(a, setter).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; l.add(x));
-<a class="jxr_linenumber" name="L701" href="#L701">701</a> 			ClassInfo.of(setter.getReturnType()).forEachAnnotation(bc, a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
+<a class="jxr_linenumber" name="L701" href="#L701">701</a> 			ClassInfo.of(setter.getReturnType()).forEachAnnotation(bc.getAnnotationProvider(), a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L702" href="#L702">702</a> 		}
 <a class="jxr_linenumber" name="L703" href="#L703">703</a> 		<strong class="jxr_keyword">if</strong> (nn(extraKeys)) {
 <a class="jxr_linenumber" name="L704" href="#L704">704</a> 			<em class="jxr_comment">// Walk up the inheritance hierarchy for the extraKeys method</em>
@@ -714,7 +714,7 @@
 <a class="jxr_linenumber" name="L706" href="#L706">706</a> 				bc.getAnnotationProvider().find(a, parentExtraKeys).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L707" href="#L707">707</a> 			});
 <a class="jxr_linenumber" name="L708" href="#L708">708</a> 			bc.getAnnotationProvider().find(a, extraKeys).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; l.add(x));
-<a class="jxr_linenumber" name="L709" href="#L709">709</a> 			ClassInfo.of(extraKeys.getReturnType()).forEachAnnotation(bc, a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
+<a class="jxr_linenumber" name="L709" href="#L709">709</a> 			ClassInfo.of(extraKeys.getReturnType()).forEachAnnotation(bc.getAnnotationProvider(), a, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L710" href="#L710">710</a> 		}
 <a class="jxr_linenumber" name="L711" href="#L711">711</a> 
 <a class="jxr_linenumber" name="L712" href="#L712">712</a> 		<strong class="jxr_keyword">return</strong> l;
diff --git a/site/xref/org/apache/juneau/BeanRegistry.html b/site/xref/org/apache/juneau/BeanRegistry.html
index a384220fea..4b2d023012 100644
--- a/site/xref/org/apache/juneau/BeanRegistry.html
+++ b/site/xref/org/apache/juneau/BeanRegistry.html
@@ -158,7 +158,7 @@
 <a class="jxr_linenumber" name="L150" href="#L150">150</a> 					});
 <a class="jxr_linenumber" name="L151" href="#L151">151</a> 				} <strong class="jxr_keyword">else</strong> {
 <a class="jxr_linenumber" name="L152" href="#L152">152</a> 					Value&lt;String&gt; typeName = Value.empty();
-<a class="jxr_linenumber" name="L153" href="#L153">153</a> 					ci.forEachAnnotation(beanContext, Bean.<strong class="jxr_keyword">class</strong>, x -&gt; isNotEmpty(x.typeName()), x -&gt; typeName.set(x.typeName()));
+<a class="jxr_linenumber" name="L153" href="#L153">153</a> 					ci.forEachAnnotation(beanContext.getAnnotationProvider(), Bean.<strong class="jxr_keyword">class</strong>, x -&gt; isNotEmpty(x.typeName()), x -&gt; typeName.set(x.typeName()));
 <a class="jxr_linenumber" name="L154" href="#L154">154</a> 					addToMap(typeName.orElseThrow(() -&gt; <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(<span class="jxr_string">"Class ''{0}'' was passed to BeanRegistry but it doesn't have a @Bean(typeName) annotation defined."</span>, cn(c))),
 <a class="jxr_linenumber" name="L155" href="#L155">155</a> 						beanContext.getClassMeta(c));
 <a class="jxr_linenumber" name="L156" href="#L156">156</a> 				}
diff --git a/site/xref/org/apache/juneau/ClassMeta.html b/site/xref/org/apache/juneau/ClassMeta.html
index c0c8ac5a11..e9c398bd14 100644
--- a/site/xref/org/apache/juneau/ClassMeta.html
+++ b/site/xref/org/apache/juneau/ClassMeta.html
@@ -171,7 +171,7 @@
 <a class="jxr_linenumber" name="L163" href="#L163">163</a> 					cc = DATE;
 <a class="jxr_linenumber" name="L164" href="#L164">164</a> 				<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (c.isArray())
 <a class="jxr_linenumber" name="L165" href="#L165">165</a> 					cc = ARRAY;
-<a class="jxr_linenumber" name="L166" href="#L166">166</a> 				<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ci.isChildOfAny(URL.<strong class="jxr_keyword">class</strong>, URI.<strong class="jxr_keyword">class</strong>) || ci.hasAnnotation(bc, Uri.<strong class="jxr_keyword">class</strong>))
+<a class="jxr_linenumber" name="L166" href="#L166">166</a> 				<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ci.isChildOfAny(URL.<strong class="jxr_keyword">class</strong>, URI.<strong class="jxr_keyword">class</strong>) || ci.hasAnnotation(bc.getAnnotationProvider(), Uri.<strong class="jxr_keyword">class</strong>))
 <a class="jxr_linenumber" name="L167" href="#L167">167</a> 					cc = URI;
 <a class="jxr_linenumber" name="L168" href="#L168">168</a> 				<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ci.isChildOf(Reader.<strong class="jxr_keyword">class</strong>))
 <a class="jxr_linenumber" name="L169" href="#L169">169</a> 					cc = READER;
@@ -214,19 +214,19 @@
 <a class="jxr_linenumber" name="L206" href="#L206">206</a> 			.orElse(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="L207" href="#L207">207</a> 			<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L208" href="#L208">208</a> 
-<a class="jxr_linenumber" name="L209" href="#L209">209</a> 			ci.getAllFields().stream().filter(x -&gt; x.hasAnnotation(bc, ParentProperty.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
+<a class="jxr_linenumber" name="L209" href="#L209">209</a> 			ci.getAllFields().stream().filter(x -&gt; x.hasAnnotation(bc.getAnnotationProvider(), ParentProperty.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
 <a class="jxr_linenumber" name="L210" href="#L210">210</a> 				<strong class="jxr_keyword">if</strong> (x.isStatic())
 <a class="jxr_linenumber" name="L211" href="#L211">211</a> 					<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ClassMetaRuntimeException" href="../../../org/apache/juneau/ClassMetaRuntimeException.html#ClassMetaRuntimeException">ClassMetaRuntimeException</a>(c, <span class="jxr_string">"@ParentProperty used on invalid field ''{0}''.  Must be static."</span>, x);
 <a class="jxr_linenumber" name="L212" href="#L212">212</a> 				parentPropertyMethod = <strong class="jxr_keyword">new</strong> Setter.FieldSetter(x.accessible().<strong class="jxr_keyword">inner</strong>());
 <a class="jxr_linenumber" name="L213" href="#L213">213</a> 			});
 <a class="jxr_linenumber" name="L214" href="#L214">214</a> 
-<a class="jxr_linenumber" name="L215" href="#L215">215</a> 			ci.getAllFields().stream().filter(x -&gt; x.hasAnnotation(bc, NameProperty.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
+<a class="jxr_linenumber" name="L215" href="#L215">215</a> 			ci.getAllFields().stream().filter(x -&gt; x.hasAnnotation(bc.getAnnotationProvider(), NameProperty.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
 <a class="jxr_linenumber" name="L216" href="#L216">216</a> 				<strong class="jxr_keyword">if</strong> (x.isStatic())
 <a class="jxr_linenumber" name="L217" href="#L217">217</a> 					<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ClassMetaRuntimeException" href="../../../org/apache/juneau/ClassMetaRuntimeException.html#ClassMetaRuntimeException">ClassMetaRuntimeException</a>(c, <span class="jxr_string">"@NameProperty used on invalid field ''{0}''.  Must be static."</span>, x);
 <a class="jxr_linenumber" name="L218" href="#L218">218</a> 				namePropertyMethod = <strong class="jxr_keyword">new</strong> Setter.FieldSetter(x.accessible().<strong class="jxr_keyword">inner</strong>());
 <a class="jxr_linenumber" name="L219" href="#L219">219</a> 			});
 <a class="jxr_linenumber" name="L220" href="#L220">220</a> 
-<a class="jxr_linenumber" name="L221" href="#L221">221</a> 			ci.getDeclaredFields().stream().filter(x -&gt; x.hasAnnotation(bc, Example.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
+<a class="jxr_linenumber" name="L221" href="#L221">221</a> 			ci.getDeclaredFields().stream().filter(x -&gt; x.hasAnnotation(bc.getAnnotationProvider(), Example.<strong class="jxr_keyword">class</strong>)).forEach(x -&gt; {
 <a class="jxr_linenumber" name="L222" href="#L222">222</a> 				<strong class="jxr_keyword">if</strong> (! (x.isStatic() &amp;&amp; ci.isParentOf(x.getType().<strong class="jxr_keyword">inner</strong>())))
 <a class="jxr_linenumber" name="L223" href="#L223">223</a> 					<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ClassMetaRuntimeException" href="../../../org/apache/juneau/ClassMetaRuntimeException.html#ClassMetaRuntimeException">ClassMetaRuntimeException</a>(c, <span class="jxr_string">"@Example used on invalid field ''{0}''.  Must be static and an instance of the type."</span>, x);
 <a class="jxr_linenumber" name="L224" href="#L224">224</a> 				exampleField = x.accessible().<strong class="jxr_keyword">inner</strong>();
@@ -236,13 +236,13 @@
 <a class="jxr_linenumber" name="L228" href="#L228">228</a> 			List&lt;MethodInfo&gt; methods = ci.getMethods();
 <a class="jxr_linenumber" name="L229" href="#L229">229</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = methods.size() - 1; i &gt;= 0; i--) {
 <a class="jxr_linenumber" name="L230" href="#L230">230</a> 				MethodInfo m = methods.get(i);
-<a class="jxr_linenumber" name="L231" href="#L231">231</a> 				<strong class="jxr_keyword">if</strong> (m.hasAnnotation(bc, ParentProperty.<strong class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L231" href="#L231">231</a> 				<strong class="jxr_keyword">if</strong> (m.hasAnnotation(bc.getAnnotationProvider(), ParentProperty.<strong class="jxr_keyword">class</strong>)) {
 <a class="jxr_linenumber" name="L232" href="#L232">232</a> 					<strong class="jxr_keyword">if</strong> (m.isStatic() || ! m.hasNumParameters(1))
 <a class="jxr_linenumber" name="L233" href="#L233">233</a> 						<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ClassMetaRuntimeException" href="../../../org/apache/juneau/ClassMetaRuntimeException.html#ClassMetaRuntimeException">ClassMetaRuntimeException</a>(c, <span class="jxr_string">"@ParentProperty used on invalid method ''{0}''.  Must not be static and have one argument."</span>, m);
 <a class="jxr_linenumber" name="L234" href="#L234">234</a> 					m.setAccessible();
 <a class="jxr_linenumber" name="L235" href="#L235">235</a> 					parentPropertyMethod = <strong class="jxr_keyword">new</strong> Setter.MethodSetter(m.<strong class="jxr_keyword">inner</strong>());
 <a class="jxr_linenumber" name="L236" href="#L236">236</a> 				}
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> 				<strong class="jxr_keyword">if</strong> (m.hasAnnotation(bc, NameProperty.<strong class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L237" href="#L237">237</a> 				<strong class="jxr_keyword">if</strong> (m.hasAnnotation(bc.getAnnotationProvider(), NameProperty.<strong class="jxr_keyword">class</strong>)) {
 <a class="jxr_linenumber" name="L238" href="#L238">238</a> 					<strong class="jxr_keyword">if</strong> (m.isStatic() || ! m.hasNumParameters(1))
 <a class="jxr_linenumber" name="L239" href="#L239">239</a> 						<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ClassMetaRuntimeException" href="../../../org/apache/juneau/ClassMetaRuntimeException.html#ClassMetaRuntimeException">ClassMetaRuntimeException</a>(c, <span class="jxr_string">"@NameProperty used on invalid method ''{0}''.  Must not be static and have one argument."</span>, m);
 <a class="jxr_linenumber" name="L240" href="#L240">240</a> 					m.setAccessible();
@@ -250,7 +250,7 @@
 <a class="jxr_linenumber" name="L242" href="#L242">242</a> 				}
 <a class="jxr_linenumber" name="L243" href="#L243">243</a> 			}
 <a class="jxr_linenumber" name="L244" href="#L244">244</a> 
-<a class="jxr_linenumber" name="L245" href="#L245">245</a> 			ci.getDeclaredMethods().stream().filter(m -&gt; m.hasAnnotation(bc, Example.<strong class="jxr_keyword">class</strong>)).forEach(m -&gt; {
+<a class="jxr_linenumber" name="L245" href="#L245">245</a> 			ci.getDeclaredMethods().stream().filter(m -&gt; m.hasAnnotation(bc.getAnnotationProvider(), Example.<strong class="jxr_keyword">class</strong>)).forEach(m -&gt; {
 <a class="jxr_linenumber" name="L246" href="#L246">246</a> 				<strong class="jxr_keyword">if</strong> (! (m.isStatic() &amp;&amp; m.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>) &amp;&amp; ci.isParentOf(m.getReturnType().<strong class="jxr_keyword">inner</strong>())))
 <a class="jxr_linenumber" name="L247" href="#L247">247</a> 					<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ClassMetaRuntimeException" href="../../../org/apache/juneau/ClassMetaRuntimeException.html#ClassMetaRuntimeException">ClassMetaRuntimeException</a>(c, <span class="jxr_string">"@Example used on invalid method ''{0}''.  Must be static and return an instance of the declaring class."</span>, m.toString());
 <a class="jxr_linenumber" name="L248" href="#L248">248</a> 				m.setAccessible();
@@ -474,7 +474,7 @@
 <a class="jxr_linenumber" name="L466" href="#L466">466</a> 
 <a class="jxr_linenumber" name="L467" href="#L467">467</a> 		<strong class="jxr_keyword">private</strong> <a name="BeanFilter" href="../../../org/apache/juneau/BeanFilter.html#BeanFilter">BeanFilter</a> findBeanFilter(BeanContext bc) {
 <a class="jxr_linenumber" name="L468" href="#L468">468</a> 			<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L469" href="#L469">469</a> 				List&lt;Bean&gt; ba = info.getAnnotations(bc, Bean.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L469" href="#L469">469</a> 				List&lt;Bean&gt; ba = info.getAnnotations(bc.getAnnotationProvider(), Bean.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L470" href="#L470">470</a> 				<strong class="jxr_keyword">if</strong> (! ba.isEmpty())
 <a class="jxr_linenumber" name="L471" href="#L471">471</a> 					<strong class="jxr_keyword">return</strong> BeanFilter.create(innerClass).applyAnnotations(ba).build();
 <a class="jxr_linenumber" name="L472" href="#L472">472</a> 			} <strong class="jxr_keyword">catch</strong> (Exception e) {
@@ -489,7 +489,7 @@
 <a class="jxr_linenumber" name="L481" href="#L481">481</a> 
 <a class="jxr_linenumber" name="L482" href="#L482">482</a> 		<strong class="jxr_keyword">private</strong> <a name="MarshalledFilter" href="../../../org/apache/juneau/MarshalledFilter.html#MarshalledFilter">MarshalledFilter</a> findMarshalledFilter(BeanContext bc) {
 <a class="jxr_linenumber" name="L483" href="#L483">483</a> 			<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L484" href="#L484">484</a> 				List&lt;Marshalled&gt; ba = info.getAnnotations(bc, Marshalled.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L484" href="#L484">484</a> 				List&lt;Marshalled&gt; ba = info.getAnnotations(bc.getAnnotationProvider(), Marshalled.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L485" href="#L485">485</a> 				<strong class="jxr_keyword">if</strong> (! ba.isEmpty())
 <a class="jxr_linenumber" name="L486" href="#L486">486</a> 					<strong class="jxr_keyword">return</strong> MarshalledFilter.create(innerClass).applyAnnotations(ba).build();
 <a class="jxr_linenumber" name="L487" href="#L487">487</a> 			} <strong class="jxr_keyword">catch</strong> (Exception e) {
@@ -1123,8 +1123,8 @@
 <a class="jxr_linenumber" name="L1115" href="#L1115">1115</a> 		Optional&lt;A&gt; o = (Optional&lt;A&gt;)annotationLastMap.get(a);
 <a class="jxr_linenumber" name="L1116" href="#L1116">1116</a> 		<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
 <a class="jxr_linenumber" name="L1117" href="#L1117">1117</a> 			<strong class="jxr_keyword">if</strong> (beanContext == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1118" href="#L1118">1118</a> 				<strong class="jxr_keyword">return</strong> info.getAnnotation(BeanContext.DEFAULT, a);
-<a class="jxr_linenumber" name="L1119" href="#L1119">1119</a> 			o = opt(info.getAnnotation(beanContext, a));
+<a class="jxr_linenumber" name="L1118" href="#L1118">1118</a> 				<strong class="jxr_keyword">return</strong> info.getAnnotation(BeanContext.DEFAULT.getAnnotationProvider(), a);
+<a class="jxr_linenumber" name="L1119" href="#L1119">1119</a> 			o = opt(info.getAnnotation(beanContext.getAnnotationProvider(), a));
 <a class="jxr_linenumber" name="L1120" href="#L1120">1120</a> 			annotationLastMap.put(a, o);
 <a class="jxr_linenumber" name="L1121" href="#L1121">1121</a> 		}
 <a class="jxr_linenumber" name="L1122" href="#L1122">1122</a> 		<strong class="jxr_keyword">return</strong> o.orElse(<strong class="jxr_keyword">null</strong>);
@@ -1769,7 +1769,7 @@
 <a class="jxr_linenumber" name="L1761" href="#L1761">1761</a> 		A[] array = annotationArray(type);
 <a class="jxr_linenumber" name="L1762" href="#L1762">1762</a> 		<strong class="jxr_keyword">if</strong> (array == <strong class="jxr_keyword">null</strong>) {
 <a class="jxr_linenumber" name="L1763" href="#L1763">1763</a> 			<strong class="jxr_keyword">if</strong> (beanContext == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L1764" href="#L1764">1764</a> 				<strong class="jxr_keyword">return</strong> Optional.ofNullable(info.lastAnnotation(BeanContext.DEFAULT, type, filter));
+<a class="jxr_linenumber" name="L1764" href="#L1764">1764</a> 				<strong class="jxr_keyword">return</strong> Optional.ofNullable(info.lastAnnotation(type, filter));
 <a class="jxr_linenumber" name="L1765" href="#L1765">1765</a> 			<strong class="jxr_keyword">return</strong> Optional.empty();
 <a class="jxr_linenumber" name="L1766" href="#L1766">1766</a> 		}
 <a class="jxr_linenumber" name="L1767" href="#L1767">1767</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = array.length - 1; i &gt;= 0; i--)
@@ -1943,7 +1943,7 @@
 <a class="jxr_linenumber" name="L1935" href="#L1935">1935</a> 		A[] array = (A[])annotationArrayMap.get(type);
 <a class="jxr_linenumber" name="L1936" href="#L1936">1936</a> 		<strong class="jxr_keyword">if</strong> (array == <strong class="jxr_keyword">null</strong> &amp;&amp; nn(beanContext)) {
 <a class="jxr_linenumber" name="L1937" href="#L1937">1937</a> 			List&lt;A&gt; l = list();
-<a class="jxr_linenumber" name="L1938" href="#L1938">1938</a> 			info.forEachAnnotation(beanContext, type, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
+<a class="jxr_linenumber" name="L1938" href="#L1938">1938</a> 			info.forEachAnnotation(beanContext.getAnnotationProvider(), type, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L1939" href="#L1939">1939</a> 			array = (A[])Array.newInstance(type, l.size());
 <a class="jxr_linenumber" name="L1940" href="#L1940">1940</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0; i &lt; l.size(); i++)
 <a class="jxr_linenumber" name="L1941" href="#L1941">1941</a> 				Array.set(array, i, l.get(i));
diff --git a/site/xref/org/apache/juneau/common/reflect/ClassInfo.html b/site/xref/org/apache/juneau/common/reflect/ClassInfo.html
index 7488ffcfc9..aca0346e5e 100644
--- a/site/xref/org/apache/juneau/common/reflect/ClassInfo.html
+++ b/site/xref/org/apache/juneau/common/reflect/ClassInfo.html
@@ -426,7 +426,7 @@
 <a class="jxr_linenumber" name="L418" href="#L418">418</a> <em class="jxr_javadoccomment">	 * @param action An action to perform on the entry.</em>
 <a class="jxr_linenumber" name="L419" href="#L419">419</a> <em class="jxr_javadoccomment">	 * @return This object.</em>
 <a class="jxr_linenumber" name="L420" href="#L420">420</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L421" href="#L421">421</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; ClassInfo forEachAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type, Predicate&lt;A&gt; filter, Consumer&lt;A&gt; action) {
+<a class="jxr_linenumber" name="L421" href="#L421">421</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; ClassInfo forEachAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type, Predicate&lt;A&gt; filter, Consumer&lt;A&gt; action) {
 <a class="jxr_linenumber" name="L422" href="#L422">422</a> 		<strong class="jxr_keyword">if</strong> (annotationProvider == <strong class="jxr_keyword">null</strong>)
 <a class="jxr_linenumber" name="L423" href="#L423">423</a> 			<strong class="jxr_keyword">throw</strong> unsupportedOp();
 <a class="jxr_linenumber" name="L424" href="#L424">424</a> 		A t2 = getPackageAnnotation(type);
@@ -434,10 +434,10 @@
 <a class="jxr_linenumber" name="L426" href="#L426">426</a> 			consumeIf(filter, action, t2);
 <a class="jxr_linenumber" name="L427" href="#L427">427</a> 		<strong class="jxr_keyword">var</strong> interfaces2 = interfaces.get();
 <a class="jxr_linenumber" name="L428" href="#L428">428</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = interfaces2.size() - 1; i &gt;= 0; i--)
-<a class="jxr_linenumber" name="L429" href="#L429">429</a> 			annotationProvider.getAnnotationProvider().findDeclaredParentFirst(type, interfaces2.get(i).<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; filter == <strong class="jxr_keyword">null</strong> || filter.test(x)).forEach(x -&gt; action.accept(x));
+<a class="jxr_linenumber" name="L429" href="#L429">429</a> 			annotationProvider.findDeclaredParentFirst(type, interfaces2.get(i).<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; filter == <strong class="jxr_keyword">null</strong> || filter.test(x)).forEach(x -&gt; action.accept(x));
 <a class="jxr_linenumber" name="L430" href="#L430">430</a> 		<strong class="jxr_keyword">var</strong> parents2 = parents.get();
 <a class="jxr_linenumber" name="L431" href="#L431">431</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = parents2.size() - 1; i &gt;= 0; i--)
-<a class="jxr_linenumber" name="L432" href="#L432">432</a> 			annotationProvider.getAnnotationProvider().findDeclaredParentFirst(type, parents2.get(i).<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; filter == <strong class="jxr_keyword">null</strong> || filter.test(x)).forEach(x -&gt; action.accept(x));
+<a class="jxr_linenumber" name="L432" href="#L432">432</a> 			annotationProvider.findDeclaredParentFirst(type, parents2.get(i).<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; filter == <strong class="jxr_keyword">null</strong> || filter.test(x)).forEach(x -&gt; action.accept(x));
 <a class="jxr_linenumber" name="L433" href="#L433">433</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="L434" href="#L434">434</a> 	}
 <a class="jxr_linenumber" name="L435" href="#L435">435</a> 
@@ -486,7 +486,7 @@
 <a class="jxr_linenumber" name="L478" href="#L478">478</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
 <a class="jxr_linenumber" name="L479" href="#L479">479</a> <em class="jxr_javadoccomment">	 * @return The annotation if found, or &lt;jk&gt;null&lt;/jk&gt; if not.</em>
 <a class="jxr_linenumber" name="L480" href="#L480">480</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L481" href="#L481">481</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A getAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L481" href="#L481">481</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A getAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
 <a class="jxr_linenumber" name="L482" href="#L482">482</a> 		<strong class="jxr_keyword">return</strong> findAnnotation(annotationProvider, type);
 <a class="jxr_linenumber" name="L483" href="#L483">483</a> 	}
 <a class="jxr_linenumber" name="L484" href="#L484">484</a> 
@@ -501,7 +501,7 @@
 <a class="jxr_linenumber" name="L493" href="#L493">493</a> <em class="jxr_javadoccomment">	 * @param type The annotation type to look for.</em>
 <a class="jxr_linenumber" name="L494" href="#L494">494</a> <em class="jxr_javadoccomment">	 * @return The matching annotations.</em>
 <a class="jxr_linenumber" name="L495" href="#L495">495</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L496" href="#L496">496</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; List&lt;A&gt; getAnnotations(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L496" href="#L496">496</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; List&lt;A&gt; getAnnotations(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
 <a class="jxr_linenumber" name="L497" href="#L497">497</a> 		List&lt;A&gt; l = list();
 <a class="jxr_linenumber" name="L498" href="#L498">498</a> 		forEachAnnotation(annotationProvider, type, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; l.add(x));
 <a class="jxr_linenumber" name="L499" href="#L499">499</a> 		<strong class="jxr_keyword">return</strong> l;
@@ -1669,11 +1669,11 @@
 <a class="jxr_linenumber" name="L1661" href="#L1661">1661</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
 <a class="jxr_linenumber" name="L1662" href="#L1662">1662</a> <em class="jxr_javadoccomment">	 * @return The &lt;jk&gt;true&lt;/jk&gt; if annotation if found.</em>
 <a class="jxr_linenumber" name="L1663" href="#L1663">1663</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L1664" href="#L1664">1664</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L1664" href="#L1664">1664</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
 <a class="jxr_linenumber" name="L1665" href="#L1665">1665</a> 		<strong class="jxr_keyword">if</strong> (annotationProvider == <strong class="jxr_keyword">null</strong>)
 <a class="jxr_linenumber" name="L1666" href="#L1666">1666</a> 			<strong class="jxr_keyword">throw</strong> unsupportedOp();
 <a class="jxr_linenumber" name="L1667" href="#L1667">1667</a> 		<em class="jxr_comment">// Inline Context.firstAnnotation() call</em>
-<a class="jxr_linenumber" name="L1668" href="#L1668">1668</a> 		<strong class="jxr_keyword">return</strong> nn(annotationProvider.getAnnotationProvider().find(type, c).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>));
+<a class="jxr_linenumber" name="L1668" href="#L1668">1668</a> 		<strong class="jxr_keyword">return</strong> nn(annotationProvider.find(type, c).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>));
 <a class="jxr_linenumber" name="L1669" href="#L1669">1669</a> 	}
 <a class="jxr_linenumber" name="L1670" href="#L1670">1670</a> 
 <a class="jxr_linenumber" name="L1671" href="#L1671">1671</a> 	<em class="jxr_javadoccomment">/**</em>
@@ -2181,22 +2181,22 @@
 <a class="jxr_linenumber" name="L2173" href="#L2173">2173</a> <em class="jxr_javadoccomment">	 * @param filter A predicate to apply to the entries to determine if annotation should be returned.  Can be &lt;jk&gt;null&lt;/jk&gt;.</em>
 <a class="jxr_linenumber" name="L2174" href="#L2174">2174</a> <em class="jxr_javadoccomment">	 * @return This object.</em>
 <a class="jxr_linenumber" name="L2175" href="#L2175">2175</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L2176" href="#L2176">2176</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A lastAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type, Predicate&lt;A&gt; filter) {
+<a class="jxr_linenumber" name="L2176" href="#L2176">2176</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A lastAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type, Predicate&lt;A&gt; filter) {
 <a class="jxr_linenumber" name="L2177" href="#L2177">2177</a> 		<strong class="jxr_keyword">if</strong> (annotationProvider == <strong class="jxr_keyword">null</strong>)
 <a class="jxr_linenumber" name="L2178" href="#L2178">2178</a> 			<strong class="jxr_keyword">throw</strong> unsupportedOp();
 <a class="jxr_linenumber" name="L2179" href="#L2179">2179</a> 		A x = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L2180" href="#L2180">2180</a> 		x = annotationProvider.getAnnotationProvider().find(type, <strong class="jxr_keyword">inner</strong>()).map(y -&gt; y.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; filter.test(y)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L2180" href="#L2180">2180</a> 		x = annotationProvider.find(type, <strong class="jxr_keyword">inner</strong>()).map(y -&gt; y.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; filter.test(y)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="L2181" href="#L2181">2181</a> 		<strong class="jxr_keyword">if</strong> (nn(x) &amp;&amp; test(filter, x))
 <a class="jxr_linenumber" name="L2182" href="#L2182">2182</a> 			<strong class="jxr_keyword">return</strong> x;
 <a class="jxr_linenumber" name="L2183" href="#L2183">2183</a> 		<strong class="jxr_keyword">var</strong> parents2 = parents.get();
 <a class="jxr_linenumber" name="L2184" href="#L2184">2184</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> parent : parents2) {
-<a class="jxr_linenumber" name="L2185" href="#L2185">2185</a> 			x = annotationProvider.getAnnotationProvider().find(type, parent.<strong class="jxr_keyword">inner</strong>()).map(y -&gt; y.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; filter.test(y)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L2185" href="#L2185">2185</a> 			x = annotationProvider.find(type, parent.<strong class="jxr_keyword">inner</strong>()).map(y -&gt; y.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; filter.test(y)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="L2186" href="#L2186">2186</a> 			<strong class="jxr_keyword">if</strong> (nn(x))
 <a class="jxr_linenumber" name="L2187" href="#L2187">2187</a> 				<strong class="jxr_keyword">return</strong> x;
 <a class="jxr_linenumber" name="L2188" href="#L2188">2188</a> 		}
 <a class="jxr_linenumber" name="L2189" href="#L2189">2189</a> 		<strong class="jxr_keyword">var</strong> interfaces2 = interfaces.get();
 <a class="jxr_linenumber" name="L2190" href="#L2190">2190</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> element : interfaces2) {
-<a class="jxr_linenumber" name="L2191" href="#L2191">2191</a> 			x = annotationProvider.getAnnotationProvider().find(type, element.<strong class="jxr_keyword">inner</strong>()).map(y -&gt; y.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; filter.test(y)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L2191" href="#L2191">2191</a> 			x = annotationProvider.find(type, element.<strong class="jxr_keyword">inner</strong>()).map(y -&gt; y.<strong class="jxr_keyword">inner</strong>()).filter(y -&gt; filter.test(y)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="L2192" href="#L2192">2192</a> 			<strong class="jxr_keyword">if</strong> (nn(x))
 <a class="jxr_linenumber" name="L2193" href="#L2193">2193</a> 				<strong class="jxr_keyword">return</strong> x;
 <a class="jxr_linenumber" name="L2194" href="#L2194">2194</a> 		}
@@ -2343,175 +2343,174 @@
 <a class="jxr_linenumber" name="L2335" href="#L2335">2335</a> 		<strong class="jxr_keyword">return</strong> c == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : of(c.componentType());
 <a class="jxr_linenumber" name="L2336" href="#L2336">2336</a> 	}
 <a class="jxr_linenumber" name="L2337" href="#L2337">2337</a> 
-<a class="jxr_linenumber" name="L2338" href="#L2338">2338</a> 	<strong class="jxr_keyword">private</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A findAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> ap, Class&lt;A&gt; a) {
+<a class="jxr_linenumber" name="L2338" href="#L2338">2338</a> 	<strong class="jxr_keyword">private</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A findAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> ap, Class&lt;A&gt; a) {
 <a class="jxr_linenumber" name="L2339" href="#L2339">2339</a> 		<strong class="jxr_keyword">if</strong> (a == <strong class="jxr_keyword">null</strong>)
 <a class="jxr_linenumber" name="L2340" href="#L2340">2340</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
 <a class="jxr_linenumber" name="L2341" href="#L2341">2341</a> 		<strong class="jxr_keyword">if</strong> (ap == <strong class="jxr_keyword">null</strong>)
 <a class="jxr_linenumber" name="L2342" href="#L2342">2342</a> 			<strong class="jxr_keyword">throw</strong> unsupportedOp();
-<a class="jxr_linenumber" name="L2343" href="#L2343">2343</a> 		<em class="jxr_comment">// Inline Context.firstDeclaredAnnotation() call</em>
-<a class="jxr_linenumber" name="L2344" href="#L2344">2344</a> 		A t = ap.getAnnotationProvider().findDeclared(a, c).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L2345" href="#L2345">2345</a> 		<strong class="jxr_keyword">if</strong> (nn(t))
-<a class="jxr_linenumber" name="L2346" href="#L2346">2346</a> 			<strong class="jxr_keyword">return</strong> t;
-<a class="jxr_linenumber" name="L2347" href="#L2347">2347</a> 		ClassInfo sci = getSuperclass();
-<a class="jxr_linenumber" name="L2348" href="#L2348">2348</a> 		<strong class="jxr_keyword">if</strong> (nn(sci)) {
-<a class="jxr_linenumber" name="L2349" href="#L2349">2349</a> 			t = sci.getAnnotation(ap, a);
-<a class="jxr_linenumber" name="L2350" href="#L2350">2350</a> 			<strong class="jxr_keyword">if</strong> (nn(t))
-<a class="jxr_linenumber" name="L2351" href="#L2351">2351</a> 				<strong class="jxr_keyword">return</strong> t;
-<a class="jxr_linenumber" name="L2352" href="#L2352">2352</a> 		}
-<a class="jxr_linenumber" name="L2353" href="#L2353">2353</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> c2 : interfaces.get()) {
-<a class="jxr_linenumber" name="L2354" href="#L2354">2354</a> 			t = c2.getAnnotation(ap, a);
-<a class="jxr_linenumber" name="L2355" href="#L2355">2355</a> 			<strong class="jxr_keyword">if</strong> (nn(t))
-<a class="jxr_linenumber" name="L2356" href="#L2356">2356</a> 				<strong class="jxr_keyword">return</strong> t;
-<a class="jxr_linenumber" name="L2357" href="#L2357">2357</a> 		}
-<a class="jxr_linenumber" name="L2358" href="#L2358">2358</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L2359" href="#L2359">2359</a> 	}
-<a class="jxr_linenumber" name="L2360" href="#L2360">2360</a> 
-<a class="jxr_linenumber" name="L2361" href="#L2361">2361</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L2362" href="#L2362">2362</a> <em class="jxr_javadoccomment">	 * Returns the first type parameter of this type if it's parameterized (e.g., T in Optional&amp;lt;T&amp;gt;).</em>
-<a class="jxr_linenumber" name="L2363" href="#L2363">2363</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L2364" href="#L2364">2364</a> <em class="jxr_javadoccomment">	 * @param parameterizedType The expected parameterized class (e.g., Optional.class).</em>
-<a class="jxr_linenumber" name="L2365" href="#L2365">2365</a> <em class="jxr_javadoccomment">	 * @return The first type parameter, or &lt;jk&gt;null&lt;/jk&gt; if not parameterized or no parameters exist.</em>
-<a class="jxr_linenumber" name="L2366" href="#L2366">2366</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L2367" href="#L2367">2367</a> 	<strong class="jxr_keyword">private</strong> Type getFirstParameterType(Class&lt;?&gt; parameterizedType) {
-<a class="jxr_linenumber" name="L2368" href="#L2368">2368</a> 		<strong class="jxr_keyword">if</strong> (t instanceof ParameterizedType pt) {
-<a class="jxr_linenumber" name="L2369" href="#L2369">2369</a> 			<strong class="jxr_keyword">var</strong> ta = pt.getActualTypeArguments();
-<a class="jxr_linenumber" name="L2370" href="#L2370">2370</a> 			<strong class="jxr_keyword">if</strong> (ta.length &gt; 0)
-<a class="jxr_linenumber" name="L2371" href="#L2371">2371</a> 				<strong class="jxr_keyword">return</strong> ta[0];
-<a class="jxr_linenumber" name="L2372" href="#L2372">2372</a> 		} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (t instanceof Class&lt;?&gt; c) <em class="jxr_comment">/* Class that extends Optional&lt;T&gt; */</em> {
-<a class="jxr_linenumber" name="L2373" href="#L2373">2373</a> 			<strong class="jxr_keyword">if</strong> (c != parameterizedType &amp;&amp; parameterizedType.isAssignableFrom(c))
-<a class="jxr_linenumber" name="L2374" href="#L2374">2374</a> 				<strong class="jxr_keyword">return</strong> ClassInfo.of(c).getParameterType(0, parameterizedType);
-<a class="jxr_linenumber" name="L2375" href="#L2375">2375</a> 		}
-<a class="jxr_linenumber" name="L2376" href="#L2376">2376</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L2377" href="#L2377">2377</a> 	}
-<a class="jxr_linenumber" name="L2378" href="#L2378">2378</a> 
-<a class="jxr_linenumber" name="L2379" href="#L2379">2379</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L2380" href="#L2380">2380</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this type is a parameterized type of the specified class or a subclass of it.</em>
-<a class="jxr_linenumber" name="L2381" href="#L2381">2381</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L2382" href="#L2382">2382</a> <em class="jxr_javadoccomment">	 * @param c The class to check against (e.g., Optional.class, List.class).</em>
-<a class="jxr_linenumber" name="L2383" href="#L2383">2383</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this is Optional&amp;lt;T&amp;gt; or a subclass like MyOptional extends Optional&amp;lt;String&amp;gt;.</em>
-<a class="jxr_linenumber" name="L2384" href="#L2384">2384</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L2385" href="#L2385">2385</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isParameterizedTypeOf(Class&lt;?&gt; c) {
-<a class="jxr_linenumber" name="L2386" href="#L2386">2386</a> 		<strong class="jxr_keyword">return</strong> (t instanceof ParameterizedType t2 &amp;&amp; t2.getRawType() == c) || (t instanceof Class &amp;&amp; c.isAssignableFrom((Class&lt;?&gt;)t));
-<a class="jxr_linenumber" name="L2387" href="#L2387">2387</a> 	}
-<a class="jxr_linenumber" name="L2388" href="#L2388">2388</a> 
-<a class="jxr_linenumber" name="L2389" href="#L2389">2389</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L2390" href="#L2390">2390</a> <em class="jxr_javadoccomment">	 * Returns all annotations declared directly on this class, wrapped in {@link AnnotationInfo} objects.</em>
-<a class="jxr_linenumber" name="L2391" href="#L2391">2391</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L2392" href="#L2392">2392</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L2393" href="#L2393">2393</a> <em class="jxr_javadoccomment">	 * This includes annotations explicitly applied to the class declaration, but excludes inherited annotations</em>
-<a class="jxr_linenumber" name="L2394" href="#L2394">2394</a> <em class="jxr_javadoccomment">	 * from parent classes. Each annotation is wrapped for additional functionality such as annotation member</em>
-<a class="jxr_linenumber" name="L2395" href="#L2395">2395</a> <em class="jxr_javadoccomment">	 * access and metadata inspection.</em>
-<a class="jxr_linenumber" name="L2396" href="#L2396">2396</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L2397" href="#L2397">2397</a> <em class="jxr_javadoccomment">	 * @return</em>
-<a class="jxr_linenumber" name="L2398" href="#L2398">2398</a> <em class="jxr_javadoccomment">	 * 	An unmodifiable list of {@link AnnotationInfo} wrappers for annotations declared directly on this class.</em>
-<a class="jxr_linenumber" name="L2399" href="#L2399">2399</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;List is empty if no annotations are declared.</em>
-<a class="jxr_linenumber" name="L2400" href="#L2400">2400</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;Results are in declaration order.</em>
-<a class="jxr_linenumber" name="L2401" href="#L2401">2401</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L2402" href="#L2402">2402</a> 	<strong class="jxr_keyword">public</strong> List&lt;AnnotationInfo&gt; getDeclaredAnnotationInfos() {
-<a class="jxr_linenumber" name="L2403" href="#L2403">2403</a> 		<strong class="jxr_keyword">return</strong> declaredAnnotations2.get();
-<a class="jxr_linenumber" name="L2404" href="#L2404">2404</a> 	}
-<a class="jxr_linenumber" name="L2405" href="#L2405">2405</a> 
-<a class="jxr_linenumber" name="L2406" href="#L2406">2406</a> 	ConstructorInfo getConstructorInfo(Constructor&lt;?&gt; x) {
-<a class="jxr_linenumber" name="L2407" href="#L2407">2407</a> 		<strong class="jxr_keyword">return</strong> constructorCache.get(x, () -&gt; <strong class="jxr_keyword">new</strong> <a name="ConstructorInfo" href="../../../../../org/apache/juneau/common/reflect/ConstructorInfo.html#ConstructorInfo">ConstructorInfo</a>(<strong class="jxr_keyword">this</strong>, x));
-<a class="jxr_linenumber" name="L2408" href="#L2408">2408</a> 	}
-<a class="jxr_linenumber" name="L2409" href="#L2409">2409</a> 
-<a class="jxr_linenumber" name="L2410" href="#L2410">2410</a> 	FieldInfo getFieldInfo(Field x) {
-<a class="jxr_linenumber" name="L2411" href="#L2411">2411</a> 		<strong class="jxr_keyword">return</strong> fieldCache.get(x, () -&gt; <strong class="jxr_keyword">new</strong> <a name="FieldInfo" href="../../../../../org/apache/juneau/common/reflect/FieldInfo.html#FieldInfo">FieldInfo</a>(<strong class="jxr_keyword">this</strong>, x));
-<a class="jxr_linenumber" name="L2412" href="#L2412">2412</a> 	}
-<a class="jxr_linenumber" name="L2413" href="#L2413">2413</a> 
-<a class="jxr_linenumber" name="L2414" href="#L2414">2414</a> 	MethodInfo getMethodInfo(Method x) {
-<a class="jxr_linenumber" name="L2415" href="#L2415">2415</a> 		<strong class="jxr_keyword">return</strong> methodCache.get(x, () -&gt; <strong class="jxr_keyword">new</strong> <a name="MethodInfo" href="../../../../../org/apache/juneau/common/reflect/MethodInfo.html#MethodInfo">MethodInfo</a>(<strong class="jxr_keyword">this</strong>, x));
-<a class="jxr_linenumber" name="L2416" href="#L2416">2416</a> 	}
-<a class="jxr_linenumber" name="L2417" href="#L2417">2417</a> 
-<a class="jxr_linenumber" name="L2418" href="#L2418">2418</a> 	<strong class="jxr_keyword">private</strong> List&lt;ClassInfo&gt; findParents() {
-<a class="jxr_linenumber" name="L2419" href="#L2419">2419</a> 		List&lt;ClassInfo&gt; l = list();
-<a class="jxr_linenumber" name="L2420" href="#L2420">2420</a> 		Class&lt;?&gt; pc = c;
-<a class="jxr_linenumber" name="L2421" href="#L2421">2421</a> 		<strong class="jxr_keyword">while</strong> (nn(pc) &amp;&amp; pc != Object.<strong class="jxr_keyword">class</strong>) {
-<a class="jxr_linenumber" name="L2422" href="#L2422">2422</a> 			l.add(of(pc));
-<a class="jxr_linenumber" name="L2423" href="#L2423">2423</a> 			pc = pc.getSuperclass();
-<a class="jxr_linenumber" name="L2424" href="#L2424">2424</a> 		}
-<a class="jxr_linenumber" name="L2425" href="#L2425">2425</a> 		<strong class="jxr_keyword">return</strong> u(l);
-<a class="jxr_linenumber" name="L2426" href="#L2426">2426</a> 	}
-<a class="jxr_linenumber" name="L2427" href="#L2427">2427</a> 
-<a class="jxr_linenumber" name="L2428" href="#L2428">2428</a> 	<strong class="jxr_keyword">private</strong> <a name="MethodInfo" href="../../../../../org/apache/juneau/common/reflect/MethodInfo.html#MethodInfo">MethodInfo</a> findRepeatedAnnotationMethod() {
-<a class="jxr_linenumber" name="L2429" href="#L2429">2429</a> 		<strong class="jxr_keyword">return</strong> getPublicMethods().stream()
-<a class="jxr_linenumber" name="L2430" href="#L2430">2430</a> 			.filter(m -&gt; m.hasName(<span class="jxr_string">"value"</span>))
-<a class="jxr_linenumber" name="L2431" href="#L2431">2431</a> 			.filter(m -&gt; m.getReturnType().isArray())
-<a class="jxr_linenumber" name="L2432" href="#L2432">2432</a> 			.filter(m -&gt; {
-<a class="jxr_linenumber" name="L2433" href="#L2433">2433</a> 				<strong class="jxr_keyword">var</strong> rct = m.getReturnType().getComponentType();
-<a class="jxr_linenumber" name="L2434" href="#L2434">2434</a> 				<strong class="jxr_keyword">if</strong> (rct.hasAnnotation(Repeatable.<strong class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L2435" href="#L2435">2435</a> 					<strong class="jxr_keyword">var</strong> r = rct.getAnnotationInfos(Repeatable.<strong class="jxr_keyword">class</strong>).findFirst().map(AnnotationInfo::<strong class="jxr_keyword">inner</strong>).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L2436" href="#L2436">2436</a> 					<strong class="jxr_keyword">return</strong> r != <strong class="jxr_keyword">null</strong> &amp;&amp; r.value().equals(c);
-<a class="jxr_linenumber" name="L2437" href="#L2437">2437</a> 				}
-<a class="jxr_linenumber" name="L2438" href="#L2438">2438</a> 				<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L2439" href="#L2439">2439</a> 			})
-<a class="jxr_linenumber" name="L2440" href="#L2440">2440</a> 			.findFirst()
-<a class="jxr_linenumber" name="L2441" href="#L2441">2441</a> 			.orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L2442" href="#L2442">2442</a> 	}
-<a class="jxr_linenumber" name="L2443" href="#L2443">2443</a> 
-<a class="jxr_linenumber" name="L2444" href="#L2444">2444</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> findDimensions() {
-<a class="jxr_linenumber" name="L2445" href="#L2445">2445</a> 		<strong class="jxr_keyword">int</strong> d = 0;
-<a class="jxr_linenumber" name="L2446" href="#L2446">2446</a> 		Type ct = t;
-<a class="jxr_linenumber" name="L2447" href="#L2447">2447</a> 
-<a class="jxr_linenumber" name="L2448" href="#L2448">2448</a> 		<em class="jxr_comment">// Handle GenericArrayType (e.g., List&lt;String&gt;[])</em>
-<a class="jxr_linenumber" name="L2449" href="#L2449">2449</a> 		<strong class="jxr_keyword">while</strong> (ct instanceof GenericArrayType gat) {
-<a class="jxr_linenumber" name="L2450" href="#L2450">2450</a> 			d++;
-<a class="jxr_linenumber" name="L2451" href="#L2451">2451</a> 			ct = gat.getGenericComponentType();
-<a class="jxr_linenumber" name="L2452" href="#L2452">2452</a> 		}
-<a class="jxr_linenumber" name="L2453" href="#L2453">2453</a> 
-<a class="jxr_linenumber" name="L2454" href="#L2454">2454</a> 		<em class="jxr_comment">// Handle regular arrays</em>
-<a class="jxr_linenumber" name="L2455" href="#L2455">2455</a> 		Class&lt;?&gt; cc = c;
-<a class="jxr_linenumber" name="L2456" href="#L2456">2456</a> 		<strong class="jxr_keyword">while</strong> (nn(cc) &amp;&amp; cc.isArray()) {
-<a class="jxr_linenumber" name="L2457" href="#L2457">2457</a> 			d++;
-<a class="jxr_linenumber" name="L2458" href="#L2458">2458</a> 			cc = cc.getComponentType();
-<a class="jxr_linenumber" name="L2459" href="#L2459">2459</a> 		}
-<a class="jxr_linenumber" name="L2460" href="#L2460">2460</a> 
-<a class="jxr_linenumber" name="L2461" href="#L2461">2461</a> 		<strong class="jxr_keyword">return</strong> d;
-<a class="jxr_linenumber" name="L2462" href="#L2462">2462</a> 	}
-<a class="jxr_linenumber" name="L2463" href="#L2463">2463</a> 
-<a class="jxr_linenumber" name="L2464" href="#L2464">2464</a> 	<strong class="jxr_keyword">private</strong> ClassInfo findComponentType() {
-<a class="jxr_linenumber" name="L2465" href="#L2465">2465</a> 		Type ct = t;
-<a class="jxr_linenumber" name="L2466" href="#L2466">2466</a> 		Class&lt;?&gt; cc = c;
-<a class="jxr_linenumber" name="L2467" href="#L2467">2467</a> 
-<a class="jxr_linenumber" name="L2468" href="#L2468">2468</a> 		<em class="jxr_comment">// Handle GenericArrayType (e.g., List&lt;String&gt;[])</em>
-<a class="jxr_linenumber" name="L2469" href="#L2469">2469</a> 		<strong class="jxr_keyword">while</strong> (ct instanceof GenericArrayType gat) {
-<a class="jxr_linenumber" name="L2470" href="#L2470">2470</a> 			ct = gat.getGenericComponentType();
-<a class="jxr_linenumber" name="L2471" href="#L2471">2471</a> 		}
-<a class="jxr_linenumber" name="L2472" href="#L2472">2472</a> 
-<a class="jxr_linenumber" name="L2473" href="#L2473">2473</a> 		<em class="jxr_comment">// Handle regular arrays</em>
-<a class="jxr_linenumber" name="L2474" href="#L2474">2474</a> 		<strong class="jxr_keyword">while</strong> (nn(cc) &amp;&amp; cc.isArray()) {
-<a class="jxr_linenumber" name="L2475" href="#L2475">2475</a> 			cc = cc.getComponentType();
-<a class="jxr_linenumber" name="L2476" href="#L2476">2476</a> 		}
-<a class="jxr_linenumber" name="L2477" href="#L2477">2477</a> 
-<a class="jxr_linenumber" name="L2478" href="#L2478">2478</a> 		<em class="jxr_comment">// Return the deepest component type found</em>
-<a class="jxr_linenumber" name="L2479" href="#L2479">2479</a> 		<strong class="jxr_keyword">if</strong> (ct != t) {
-<a class="jxr_linenumber" name="L2480" href="#L2480">2480</a> 			<strong class="jxr_keyword">return</strong> of(ct);
-<a class="jxr_linenumber" name="L2481" href="#L2481">2481</a> 		} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cc != c) {
-<a class="jxr_linenumber" name="L2482" href="#L2482">2482</a> 			<strong class="jxr_keyword">return</strong> of(cc);
-<a class="jxr_linenumber" name="L2483" href="#L2483">2483</a> 		} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L2484" href="#L2484">2484</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L2485" href="#L2485">2485</a> 		}
-<a class="jxr_linenumber" name="L2486" href="#L2486">2486</a> 	}
-<a class="jxr_linenumber" name="L2487" href="#L2487">2487</a> 
-<a class="jxr_linenumber" name="L2488" href="#L2488">2488</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L2489" href="#L2489">2489</a> 	<em class="jxr_comment">// Annotatable interface methods</em>
-<a class="jxr_linenumber" name="L2490" href="#L2490">2490</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L2491" href="#L2491">2491</a> 
-<a class="jxr_linenumber" name="L2492" href="#L2492">2492</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L2493" href="#L2493">2493</a> 	<strong class="jxr_keyword">public</strong> <a name="AnnotatableType" href="../../../../../org/apache/juneau/common/reflect/AnnotatableType.html#AnnotatableType">AnnotatableType</a> getAnnotatableType() {
-<a class="jxr_linenumber" name="L2494" href="#L2494">2494</a> 		<strong class="jxr_keyword">return</strong> AnnotatableType.CLASS_TYPE;
-<a class="jxr_linenumber" name="L2495" href="#L2495">2495</a> 	}
-<a class="jxr_linenumber" name="L2496" href="#L2496">2496</a> 
-<a class="jxr_linenumber" name="L2497" href="#L2497">2497</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L2498" href="#L2498">2498</a> 	<strong class="jxr_keyword">public</strong> ClassInfo getClassInfo() {
-<a class="jxr_linenumber" name="L2499" href="#L2499">2499</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L2500" href="#L2500">2500</a> 	}
-<a class="jxr_linenumber" name="L2501" href="#L2501">2501</a> 
-<a class="jxr_linenumber" name="L2502" href="#L2502">2502</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L2503" href="#L2503">2503</a> 	<strong class="jxr_keyword">public</strong> String getAnnotatableName() {
-<a class="jxr_linenumber" name="L2504" href="#L2504">2504</a> 		<strong class="jxr_keyword">return</strong> getNameSimple();
-<a class="jxr_linenumber" name="L2505" href="#L2505">2505</a> 	}
-<a class="jxr_linenumber" name="L2506" href="#L2506">2506</a> }
+<a class="jxr_linenumber" name="L2343" href="#L2343">2343</a> 		A t = ap.findDeclared(a, c).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L2344" href="#L2344">2344</a> 		<strong class="jxr_keyword">if</strong> (nn(t))
+<a class="jxr_linenumber" name="L2345" href="#L2345">2345</a> 			<strong class="jxr_keyword">return</strong> t;
+<a class="jxr_linenumber" name="L2346" href="#L2346">2346</a> 		ClassInfo sci = getSuperclass();
+<a class="jxr_linenumber" name="L2347" href="#L2347">2347</a> 		<strong class="jxr_keyword">if</strong> (nn(sci)) {
+<a class="jxr_linenumber" name="L2348" href="#L2348">2348</a> 			t = sci.getAnnotation(ap, a);
+<a class="jxr_linenumber" name="L2349" href="#L2349">2349</a> 			<strong class="jxr_keyword">if</strong> (nn(t))
+<a class="jxr_linenumber" name="L2350" href="#L2350">2350</a> 				<strong class="jxr_keyword">return</strong> t;
+<a class="jxr_linenumber" name="L2351" href="#L2351">2351</a> 		}
+<a class="jxr_linenumber" name="L2352" href="#L2352">2352</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> c2 : interfaces.get()) {
+<a class="jxr_linenumber" name="L2353" href="#L2353">2353</a> 			t = c2.getAnnotation(ap, a);
+<a class="jxr_linenumber" name="L2354" href="#L2354">2354</a> 			<strong class="jxr_keyword">if</strong> (nn(t))
+<a class="jxr_linenumber" name="L2355" href="#L2355">2355</a> 				<strong class="jxr_keyword">return</strong> t;
+<a class="jxr_linenumber" name="L2356" href="#L2356">2356</a> 		}
+<a class="jxr_linenumber" name="L2357" href="#L2357">2357</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L2358" href="#L2358">2358</a> 	}
+<a class="jxr_linenumber" name="L2359" href="#L2359">2359</a> 
+<a class="jxr_linenumber" name="L2360" href="#L2360">2360</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L2361" href="#L2361">2361</a> <em class="jxr_javadoccomment">	 * Returns the first type parameter of this type if it's parameterized (e.g., T in Optional&amp;lt;T&amp;gt;).</em>
+<a class="jxr_linenumber" name="L2362" href="#L2362">2362</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L2363" href="#L2363">2363</a> <em class="jxr_javadoccomment">	 * @param parameterizedType The expected parameterized class (e.g., Optional.class).</em>
+<a class="jxr_linenumber" name="L2364" href="#L2364">2364</a> <em class="jxr_javadoccomment">	 * @return The first type parameter, or &lt;jk&gt;null&lt;/jk&gt; if not parameterized or no parameters exist.</em>
+<a class="jxr_linenumber" name="L2365" href="#L2365">2365</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L2366" href="#L2366">2366</a> 	<strong class="jxr_keyword">private</strong> Type getFirstParameterType(Class&lt;?&gt; parameterizedType) {
+<a class="jxr_linenumber" name="L2367" href="#L2367">2367</a> 		<strong class="jxr_keyword">if</strong> (t instanceof ParameterizedType pt) {
+<a class="jxr_linenumber" name="L2368" href="#L2368">2368</a> 			<strong class="jxr_keyword">var</strong> ta = pt.getActualTypeArguments();
+<a class="jxr_linenumber" name="L2369" href="#L2369">2369</a> 			<strong class="jxr_keyword">if</strong> (ta.length &gt; 0)
+<a class="jxr_linenumber" name="L2370" href="#L2370">2370</a> 				<strong class="jxr_keyword">return</strong> ta[0];
+<a class="jxr_linenumber" name="L2371" href="#L2371">2371</a> 		} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (t instanceof Class&lt;?&gt; c) <em class="jxr_comment">/* Class that extends Optional&lt;T&gt; */</em> {
+<a class="jxr_linenumber" name="L2372" href="#L2372">2372</a> 			<strong class="jxr_keyword">if</strong> (c != parameterizedType &amp;&amp; parameterizedType.isAssignableFrom(c))
+<a class="jxr_linenumber" name="L2373" href="#L2373">2373</a> 				<strong class="jxr_keyword">return</strong> ClassInfo.of(c).getParameterType(0, parameterizedType);
+<a class="jxr_linenumber" name="L2374" href="#L2374">2374</a> 		}
+<a class="jxr_linenumber" name="L2375" href="#L2375">2375</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L2376" href="#L2376">2376</a> 	}
+<a class="jxr_linenumber" name="L2377" href="#L2377">2377</a> 
+<a class="jxr_linenumber" name="L2378" href="#L2378">2378</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L2379" href="#L2379">2379</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this type is a parameterized type of the specified class or a subclass of it.</em>
+<a class="jxr_linenumber" name="L2380" href="#L2380">2380</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L2381" href="#L2381">2381</a> <em class="jxr_javadoccomment">	 * @param c The class to check against (e.g., Optional.class, List.class).</em>
+<a class="jxr_linenumber" name="L2382" href="#L2382">2382</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this is Optional&amp;lt;T&amp;gt; or a subclass like MyOptional extends Optional&amp;lt;String&amp;gt;.</em>
+<a class="jxr_linenumber" name="L2383" href="#L2383">2383</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L2384" href="#L2384">2384</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isParameterizedTypeOf(Class&lt;?&gt; c) {
+<a class="jxr_linenumber" name="L2385" href="#L2385">2385</a> 		<strong class="jxr_keyword">return</strong> (t instanceof ParameterizedType t2 &amp;&amp; t2.getRawType() == c) || (t instanceof Class &amp;&amp; c.isAssignableFrom((Class&lt;?&gt;)t));
+<a class="jxr_linenumber" name="L2386" href="#L2386">2386</a> 	}
+<a class="jxr_linenumber" name="L2387" href="#L2387">2387</a> 
+<a class="jxr_linenumber" name="L2388" href="#L2388">2388</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L2389" href="#L2389">2389</a> <em class="jxr_javadoccomment">	 * Returns all annotations declared directly on this class, wrapped in {@link AnnotationInfo} objects.</em>
+<a class="jxr_linenumber" name="L2390" href="#L2390">2390</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L2391" href="#L2391">2391</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L2392" href="#L2392">2392</a> <em class="jxr_javadoccomment">	 * This includes annotations explicitly applied to the class declaration, but excludes inherited annotations</em>
+<a class="jxr_linenumber" name="L2393" href="#L2393">2393</a> <em class="jxr_javadoccomment">	 * from parent classes. Each annotation is wrapped for additional functionality such as annotation member</em>
+<a class="jxr_linenumber" name="L2394" href="#L2394">2394</a> <em class="jxr_javadoccomment">	 * access and metadata inspection.</em>
+<a class="jxr_linenumber" name="L2395" href="#L2395">2395</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L2396" href="#L2396">2396</a> <em class="jxr_javadoccomment">	 * @return</em>
+<a class="jxr_linenumber" name="L2397" href="#L2397">2397</a> <em class="jxr_javadoccomment">	 * 	An unmodifiable list of {@link AnnotationInfo} wrappers for annotations declared directly on this class.</em>
+<a class="jxr_linenumber" name="L2398" href="#L2398">2398</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;List is empty if no annotations are declared.</em>
+<a class="jxr_linenumber" name="L2399" href="#L2399">2399</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;Results are in declaration order.</em>
+<a class="jxr_linenumber" name="L2400" href="#L2400">2400</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L2401" href="#L2401">2401</a> 	<strong class="jxr_keyword">public</strong> List&lt;AnnotationInfo&gt; getDeclaredAnnotationInfos() {
+<a class="jxr_linenumber" name="L2402" href="#L2402">2402</a> 		<strong class="jxr_keyword">return</strong> declaredAnnotations2.get();
+<a class="jxr_linenumber" name="L2403" href="#L2403">2403</a> 	}
+<a class="jxr_linenumber" name="L2404" href="#L2404">2404</a> 
+<a class="jxr_linenumber" name="L2405" href="#L2405">2405</a> 	ConstructorInfo getConstructorInfo(Constructor&lt;?&gt; x) {
+<a class="jxr_linenumber" name="L2406" href="#L2406">2406</a> 		<strong class="jxr_keyword">return</strong> constructorCache.get(x, () -&gt; <strong class="jxr_keyword">new</strong> <a name="ConstructorInfo" href="../../../../../org/apache/juneau/common/reflect/ConstructorInfo.html#ConstructorInfo">ConstructorInfo</a>(<strong class="jxr_keyword">this</strong>, x));
+<a class="jxr_linenumber" name="L2407" href="#L2407">2407</a> 	}
+<a class="jxr_linenumber" name="L2408" href="#L2408">2408</a> 
+<a class="jxr_linenumber" name="L2409" href="#L2409">2409</a> 	FieldInfo getFieldInfo(Field x) {
+<a class="jxr_linenumber" name="L2410" href="#L2410">2410</a> 		<strong class="jxr_keyword">return</strong> fieldCache.get(x, () -&gt; <strong class="jxr_keyword">new</strong> <a name="FieldInfo" href="../../../../../org/apache/juneau/common/reflect/FieldInfo.html#FieldInfo">FieldInfo</a>(<strong class="jxr_keyword">this</strong>, x));
+<a class="jxr_linenumber" name="L2411" href="#L2411">2411</a> 	}
+<a class="jxr_linenumber" name="L2412" href="#L2412">2412</a> 
+<a class="jxr_linenumber" name="L2413" href="#L2413">2413</a> 	MethodInfo getMethodInfo(Method x) {
+<a class="jxr_linenumber" name="L2414" href="#L2414">2414</a> 		<strong class="jxr_keyword">return</strong> methodCache.get(x, () -&gt; <strong class="jxr_keyword">new</strong> <a name="MethodInfo" href="../../../../../org/apache/juneau/common/reflect/MethodInfo.html#MethodInfo">MethodInfo</a>(<strong class="jxr_keyword">this</strong>, x));
+<a class="jxr_linenumber" name="L2415" href="#L2415">2415</a> 	}
+<a class="jxr_linenumber" name="L2416" href="#L2416">2416</a> 
+<a class="jxr_linenumber" name="L2417" href="#L2417">2417</a> 	<strong class="jxr_keyword">private</strong> List&lt;ClassInfo&gt; findParents() {
+<a class="jxr_linenumber" name="L2418" href="#L2418">2418</a> 		List&lt;ClassInfo&gt; l = list();
+<a class="jxr_linenumber" name="L2419" href="#L2419">2419</a> 		Class&lt;?&gt; pc = c;
+<a class="jxr_linenumber" name="L2420" href="#L2420">2420</a> 		<strong class="jxr_keyword">while</strong> (nn(pc) &amp;&amp; pc != Object.<strong class="jxr_keyword">class</strong>) {
+<a class="jxr_linenumber" name="L2421" href="#L2421">2421</a> 			l.add(of(pc));
+<a class="jxr_linenumber" name="L2422" href="#L2422">2422</a> 			pc = pc.getSuperclass();
+<a class="jxr_linenumber" name="L2423" href="#L2423">2423</a> 		}
+<a class="jxr_linenumber" name="L2424" href="#L2424">2424</a> 		<strong class="jxr_keyword">return</strong> u(l);
+<a class="jxr_linenumber" name="L2425" href="#L2425">2425</a> 	}
+<a class="jxr_linenumber" name="L2426" href="#L2426">2426</a> 
+<a class="jxr_linenumber" name="L2427" href="#L2427">2427</a> 	<strong class="jxr_keyword">private</strong> <a name="MethodInfo" href="../../../../../org/apache/juneau/common/reflect/MethodInfo.html#MethodInfo">MethodInfo</a> findRepeatedAnnotationMethod() {
+<a class="jxr_linenumber" name="L2428" href="#L2428">2428</a> 		<strong class="jxr_keyword">return</strong> getPublicMethods().stream()
+<a class="jxr_linenumber" name="L2429" href="#L2429">2429</a> 			.filter(m -&gt; m.hasName(<span class="jxr_string">"value"</span>))
+<a class="jxr_linenumber" name="L2430" href="#L2430">2430</a> 			.filter(m -&gt; m.getReturnType().isArray())
+<a class="jxr_linenumber" name="L2431" href="#L2431">2431</a> 			.filter(m -&gt; {
+<a class="jxr_linenumber" name="L2432" href="#L2432">2432</a> 				<strong class="jxr_keyword">var</strong> rct = m.getReturnType().getComponentType();
+<a class="jxr_linenumber" name="L2433" href="#L2433">2433</a> 				<strong class="jxr_keyword">if</strong> (rct.hasAnnotation(Repeatable.<strong class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L2434" href="#L2434">2434</a> 					<strong class="jxr_keyword">var</strong> r = rct.getAnnotationInfos(Repeatable.<strong class="jxr_keyword">class</strong>).findFirst().map(AnnotationInfo::<strong class="jxr_keyword">inner</strong>).orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L2435" href="#L2435">2435</a> 					<strong class="jxr_keyword">return</strong> r != <strong class="jxr_keyword">null</strong> &amp;&amp; r.value().equals(c);
+<a class="jxr_linenumber" name="L2436" href="#L2436">2436</a> 				}
+<a class="jxr_linenumber" name="L2437" href="#L2437">2437</a> 				<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L2438" href="#L2438">2438</a> 			})
+<a class="jxr_linenumber" name="L2439" href="#L2439">2439</a> 			.findFirst()
+<a class="jxr_linenumber" name="L2440" href="#L2440">2440</a> 			.orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L2441" href="#L2441">2441</a> 	}
+<a class="jxr_linenumber" name="L2442" href="#L2442">2442</a> 
+<a class="jxr_linenumber" name="L2443" href="#L2443">2443</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">int</strong> findDimensions() {
+<a class="jxr_linenumber" name="L2444" href="#L2444">2444</a> 		<strong class="jxr_keyword">int</strong> d = 0;
+<a class="jxr_linenumber" name="L2445" href="#L2445">2445</a> 		Type ct = t;
+<a class="jxr_linenumber" name="L2446" href="#L2446">2446</a> 
+<a class="jxr_linenumber" name="L2447" href="#L2447">2447</a> 		<em class="jxr_comment">// Handle GenericArrayType (e.g., List&lt;String&gt;[])</em>
+<a class="jxr_linenumber" name="L2448" href="#L2448">2448</a> 		<strong class="jxr_keyword">while</strong> (ct instanceof GenericArrayType gat) {
+<a class="jxr_linenumber" name="L2449" href="#L2449">2449</a> 			d++;
+<a class="jxr_linenumber" name="L2450" href="#L2450">2450</a> 			ct = gat.getGenericComponentType();
+<a class="jxr_linenumber" name="L2451" href="#L2451">2451</a> 		}
+<a class="jxr_linenumber" name="L2452" href="#L2452">2452</a> 
+<a class="jxr_linenumber" name="L2453" href="#L2453">2453</a> 		<em class="jxr_comment">// Handle regular arrays</em>
+<a class="jxr_linenumber" name="L2454" href="#L2454">2454</a> 		Class&lt;?&gt; cc = c;
+<a class="jxr_linenumber" name="L2455" href="#L2455">2455</a> 		<strong class="jxr_keyword">while</strong> (nn(cc) &amp;&amp; cc.isArray()) {
+<a class="jxr_linenumber" name="L2456" href="#L2456">2456</a> 			d++;
+<a class="jxr_linenumber" name="L2457" href="#L2457">2457</a> 			cc = cc.getComponentType();
+<a class="jxr_linenumber" name="L2458" href="#L2458">2458</a> 		}
+<a class="jxr_linenumber" name="L2459" href="#L2459">2459</a> 
+<a class="jxr_linenumber" name="L2460" href="#L2460">2460</a> 		<strong class="jxr_keyword">return</strong> d;
+<a class="jxr_linenumber" name="L2461" href="#L2461">2461</a> 	}
+<a class="jxr_linenumber" name="L2462" href="#L2462">2462</a> 
+<a class="jxr_linenumber" name="L2463" href="#L2463">2463</a> 	<strong class="jxr_keyword">private</strong> ClassInfo findComponentType() {
+<a class="jxr_linenumber" name="L2464" href="#L2464">2464</a> 		Type ct = t;
+<a class="jxr_linenumber" name="L2465" href="#L2465">2465</a> 		Class&lt;?&gt; cc = c;
+<a class="jxr_linenumber" name="L2466" href="#L2466">2466</a> 
+<a class="jxr_linenumber" name="L2467" href="#L2467">2467</a> 		<em class="jxr_comment">// Handle GenericArrayType (e.g., List&lt;String&gt;[])</em>
+<a class="jxr_linenumber" name="L2468" href="#L2468">2468</a> 		<strong class="jxr_keyword">while</strong> (ct instanceof GenericArrayType gat) {
+<a class="jxr_linenumber" name="L2469" href="#L2469">2469</a> 			ct = gat.getGenericComponentType();
+<a class="jxr_linenumber" name="L2470" href="#L2470">2470</a> 		}
+<a class="jxr_linenumber" name="L2471" href="#L2471">2471</a> 
+<a class="jxr_linenumber" name="L2472" href="#L2472">2472</a> 		<em class="jxr_comment">// Handle regular arrays</em>
+<a class="jxr_linenumber" name="L2473" href="#L2473">2473</a> 		<strong class="jxr_keyword">while</strong> (nn(cc) &amp;&amp; cc.isArray()) {
+<a class="jxr_linenumber" name="L2474" href="#L2474">2474</a> 			cc = cc.getComponentType();
+<a class="jxr_linenumber" name="L2475" href="#L2475">2475</a> 		}
+<a class="jxr_linenumber" name="L2476" href="#L2476">2476</a> 
+<a class="jxr_linenumber" name="L2477" href="#L2477">2477</a> 		<em class="jxr_comment">// Return the deepest component type found</em>
+<a class="jxr_linenumber" name="L2478" href="#L2478">2478</a> 		<strong class="jxr_keyword">if</strong> (ct != t) {
+<a class="jxr_linenumber" name="L2479" href="#L2479">2479</a> 			<strong class="jxr_keyword">return</strong> of(ct);
+<a class="jxr_linenumber" name="L2480" href="#L2480">2480</a> 		} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (cc != c) {
+<a class="jxr_linenumber" name="L2481" href="#L2481">2481</a> 			<strong class="jxr_keyword">return</strong> of(cc);
+<a class="jxr_linenumber" name="L2482" href="#L2482">2482</a> 		} <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L2483" href="#L2483">2483</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L2484" href="#L2484">2484</a> 		}
+<a class="jxr_linenumber" name="L2485" href="#L2485">2485</a> 	}
+<a class="jxr_linenumber" name="L2486" href="#L2486">2486</a> 
+<a class="jxr_linenumber" name="L2487" href="#L2487">2487</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L2488" href="#L2488">2488</a> 	<em class="jxr_comment">// Annotatable interface methods</em>
+<a class="jxr_linenumber" name="L2489" href="#L2489">2489</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L2490" href="#L2490">2490</a> 
+<a class="jxr_linenumber" name="L2491" href="#L2491">2491</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L2492" href="#L2492">2492</a> 	<strong class="jxr_keyword">public</strong> <a name="AnnotatableType" href="../../../../../org/apache/juneau/common/reflect/AnnotatableType.html#AnnotatableType">AnnotatableType</a> getAnnotatableType() {
+<a class="jxr_linenumber" name="L2493" href="#L2493">2493</a> 		<strong class="jxr_keyword">return</strong> AnnotatableType.CLASS_TYPE;
+<a class="jxr_linenumber" name="L2494" href="#L2494">2494</a> 	}
+<a class="jxr_linenumber" name="L2495" href="#L2495">2495</a> 
+<a class="jxr_linenumber" name="L2496" href="#L2496">2496</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L2497" href="#L2497">2497</a> 	<strong class="jxr_keyword">public</strong> ClassInfo getClassInfo() {
+<a class="jxr_linenumber" name="L2498" href="#L2498">2498</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L2499" href="#L2499">2499</a> 	}
+<a class="jxr_linenumber" name="L2500" href="#L2500">2500</a> 
+<a class="jxr_linenumber" name="L2501" href="#L2501">2501</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L2502" href="#L2502">2502</a> 	<strong class="jxr_keyword">public</strong> String getAnnotatableName() {
+<a class="jxr_linenumber" name="L2503" href="#L2503">2503</a> 		<strong class="jxr_keyword">return</strong> getNameSimple();
+<a class="jxr_linenumber" name="L2504" href="#L2504">2504</a> 	}
+<a class="jxr_linenumber" name="L2505" href="#L2505">2505</a> }
 </pre>
 <hr/>
 <div id="footer">© 2016–2025 <a href="https://www.apache.org/">The Apache Software Foundation</a></div>
diff --git a/site/xref/org/apache/juneau/common/reflect/ConstructorInfo.html b/site/xref/org/apache/juneau/common/reflect/ConstructorInfo.html
index aa49043c7c..e700c9800e 100644
--- a/site/xref/org/apache/juneau/common/reflect/ConstructorInfo.html
+++ b/site/xref/org/apache/juneau/common/reflect/ConstructorInfo.html
@@ -135,110 +135,95 @@
 <a class="jxr_linenumber" name="L127" href="#L127">127</a> 	}
 <a class="jxr_linenumber" name="L128" href="#L128">128</a> 
 <a class="jxr_linenumber" name="L129" href="#L129">129</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em class="jxr_javadoccomment">	 * Finds the annotation of the specified type defined on this constructor.</em>
+<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present on this constructor.</em>
 <a class="jxr_linenumber" name="L131" href="#L131">131</a> <em class="jxr_javadoccomment">	 *</em>
 <a class="jxr_linenumber" name="L132" href="#L132">132</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
 <a class="jxr_linenumber" name="L133" href="#L133">133</a> <em class="jxr_javadoccomment">	 * @param annotationProvider The annotation provider.</em>
 <a class="jxr_linenumber" name="L134" href="#L134">134</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">	 * @return The first annotation found, or &lt;jk&gt;null&lt;/jk&gt; if it doesn't exist.</em>
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present on this constructor.</em>
 <a class="jxr_linenumber" name="L136" href="#L136">136</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A getAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> 		Value&lt;A&gt; t = Value.empty();
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> 		annotationProvider.getAnnotationProvider().find(type, c).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).forEach(x -&gt; t.set(x));
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> 		<strong class="jxr_keyword">return</strong> t.orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> 	}
-<a class="jxr_linenumber" name="L142" href="#L142">142</a> 
-<a class="jxr_linenumber" name="L143" href="#L143">143</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present on this constructor.</em>
-<a class="jxr_linenumber" name="L145" href="#L145">145</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> <em class="jxr_javadoccomment">	 * @param annotationProvider The annotation provider.</em>
-<a class="jxr_linenumber" name="L148" href="#L148">148</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
-<a class="jxr_linenumber" name="L149" href="#L149">149</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present on this constructor.</em>
-<a class="jxr_linenumber" name="L150" href="#L150">150</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L151" href="#L151">151</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
-<a class="jxr_linenumber" name="L152" href="#L152">152</a> 		<em class="jxr_comment">// Inline Context.firstAnnotation() call</em>
-<a class="jxr_linenumber" name="L153" href="#L153">153</a> 		<strong class="jxr_keyword">return</strong> nn(annotationProvider.getAnnotationProvider().find(type, c).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="L154" href="#L154">154</a> 	}
-<a class="jxr_linenumber" name="L155" href="#L155">155</a> 
-<a class="jxr_linenumber" name="L156" href="#L156">156</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L157" href="#L157">157</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this constructor.</em>
-<a class="jxr_linenumber" name="L158" href="#L158">158</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L159" href="#L159">159</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
-<a class="jxr_linenumber" name="L160" href="#L160">160</a> <em class="jxr_javadoccomment">	 * @param annotationProvider The annotation provider.</em>
-<a class="jxr_linenumber" name="L161" href="#L161">161</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
-<a class="jxr_linenumber" name="L162" href="#L162">162</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this constructor.</em>
-<a class="jxr_linenumber" name="L163" href="#L163">163</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L164" href="#L164">164</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
-<a class="jxr_linenumber" name="L165" href="#L165">165</a> 		<strong class="jxr_keyword">return</strong> ! hasAnnotation(annotationProvider, type);
-<a class="jxr_linenumber" name="L166" href="#L166">166</a> 	}
-<a class="jxr_linenumber" name="L167" href="#L167">167</a> 
-<a class="jxr_linenumber" name="L168" href="#L168">168</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L169" href="#L169">169</a> <em class="jxr_javadoccomment">	 * Returns the wrapped method.</em>
-<a class="jxr_linenumber" name="L170" href="#L170">170</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L171" href="#L171">171</a> <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The inner class type.</em>
-<a class="jxr_linenumber" name="L172" href="#L172">172</a> <em class="jxr_javadoccomment">	 * @return The wrapped method.</em>
-<a class="jxr_linenumber" name="L173" href="#L173">173</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L174" href="#L174">174</a> 	@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L175" href="#L175">175</a> 	<strong class="jxr_keyword">public</strong> &lt;T&gt; Constructor&lt;T&gt; <strong class="jxr_keyword">inner</strong>() {
-<a class="jxr_linenumber" name="L176" href="#L176">176</a> 		<strong class="jxr_keyword">return</strong> (Constructor&lt;T&gt;)c;
-<a class="jxr_linenumber" name="L177" href="#L177">177</a> 	}
-<a class="jxr_linenumber" name="L178" href="#L178">178</a> 
-<a class="jxr_linenumber" name="L179" href="#L179">179</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L180" href="#L180">180</a> <em class="jxr_javadoccomment">	 * Shortcut for calling the new-instance method on the underlying constructor.</em>
-<a class="jxr_linenumber" name="L181" href="#L181">181</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L182" href="#L182">182</a> <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The constructor class type.</em>
-<a class="jxr_linenumber" name="L183" href="#L183">183</a> <em class="jxr_javadoccomment">	 * @param args the arguments used for the method call.</em>
-<a class="jxr_linenumber" name="L184" href="#L184">184</a> <em class="jxr_javadoccomment">	 * @return The object returned from the constructor.</em>
-<a class="jxr_linenumber" name="L185" href="#L185">185</a> <em class="jxr_javadoccomment">	 * @throws ExecutableException Exception occurred on invoked constructor/method/field.</em>
-<a class="jxr_linenumber" name="L186" href="#L186">186</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L187" href="#L187">187</a> 	@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L188" href="#L188">188</a> 	<strong class="jxr_keyword">public</strong> &lt;T&gt; T newInstance(Object...args) <strong class="jxr_keyword">throws</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> {
-<a class="jxr_linenumber" name="L189" href="#L189">189</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L190" href="#L190">190</a> 			<strong class="jxr_keyword">return</strong> (T)c.newInstance(args);
-<a class="jxr_linenumber" name="L191" href="#L191">191</a> 		} <strong class="jxr_keyword">catch</strong> (InvocationTargetException e) {
-<a class="jxr_linenumber" name="L192" href="#L192">192</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a>(e.getTargetException());
-<a class="jxr_linenumber" name="L193" href="#L193">193</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="L194" href="#L194">194</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a>(e);
-<a class="jxr_linenumber" name="L195" href="#L195">195</a> 		}
-<a class="jxr_linenumber" name="L196" href="#L196">196</a> 	}
-<a class="jxr_linenumber" name="L197" href="#L197">197</a> 
-<a class="jxr_linenumber" name="L198" href="#L198">198</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L199" href="#L199">199</a> <em class="jxr_javadoccomment">	 * Shortcut for calling the new-instance method on the underlying constructor using lenient argument matching.</em>
-<a class="jxr_linenumber" name="L200" href="#L200">200</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L201" href="#L201">201</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L202" href="#L202">202</a> <em class="jxr_javadoccomment">	 * Lenient matching allows arguments to be matched to parameters based on parameter types.</em>
-<a class="jxr_linenumber" name="L203" href="#L203">203</a> <em class="jxr_javadoccomment">	 * &lt;br&gt;Arguments can be in any order.</em>
-<a class="jxr_linenumber" name="L204" href="#L204">204</a> <em class="jxr_javadoccomment">	 * &lt;br&gt;Extra arguments are ignored.</em>
-<a class="jxr_linenumber" name="L205" href="#L205">205</a> <em class="jxr_javadoccomment">	 * &lt;br&gt;Missing arguments are set to &lt;jk&gt;null&lt;/jk&gt;.</em>
-<a class="jxr_linenumber" name="L206" href="#L206">206</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L207" href="#L207">207</a> <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The constructor class type.</em>
-<a class="jxr_linenumber" name="L208" href="#L208">208</a> <em class="jxr_javadoccomment">	 * @param args The arguments used for the constructor call.</em>
-<a class="jxr_linenumber" name="L209" href="#L209">209</a> <em class="jxr_javadoccomment">	 * @return The object returned from the constructor.</em>
-<a class="jxr_linenumber" name="L210" href="#L210">210</a> <em class="jxr_javadoccomment">	 * @throws ExecutableException Exception occurred on invoked constructor/method/field.</em>
-<a class="jxr_linenumber" name="L211" href="#L211">211</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L212" href="#L212">212</a> 	<strong class="jxr_keyword">public</strong> &lt;T&gt; T newInstanceLenient(Object...args) <strong class="jxr_keyword">throws</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> {
-<a class="jxr_linenumber" name="L213" href="#L213">213</a> 		<strong class="jxr_keyword">return</strong> newInstance(ClassUtils.getMatchingArgs(c.getParameterTypes(), args));
-<a class="jxr_linenumber" name="L214" href="#L214">214</a> 	}
-<a class="jxr_linenumber" name="L215" href="#L215">215</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L216" href="#L216">216</a> 	<em class="jxr_comment">// Annotatable interface methods</em>
-<a class="jxr_linenumber" name="L217" href="#L217">217</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L218" href="#L218">218</a> 
-<a class="jxr_linenumber" name="L219" href="#L219">219</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L220" href="#L220">220</a> 	<strong class="jxr_keyword">public</strong> <a name="AnnotatableType" href="../../../../../org/apache/juneau/common/reflect/AnnotatableType.html#AnnotatableType">AnnotatableType</a> getAnnotatableType() {
-<a class="jxr_linenumber" name="L221" href="#L221">221</a> 		<strong class="jxr_keyword">return</strong> AnnotatableType.CONSTRUCTOR_TYPE;
-<a class="jxr_linenumber" name="L222" href="#L222">222</a> 	}
-<a class="jxr_linenumber" name="L223" href="#L223">223</a> 
-<a class="jxr_linenumber" name="L224" href="#L224">224</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L225" href="#L225">225</a> 	<strong class="jxr_keyword">public</strong> ClassInfo getClassInfo() {
-<a class="jxr_linenumber" name="L226" href="#L226">226</a> 		<strong class="jxr_keyword">return</strong> getDeclaringClass();
-<a class="jxr_linenumber" name="L227" href="#L227">227</a> 	}
-<a class="jxr_linenumber" name="L228" href="#L228">228</a> 
-<a class="jxr_linenumber" name="L229" href="#L229">229</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L230" href="#L230">230</a> 	<strong class="jxr_keyword">public</strong> String getAnnotatableName() {
-<a class="jxr_linenumber" name="L231" href="#L231">231</a> 		<strong class="jxr_keyword">return</strong> getShortName();
-<a class="jxr_linenumber" name="L232" href="#L232">232</a> 	}
-<a class="jxr_linenumber" name="L233" href="#L233">233</a> }
+<a class="jxr_linenumber" name="L137" href="#L137">137</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L138" href="#L138">138</a> 		<strong class="jxr_keyword">return</strong> nn(annotationProvider.find(type, c).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>));
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> 	}
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> 
+<a class="jxr_linenumber" name="L141" href="#L141">141</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L142" href="#L142">142</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this constructor.</em>
+<a class="jxr_linenumber" name="L143" href="#L143">143</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L144" href="#L144">144</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
+<a class="jxr_linenumber" name="L145" href="#L145">145</a> <em class="jxr_javadoccomment">	 * @param annotationProvider The annotation provider.</em>
+<a class="jxr_linenumber" name="L146" href="#L146">146</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
+<a class="jxr_linenumber" name="L147" href="#L147">147</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this constructor.</em>
+<a class="jxr_linenumber" name="L148" href="#L148">148</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L149" href="#L149">149</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L150" href="#L150">150</a> 		<strong class="jxr_keyword">return</strong> ! hasAnnotation(annotationProvider, type);
+<a class="jxr_linenumber" name="L151" href="#L151">151</a> 	}
+<a class="jxr_linenumber" name="L152" href="#L152">152</a> 
+<a class="jxr_linenumber" name="L153" href="#L153">153</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L154" href="#L154">154</a> <em class="jxr_javadoccomment">	 * Returns the wrapped method.</em>
+<a class="jxr_linenumber" name="L155" href="#L155">155</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L156" href="#L156">156</a> <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The inner class type.</em>
+<a class="jxr_linenumber" name="L157" href="#L157">157</a> <em class="jxr_javadoccomment">	 * @return The wrapped method.</em>
+<a class="jxr_linenumber" name="L158" href="#L158">158</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L159" href="#L159">159</a> 	@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L160" href="#L160">160</a> 	<strong class="jxr_keyword">public</strong> &lt;T&gt; Constructor&lt;T&gt; <strong class="jxr_keyword">inner</strong>() {
+<a class="jxr_linenumber" name="L161" href="#L161">161</a> 		<strong class="jxr_keyword">return</strong> (Constructor&lt;T&gt;)c;
+<a class="jxr_linenumber" name="L162" href="#L162">162</a> 	}
+<a class="jxr_linenumber" name="L163" href="#L163">163</a> 
+<a class="jxr_linenumber" name="L164" href="#L164">164</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L165" href="#L165">165</a> <em class="jxr_javadoccomment">	 * Shortcut for calling the new-instance method on the underlying constructor.</em>
+<a class="jxr_linenumber" name="L166" href="#L166">166</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L167" href="#L167">167</a> <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The constructor class type.</em>
+<a class="jxr_linenumber" name="L168" href="#L168">168</a> <em class="jxr_javadoccomment">	 * @param args the arguments used for the method call.</em>
+<a class="jxr_linenumber" name="L169" href="#L169">169</a> <em class="jxr_javadoccomment">	 * @return The object returned from the constructor.</em>
+<a class="jxr_linenumber" name="L170" href="#L170">170</a> <em class="jxr_javadoccomment">	 * @throws ExecutableException Exception occurred on invoked constructor/method/field.</em>
+<a class="jxr_linenumber" name="L171" href="#L171">171</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L172" href="#L172">172</a> 	@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L173" href="#L173">173</a> 	<strong class="jxr_keyword">public</strong> &lt;T&gt; T newInstance(Object...args) <strong class="jxr_keyword">throws</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> {
+<a class="jxr_linenumber" name="L174" href="#L174">174</a> 		<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L175" href="#L175">175</a> 			<strong class="jxr_keyword">return</strong> (T)c.newInstance(args);
+<a class="jxr_linenumber" name="L176" href="#L176">176</a> 		} <strong class="jxr_keyword">catch</strong> (InvocationTargetException e) {
+<a class="jxr_linenumber" name="L177" href="#L177">177</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a>(e.getTargetException());
+<a class="jxr_linenumber" name="L178" href="#L178">178</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="L179" href="#L179">179</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a>(e);
+<a class="jxr_linenumber" name="L180" href="#L180">180</a> 		}
+<a class="jxr_linenumber" name="L181" href="#L181">181</a> 	}
+<a class="jxr_linenumber" name="L182" href="#L182">182</a> 
+<a class="jxr_linenumber" name="L183" href="#L183">183</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L184" href="#L184">184</a> <em class="jxr_javadoccomment">	 * Shortcut for calling the new-instance method on the underlying constructor using lenient argument matching.</em>
+<a class="jxr_linenumber" name="L185" href="#L185">185</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L186" href="#L186">186</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L187" href="#L187">187</a> <em class="jxr_javadoccomment">	 * Lenient matching allows arguments to be matched to parameters based on parameter types.</em>
+<a class="jxr_linenumber" name="L188" href="#L188">188</a> <em class="jxr_javadoccomment">	 * &lt;br&gt;Arguments can be in any order.</em>
+<a class="jxr_linenumber" name="L189" href="#L189">189</a> <em class="jxr_javadoccomment">	 * &lt;br&gt;Extra arguments are ignored.</em>
+<a class="jxr_linenumber" name="L190" href="#L190">190</a> <em class="jxr_javadoccomment">	 * &lt;br&gt;Missing arguments are set to &lt;jk&gt;null&lt;/jk&gt;.</em>
+<a class="jxr_linenumber" name="L191" href="#L191">191</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L192" href="#L192">192</a> <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The constructor class type.</em>
+<a class="jxr_linenumber" name="L193" href="#L193">193</a> <em class="jxr_javadoccomment">	 * @param args The arguments used for the constructor call.</em>
+<a class="jxr_linenumber" name="L194" href="#L194">194</a> <em class="jxr_javadoccomment">	 * @return The object returned from the constructor.</em>
+<a class="jxr_linenumber" name="L195" href="#L195">195</a> <em class="jxr_javadoccomment">	 * @throws ExecutableException Exception occurred on invoked constructor/method/field.</em>
+<a class="jxr_linenumber" name="L196" href="#L196">196</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L197" href="#L197">197</a> 	<strong class="jxr_keyword">public</strong> &lt;T&gt; T newInstanceLenient(Object...args) <strong class="jxr_keyword">throws</strong> <a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> {
+<a class="jxr_linenumber" name="L198" href="#L198">198</a> 		<strong class="jxr_keyword">return</strong> newInstance(ClassUtils.getMatchingArgs(c.getParameterTypes(), args));
+<a class="jxr_linenumber" name="L199" href="#L199">199</a> 	}
+<a class="jxr_linenumber" name="L200" href="#L200">200</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L201" href="#L201">201</a> 	<em class="jxr_comment">// Annotatable interface methods</em>
+<a class="jxr_linenumber" name="L202" href="#L202">202</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L203" href="#L203">203</a> 
+<a class="jxr_linenumber" name="L204" href="#L204">204</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L205" href="#L205">205</a> 	<strong class="jxr_keyword">public</strong> <a name="AnnotatableType" href="../../../../../org/apache/juneau/common/reflect/AnnotatableType.html#AnnotatableType">AnnotatableType</a> getAnnotatableType() {
+<a class="jxr_linenumber" name="L206" href="#L206">206</a> 		<strong class="jxr_keyword">return</strong> AnnotatableType.CONSTRUCTOR_TYPE;
+<a class="jxr_linenumber" name="L207" href="#L207">207</a> 	}
+<a class="jxr_linenumber" name="L208" href="#L208">208</a> 
+<a class="jxr_linenumber" name="L209" href="#L209">209</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L210" href="#L210">210</a> 	<strong class="jxr_keyword">public</strong> ClassInfo getClassInfo() {
+<a class="jxr_linenumber" name="L211" href="#L211">211</a> 		<strong class="jxr_keyword">return</strong> getDeclaringClass();
+<a class="jxr_linenumber" name="L212" href="#L212">212</a> 	}
+<a class="jxr_linenumber" name="L213" href="#L213">213</a> 
+<a class="jxr_linenumber" name="L214" href="#L214">214</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L215" href="#L215">215</a> 	<strong class="jxr_keyword">public</strong> String getAnnotatableName() {
+<a class="jxr_linenumber" name="L216" href="#L216">216</a> 		<strong class="jxr_keyword">return</strong> getShortName();
+<a class="jxr_linenumber" name="L217" href="#L217">217</a> 	}
+<a class="jxr_linenumber" name="L218" href="#L218">218</a> }
 </pre>
 <hr/>
 <div id="footer">© 2016–2025 <a href="https://www.apache.org/">The Apache Software Foundation</a></div>
diff --git a/site/xref/org/apache/juneau/common/reflect/FieldInfo.html b/site/xref/org/apache/juneau/common/reflect/FieldInfo.html
index 240fd665bc..fc7d11c9be 100644
--- a/site/xref/org/apache/juneau/common/reflect/FieldInfo.html
+++ b/site/xref/org/apache/juneau/common/reflect/FieldInfo.html
@@ -230,260 +230,259 @@
 <a class="jxr_linenumber" name="L222" href="#L222">222</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
 <a class="jxr_linenumber" name="L223" href="#L223">223</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present.</em>
 <a class="jxr_linenumber" name="L224" href="#L224">224</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L225" href="#L225">225</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
-<a class="jxr_linenumber" name="L226" href="#L226">226</a> 		<em class="jxr_comment">// Inline Context.firstAnnotation() call</em>
-<a class="jxr_linenumber" name="L227" href="#L227">227</a> 		<strong class="jxr_keyword">return</strong> nn(annotationProvider.getAnnotationProvider().find(type, f).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="L228" href="#L228">228</a> 	}
-<a class="jxr_linenumber" name="L229" href="#L229">229</a> 
-<a class="jxr_linenumber" name="L230" href="#L230">230</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L231" href="#L231">231</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present.</em>
-<a class="jxr_linenumber" name="L232" href="#L232">232</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L233" href="#L233">233</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
-<a class="jxr_linenumber" name="L234" href="#L234">234</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
-<a class="jxr_linenumber" name="L235" href="#L235">235</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present.</em>
-<a class="jxr_linenumber" name="L236" href="#L236">236</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(Class&lt;A&gt; type) {
-<a class="jxr_linenumber" name="L238" href="#L238">238</a> 		<strong class="jxr_keyword">return</strong> f.isAnnotationPresent(type);
-<a class="jxr_linenumber" name="L239" href="#L239">239</a> 	}
-<a class="jxr_linenumber" name="L240" href="#L240">240</a> 
-<a class="jxr_linenumber" name="L241" href="#L241">241</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L242" href="#L242">242</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the field has the specified name.</em>
-<a class="jxr_linenumber" name="L243" href="#L243">243</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">	 * @param name The name to compare against.</em>
-<a class="jxr_linenumber" name="L245" href="#L245">245</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the field has the specified name.</em>
-<a class="jxr_linenumber" name="L246" href="#L246">246</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L247" href="#L247">247</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasName(String name) {
-<a class="jxr_linenumber" name="L248" href="#L248">248</a> 		<strong class="jxr_keyword">return</strong> f.getName().equals(name);
-<a class="jxr_linenumber" name="L249" href="#L249">249</a> 	}
-<a class="jxr_linenumber" name="L250" href="#L250">250</a> 
-<a class="jxr_linenumber" name="L251" href="#L251">251</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L252" href="#L252">252</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present.</em>
-<a class="jxr_linenumber" name="L253" href="#L253">253</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L254" href="#L254">254</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
-<a class="jxr_linenumber" name="L255" href="#L255">255</a> <em class="jxr_javadoccomment">	 * @param annotationProvider The annotation provider.</em>
-<a class="jxr_linenumber" name="L256" href="#L256">256</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
-<a class="jxr_linenumber" name="L257" href="#L257">257</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present.</em>
-<a class="jxr_linenumber" name="L258" href="#L258">258</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L259" href="#L259">259</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
-<a class="jxr_linenumber" name="L260" href="#L260">260</a> 		<strong class="jxr_keyword">return</strong> ! hasAnnotation(annotationProvider, type);
-<a class="jxr_linenumber" name="L261" href="#L261">261</a> 	}
-<a class="jxr_linenumber" name="L262" href="#L262">262</a> 
-<a class="jxr_linenumber" name="L263" href="#L263">263</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L264" href="#L264">264</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this field.</em>
-<a class="jxr_linenumber" name="L265" href="#L265">265</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L266" href="#L266">266</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
-<a class="jxr_linenumber" name="L267" href="#L267">267</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
-<a class="jxr_linenumber" name="L268" href="#L268">268</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this field.</em>
-<a class="jxr_linenumber" name="L269" href="#L269">269</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L270" href="#L270">270</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(Class&lt;A&gt; type) {
-<a class="jxr_linenumber" name="L271" href="#L271">271</a> 		<strong class="jxr_keyword">return</strong> ! hasAnnotation(type);
-<a class="jxr_linenumber" name="L272" href="#L272">272</a> 	}
-<a class="jxr_linenumber" name="L273" href="#L273">273</a> 
-<a class="jxr_linenumber" name="L274" href="#L274">274</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L275" href="#L275">275</a> <em class="jxr_javadoccomment">	 * Returns the wrapped field.</em>
-<a class="jxr_linenumber" name="L276" href="#L276">276</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L277" href="#L277">277</a> <em class="jxr_javadoccomment">	 * @return The wrapped field.</em>
-<a class="jxr_linenumber" name="L278" href="#L278">278</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L279" href="#L279">279</a> 	<strong class="jxr_keyword">public</strong> Field <strong class="jxr_keyword">inner</strong>() {
-<a class="jxr_linenumber" name="L280" href="#L280">280</a> 		<strong class="jxr_keyword">return</strong> f;
-<a class="jxr_linenumber" name="L281" href="#L281">281</a> 	}
-<a class="jxr_linenumber" name="L282" href="#L282">282</a> 
-<a class="jxr_linenumber" name="L283" href="#L283">283</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L284" href="#L284">284</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if all specified flags are applicable to this field.</em>
-<a class="jxr_linenumber" name="L285" href="#L285">285</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L286" href="#L286">286</a> <em class="jxr_javadoccomment">	 * @param flags The flags to test for.</em>
-<a class="jxr_linenumber" name="L287" href="#L287">287</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if all specified flags are applicable to this field.</em>
-<a class="jxr_linenumber" name="L288" href="#L288">288</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L289" href="#L289">289</a> 	@Override
-<a class="jxr_linenumber" name="L290" href="#L290">290</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> is(<a name="ElementFlag" href="../../../../../org/apache/juneau/common/reflect/ElementFlag.html#ElementFlag">ElementFlag</a> flag) {
-<a class="jxr_linenumber" name="L291" href="#L291">291</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">switch</strong> (flag) {
-<a class="jxr_linenumber" name="L292" href="#L292">292</a> 			<strong class="jxr_keyword">case</strong> DEPRECATED -&gt; isDeprecated();
-<a class="jxr_linenumber" name="L293" href="#L293">293</a> 			<strong class="jxr_keyword">case</strong> NOT_DEPRECATED -&gt; isNotDeprecated();
-<a class="jxr_linenumber" name="L294" href="#L294">294</a> 			<strong class="jxr_keyword">case</strong> ENUM_CONSTANT -&gt; isEnumConstant();
-<a class="jxr_linenumber" name="L295" href="#L295">295</a> 			<strong class="jxr_keyword">case</strong> NOT_ENUM_CONSTANT -&gt; !isEnumConstant();
-<a class="jxr_linenumber" name="L296" href="#L296">296</a> 			<strong class="jxr_keyword">case</strong> SYNTHETIC -&gt; isSynthetic();
-<a class="jxr_linenumber" name="L297" href="#L297">297</a> 			<strong class="jxr_keyword">case</strong> NOT_SYNTHETIC -&gt; !isSynthetic();
-<a class="jxr_linenumber" name="L298" href="#L298">298</a> 			<strong class="jxr_keyword">default</strong> -&gt; <strong class="jxr_keyword">super</strong>.is(flag);
-<a class="jxr_linenumber" name="L299" href="#L299">299</a> 		};
-<a class="jxr_linenumber" name="L300" href="#L300">300</a> 	}
-<a class="jxr_linenumber" name="L301" href="#L301">301</a> 
-<a class="jxr_linenumber" name="L302" href="#L302">302</a> 	@Override
-<a class="jxr_linenumber" name="L303" href="#L303">303</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isAll(ElementFlag...flags) {
-<a class="jxr_linenumber" name="L304" href="#L304">304</a> 		<strong class="jxr_keyword">return</strong> stream(flags).allMatch(<strong class="jxr_keyword">this</strong>::is);
-<a class="jxr_linenumber" name="L305" href="#L305">305</a> 	}
-<a class="jxr_linenumber" name="L306" href="#L306">306</a> 
-<a class="jxr_linenumber" name="L307" href="#L307">307</a> 	@Override
-<a class="jxr_linenumber" name="L308" href="#L308">308</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isAny(ElementFlag...flags) {
-<a class="jxr_linenumber" name="L309" href="#L309">309</a> 		<strong class="jxr_keyword">return</strong> stream(flags).anyMatch(<strong class="jxr_keyword">this</strong>::is);
-<a class="jxr_linenumber" name="L310" href="#L310">310</a> 	}
-<a class="jxr_linenumber" name="L311" href="#L311">311</a> 
-<a class="jxr_linenumber" name="L312" href="#L312">312</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L313" href="#L313">313</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field has the {@link Deprecated @Deprecated} annotation on it.</em>
-<a class="jxr_linenumber" name="L314" href="#L314">314</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L315" href="#L315">315</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field has the {@link Deprecated @Deprecated} annotation on it.</em>
-<a class="jxr_linenumber" name="L316" href="#L316">316</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L317" href="#L317">317</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isDeprecated() { <strong class="jxr_keyword">return</strong> f.isAnnotationPresent(Deprecated.<strong class="jxr_keyword">class</strong>); }
-<a class="jxr_linenumber" name="L318" href="#L318">318</a> 
-<a class="jxr_linenumber" name="L319" href="#L319">319</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L320" href="#L320">320</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field doesn't have the {@link Deprecated @Deprecated} annotation on it.</em>
-<a class="jxr_linenumber" name="L321" href="#L321">321</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L322" href="#L322">322</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field doesn't have the {@link Deprecated @Deprecated} annotation on it.</em>
-<a class="jxr_linenumber" name="L323" href="#L323">323</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L324" href="#L324">324</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isNotDeprecated() { <strong class="jxr_keyword">return</strong> ! f.isAnnotationPresent(Deprecated.<strong class="jxr_keyword">class</strong>); }
-<a class="jxr_linenumber" name="L325" href="#L325">325</a> 
-<a class="jxr_linenumber" name="L326" href="#L326">326</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L327" href="#L327">327</a> <em class="jxr_javadoccomment">	 * Identifies if the specified visibility matches this field.</em>
-<a class="jxr_linenumber" name="L328" href="#L328">328</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L329" href="#L329">329</a> <em class="jxr_javadoccomment">	 * @param v The visibility to validate against.</em>
-<a class="jxr_linenumber" name="L330" href="#L330">330</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this visibility matches the modifier attribute of this field.</em>
-<a class="jxr_linenumber" name="L331" href="#L331">331</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L332" href="#L332">332</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isVisible(<a name="Visibility" href="../../../../../org/apache/juneau/common/reflect/Visibility.html#Visibility">Visibility</a> v) {
-<a class="jxr_linenumber" name="L333" href="#L333">333</a> 		<strong class="jxr_keyword">return</strong> v.isVisible(f);
-<a class="jxr_linenumber" name="L334" href="#L334">334</a> 	}
-<a class="jxr_linenumber" name="L335" href="#L335">335</a> 
-<a class="jxr_linenumber" name="L336" href="#L336">336</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L337" href="#L337">337</a> <em class="jxr_javadoccomment">	 * Sets the field value on the specified object.</em>
-<a class="jxr_linenumber" name="L338" href="#L338">338</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L339" href="#L339">339</a> <em class="jxr_javadoccomment">	 * @param o The object containing the field.</em>
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> <em class="jxr_javadoccomment">	 * @param value The new field value.</em>
-<a class="jxr_linenumber" name="L341" href="#L341">341</a> <em class="jxr_javadoccomment">	 * @throws BeanRuntimeException Field was not accessible or field does not belong to object.</em>
-<a class="jxr_linenumber" name="L342" href="#L342">342</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> set(Object o, Object value) <strong class="jxr_keyword">throws</strong> <a name="BeanRuntimeException" href="../../../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a> {
-<a class="jxr_linenumber" name="L344" href="#L344">344</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L345" href="#L345">345</a> 			f.setAccessible(<strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L346" href="#L346">346</a> 			f.set(o, value);
-<a class="jxr_linenumber" name="L347" href="#L347">347</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="L348" href="#L348">348</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(e);
-<a class="jxr_linenumber" name="L349" href="#L349">349</a> 		}
-<a class="jxr_linenumber" name="L350" href="#L350">350</a> 	}
-<a class="jxr_linenumber" name="L351" href="#L351">351</a> 
-<a class="jxr_linenumber" name="L352" href="#L352">352</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L353" href="#L353">353</a> <em class="jxr_javadoccomment">	 * Sets the field value on the specified object if the value is &lt;jk&gt;null&lt;/jk&gt;.</em>
-<a class="jxr_linenumber" name="L354" href="#L354">354</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L355" href="#L355">355</a> <em class="jxr_javadoccomment">	 * @param o The object containing the field.</em>
-<a class="jxr_linenumber" name="L356" href="#L356">356</a> <em class="jxr_javadoccomment">	 * @param value The new field value.</em>
-<a class="jxr_linenumber" name="L357" href="#L357">357</a> <em class="jxr_javadoccomment">	 * @throws BeanRuntimeException Field was not accessible or field does not belong to object.</em>
-<a class="jxr_linenumber" name="L358" href="#L358">358</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L359" href="#L359">359</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setIfNull(Object o, Object value) {
-<a class="jxr_linenumber" name="L360" href="#L360">360</a> 		Object v = get(o);
-<a class="jxr_linenumber" name="L361" href="#L361">361</a> 		<strong class="jxr_keyword">if</strong> (v == <strong class="jxr_keyword">null</strong>)
-<a class="jxr_linenumber" name="L362" href="#L362">362</a> 			set(o, value);
-<a class="jxr_linenumber" name="L363" href="#L363">363</a> 	}
-<a class="jxr_linenumber" name="L364" href="#L364">364</a> 
-<a class="jxr_linenumber" name="L365" href="#L365">365</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L366" href="#L366">366</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field is a synthetic field as defined by the Java Language Specification.</em>
-<a class="jxr_linenumber" name="L367" href="#L367">367</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L368" href="#L368">368</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L369" href="#L369">369</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#isSynthetic()}.</em>
-<a class="jxr_linenumber" name="L370" href="#L370">370</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L371" href="#L371">371</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L372" href="#L372">372</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
-<a class="jxr_linenumber" name="L373" href="#L373">373</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Filter out compiler-generated fields&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L374" href="#L374">374</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ...;</em>
-<a class="jxr_linenumber" name="L375" href="#L375">375</a> <em class="jxr_javadoccomment">	 * 	&lt;jk&gt;if&lt;/jk&gt; (! &lt;jv&gt;fi&lt;/jv&gt;.isSynthetic()) {</em>
-<a class="jxr_linenumber" name="L376" href="#L376">376</a> <em class="jxr_javadoccomment">	 * 		&lt;jc&gt;// Process real field&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L377" href="#L377">377</a> <em class="jxr_javadoccomment">	 * 	}</em>
-<a class="jxr_linenumber" name="L378" href="#L378">378</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L379" href="#L379">379</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L380" href="#L380">380</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field is a synthetic field.</em>
-<a class="jxr_linenumber" name="L381" href="#L381">381</a> <em class="jxr_javadoccomment">	 * @see Field#isSynthetic()</em>
-<a class="jxr_linenumber" name="L382" href="#L382">382</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L383" href="#L383">383</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isSynthetic() {
-<a class="jxr_linenumber" name="L384" href="#L384">384</a> 		<strong class="jxr_keyword">return</strong> f.isSynthetic();
-<a class="jxr_linenumber" name="L385" href="#L385">385</a> 	}
-<a class="jxr_linenumber" name="L386" href="#L386">386</a> 
-<a class="jxr_linenumber" name="L387" href="#L387">387</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L388" href="#L388">388</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field represents an element of an enumerated type.</em>
-<a class="jxr_linenumber" name="L389" href="#L389">389</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L390" href="#L390">390</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L391" href="#L391">391</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#isEnumConstant()}.</em>
-<a class="jxr_linenumber" name="L392" href="#L392">392</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L393" href="#L393">393</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L394" href="#L394">394</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
-<a class="jxr_linenumber" name="L395" href="#L395">395</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Check if field is an enum constant&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L396" href="#L396">396</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ClassInfo.&lt;jsm&gt;of&lt;/jsm&gt;(MyEnum.&lt;jk&gt;class&lt;/jk&gt;).getField(&lt;js&gt;"VALUE1"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L397" href="#L397">397</a> <em class="jxr_javadoccomment">	 * 	&lt;jk&gt;if&lt;/jk&gt; (&lt;jv&gt;fi&lt;/jv&gt;.isEnumConstant()) {</em>
-<a class="jxr_linenumber" name="L398" href="#L398">398</a> <em class="jxr_javadoccomment">	 * 		&lt;jc&gt;// Handle enum constant&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L399" href="#L399">399</a> <em class="jxr_javadoccomment">	 * 	}</em>
-<a class="jxr_linenumber" name="L400" href="#L400">400</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L401" href="#L401">401</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L402" href="#L402">402</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field represents an enum constant.</em>
-<a class="jxr_linenumber" name="L403" href="#L403">403</a> <em class="jxr_javadoccomment">	 * @see Field#isEnumConstant()</em>
-<a class="jxr_linenumber" name="L404" href="#L404">404</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L405" href="#L405">405</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isEnumConstant() {
-<a class="jxr_linenumber" name="L406" href="#L406">406</a> 		<strong class="jxr_keyword">return</strong> f.isEnumConstant();
-<a class="jxr_linenumber" name="L407" href="#L407">407</a> 	}
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> 
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L410" href="#L410">410</a> <em class="jxr_javadoccomment">	 * Returns an {@link AnnotatedType} object that represents the use of a type to specify the declared type of the field.</em>
-<a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L412" href="#L412">412</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L413" href="#L413">413</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#getAnnotatedType()}.</em>
-<a class="jxr_linenumber" name="L414" href="#L414">414</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L415" href="#L415">415</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L416" href="#L416">416</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
-<a class="jxr_linenumber" name="L417" href="#L417">417</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Get annotated type: @NotNull String name&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L418" href="#L418">418</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ClassInfo.&lt;jsm&gt;of&lt;/jsm&gt;(MyClass.&lt;jk&gt;class&lt;/jk&gt;).getField(&lt;js&gt;"name"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L419" href="#L419">419</a> <em class="jxr_javadoccomment">	 * 	AnnotatedType &lt;jv&gt;aType&lt;/jv&gt; = &lt;jv&gt;fi&lt;/jv&gt;.getAnnotatedType();</em>
-<a class="jxr_linenumber" name="L420" href="#L420">420</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Check for @NotNull on the type&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L421" href="#L421">421</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L422" href="#L422">422</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L423" href="#L423">423</a> <em class="jxr_javadoccomment">	 * @return An {@link AnnotatedType} object representing the declared type.</em>
-<a class="jxr_linenumber" name="L424" href="#L424">424</a> <em class="jxr_javadoccomment">	 * @see Field#getAnnotatedType()</em>
-<a class="jxr_linenumber" name="L425" href="#L425">425</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L426" href="#L426">426</a> 	<strong class="jxr_keyword">public</strong> AnnotatedType getAnnotatedType() {
-<a class="jxr_linenumber" name="L427" href="#L427">427</a> 		<strong class="jxr_keyword">return</strong> f.getAnnotatedType();
-<a class="jxr_linenumber" name="L428" href="#L428">428</a> 	}
-<a class="jxr_linenumber" name="L429" href="#L429">429</a> 
-<a class="jxr_linenumber" name="L430" href="#L430">430</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L431" href="#L431">431</a> 	<em class="jxr_comment">// Field-Specific Methods</em>
-<a class="jxr_linenumber" name="L432" href="#L432">432</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L433" href="#L433">433</a> 
-<a class="jxr_linenumber" name="L434" href="#L434">434</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L435" href="#L435">435</a> <em class="jxr_javadoccomment">	 * Returns a string describing this field, including its generic type.</em>
-<a class="jxr_linenumber" name="L436" href="#L436">436</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L437" href="#L437">437</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L438" href="#L438">438</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#toGenericString()}.</em>
-<a class="jxr_linenumber" name="L439" href="#L439">439</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L440" href="#L440">440</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L441" href="#L441">441</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
-<a class="jxr_linenumber" name="L442" href="#L442">442</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Get generic string for: public static final List&amp;lt;String&amp;gt; VALUES&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L443" href="#L443">443</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ClassInfo.&lt;jsm&gt;of&lt;/jsm&gt;(MyClass.&lt;jk&gt;class&lt;/jk&gt;).getField(&lt;js&gt;"VALUES"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L444" href="#L444">444</a> <em class="jxr_javadoccomment">	 * 	String &lt;jv&gt;str&lt;/jv&gt; = &lt;jv&gt;fi&lt;/jv&gt;.toGenericString();</em>
-<a class="jxr_linenumber" name="L445" href="#L445">445</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Returns: "public static final java.util.List&amp;lt;java.lang.String&amp;gt; com.example.MyClass.VALUES"&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L446" href="#L446">446</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L447" href="#L447">447</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L448" href="#L448">448</a> <em class="jxr_javadoccomment">	 * @return A string describing this field.</em>
-<a class="jxr_linenumber" name="L449" href="#L449">449</a> <em class="jxr_javadoccomment">	 * @see Field#toGenericString()</em>
-<a class="jxr_linenumber" name="L450" href="#L450">450</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L451" href="#L451">451</a> 	<strong class="jxr_keyword">public</strong> String toGenericString() {
-<a class="jxr_linenumber" name="L452" href="#L452">452</a> 		<strong class="jxr_keyword">return</strong> f.toGenericString();
-<a class="jxr_linenumber" name="L453" href="#L453">453</a> 	}
-<a class="jxr_linenumber" name="L454" href="#L454">454</a> 
-<a class="jxr_linenumber" name="L455" href="#L455">455</a> 	@Override
-<a class="jxr_linenumber" name="L456" href="#L456">456</a> 	<strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="L457" href="#L457">457</a> 		<strong class="jxr_keyword">return</strong> cn(f.getDeclaringClass()) + <span class="jxr_string">"."</span> + f.getName();
-<a class="jxr_linenumber" name="L458" href="#L458">458</a> 	}
-<a class="jxr_linenumber" name="L459" href="#L459">459</a> 
-<a class="jxr_linenumber" name="L460" href="#L460">460</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L461" href="#L461">461</a> 	<em class="jxr_comment">// Annotatable interface methods</em>
-<a class="jxr_linenumber" name="L462" href="#L462">462</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L463" href="#L463">463</a> 
-<a class="jxr_linenumber" name="L464" href="#L464">464</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L465" href="#L465">465</a> 	<strong class="jxr_keyword">public</strong> <a name="AnnotatableType" href="../../../../../org/apache/juneau/common/reflect/AnnotatableType.html#AnnotatableType">AnnotatableType</a> getAnnotatableType() {
-<a class="jxr_linenumber" name="L466" href="#L466">466</a> 		<strong class="jxr_keyword">return</strong> AnnotatableType.FIELD_TYPE;
-<a class="jxr_linenumber" name="L467" href="#L467">467</a> 	}
-<a class="jxr_linenumber" name="L468" href="#L468">468</a> 
-<a class="jxr_linenumber" name="L469" href="#L469">469</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L470" href="#L470">470</a> 	<strong class="jxr_keyword">public</strong> ClassInfo getClassInfo() {
-<a class="jxr_linenumber" name="L471" href="#L471">471</a> 		<strong class="jxr_keyword">return</strong> getDeclaringClass();
-<a class="jxr_linenumber" name="L472" href="#L472">472</a> 	}
-<a class="jxr_linenumber" name="L473" href="#L473">473</a> 
-<a class="jxr_linenumber" name="L474" href="#L474">474</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
-<a class="jxr_linenumber" name="L475" href="#L475">475</a> 	<strong class="jxr_keyword">public</strong> String getAnnotatableName() {
-<a class="jxr_linenumber" name="L476" href="#L476">476</a> 		<strong class="jxr_keyword">return</strong> getName();
-<a class="jxr_linenumber" name="L477" href="#L477">477</a> 	}
-<a class="jxr_linenumber" name="L478" href="#L478">478</a> }
+<a class="jxr_linenumber" name="L225" href="#L225">225</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L226" href="#L226">226</a> 		<strong class="jxr_keyword">return</strong> nn(annotationProvider.find(type, f).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>));
+<a class="jxr_linenumber" name="L227" href="#L227">227</a> 	}
+<a class="jxr_linenumber" name="L228" href="#L228">228</a> 
+<a class="jxr_linenumber" name="L229" href="#L229">229</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L230" href="#L230">230</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present.</em>
+<a class="jxr_linenumber" name="L231" href="#L231">231</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L232" href="#L232">232</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
+<a class="jxr_linenumber" name="L233" href="#L233">233</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
+<a class="jxr_linenumber" name="L234" href="#L234">234</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present.</em>
+<a class="jxr_linenumber" name="L235" href="#L235">235</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L236" href="#L236">236</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L237" href="#L237">237</a> 		<strong class="jxr_keyword">return</strong> f.isAnnotationPresent(type);
+<a class="jxr_linenumber" name="L238" href="#L238">238</a> 	}
+<a class="jxr_linenumber" name="L239" href="#L239">239</a> 
+<a class="jxr_linenumber" name="L240" href="#L240">240</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L241" href="#L241">241</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the field has the specified name.</em>
+<a class="jxr_linenumber" name="L242" href="#L242">242</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L243" href="#L243">243</a> <em class="jxr_javadoccomment">	 * @param name The name to compare against.</em>
+<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the field has the specified name.</em>
+<a class="jxr_linenumber" name="L245" href="#L245">245</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L246" href="#L246">246</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> hasName(String name) {
+<a class="jxr_linenumber" name="L247" href="#L247">247</a> 		<strong class="jxr_keyword">return</strong> f.getName().equals(name);
+<a class="jxr_linenumber" name="L248" href="#L248">248</a> 	}
+<a class="jxr_linenumber" name="L249" href="#L249">249</a> 
+<a class="jxr_linenumber" name="L250" href="#L250">250</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L251" href="#L251">251</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present.</em>
+<a class="jxr_linenumber" name="L252" href="#L252">252</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L253" href="#L253">253</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
+<a class="jxr_linenumber" name="L254" href="#L254">254</a> <em class="jxr_javadoccomment">	 * @param annotationProvider The annotation provider.</em>
+<a class="jxr_linenumber" name="L255" href="#L255">255</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
+<a class="jxr_linenumber" name="L256" href="#L256">256</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present.</em>
+<a class="jxr_linenumber" name="L257" href="#L257">257</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L258" href="#L258">258</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L259" href="#L259">259</a> 		<strong class="jxr_keyword">return</strong> ! hasAnnotation(annotationProvider, type);
+<a class="jxr_linenumber" name="L260" href="#L260">260</a> 	}
+<a class="jxr_linenumber" name="L261" href="#L261">261</a> 
+<a class="jxr_linenumber" name="L262" href="#L262">262</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L263" href="#L263">263</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this field.</em>
+<a class="jxr_linenumber" name="L264" href="#L264">264</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L265" href="#L265">265</a> <em class="jxr_javadoccomment">	 * @param &lt;A&gt; The annotation type to look for.</em>
+<a class="jxr_linenumber" name="L266" href="#L266">266</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
+<a class="jxr_linenumber" name="L267" href="#L267">267</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this field.</em>
+<a class="jxr_linenumber" name="L268" href="#L268">268</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L269" href="#L269">269</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L270" href="#L270">270</a> 		<strong class="jxr_keyword">return</strong> ! hasAnnotation(type);
+<a class="jxr_linenumber" name="L271" href="#L271">271</a> 	}
+<a class="jxr_linenumber" name="L272" href="#L272">272</a> 
+<a class="jxr_linenumber" name="L273" href="#L273">273</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L274" href="#L274">274</a> <em class="jxr_javadoccomment">	 * Returns the wrapped field.</em>
+<a class="jxr_linenumber" name="L275" href="#L275">275</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L276" href="#L276">276</a> <em class="jxr_javadoccomment">	 * @return The wrapped field.</em>
+<a class="jxr_linenumber" name="L277" href="#L277">277</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L278" href="#L278">278</a> 	<strong class="jxr_keyword">public</strong> Field <strong class="jxr_keyword">inner</strong>() {
+<a class="jxr_linenumber" name="L279" href="#L279">279</a> 		<strong class="jxr_keyword">return</strong> f;
+<a class="jxr_linenumber" name="L280" href="#L280">280</a> 	}
+<a class="jxr_linenumber" name="L281" href="#L281">281</a> 
+<a class="jxr_linenumber" name="L282" href="#L282">282</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L283" href="#L283">283</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if all specified flags are applicable to this field.</em>
+<a class="jxr_linenumber" name="L284" href="#L284">284</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L285" href="#L285">285</a> <em class="jxr_javadoccomment">	 * @param flags The flags to test for.</em>
+<a class="jxr_linenumber" name="L286" href="#L286">286</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if all specified flags are applicable to this field.</em>
+<a class="jxr_linenumber" name="L287" href="#L287">287</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L288" href="#L288">288</a> 	@Override
+<a class="jxr_linenumber" name="L289" href="#L289">289</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> is(<a name="ElementFlag" href="../../../../../org/apache/juneau/common/reflect/ElementFlag.html#ElementFlag">ElementFlag</a> flag) {
+<a class="jxr_linenumber" name="L290" href="#L290">290</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">switch</strong> (flag) {
+<a class="jxr_linenumber" name="L291" href="#L291">291</a> 			<strong class="jxr_keyword">case</strong> DEPRECATED -&gt; isDeprecated();
+<a class="jxr_linenumber" name="L292" href="#L292">292</a> 			<strong class="jxr_keyword">case</strong> NOT_DEPRECATED -&gt; isNotDeprecated();
+<a class="jxr_linenumber" name="L293" href="#L293">293</a> 			<strong class="jxr_keyword">case</strong> ENUM_CONSTANT -&gt; isEnumConstant();
+<a class="jxr_linenumber" name="L294" href="#L294">294</a> 			<strong class="jxr_keyword">case</strong> NOT_ENUM_CONSTANT -&gt; !isEnumConstant();
+<a class="jxr_linenumber" name="L295" href="#L295">295</a> 			<strong class="jxr_keyword">case</strong> SYNTHETIC -&gt; isSynthetic();
+<a class="jxr_linenumber" name="L296" href="#L296">296</a> 			<strong class="jxr_keyword">case</strong> NOT_SYNTHETIC -&gt; !isSynthetic();
+<a class="jxr_linenumber" name="L297" href="#L297">297</a> 			<strong class="jxr_keyword">default</strong> -&gt; <strong class="jxr_keyword">super</strong>.is(flag);
+<a class="jxr_linenumber" name="L298" href="#L298">298</a> 		};
+<a class="jxr_linenumber" name="L299" href="#L299">299</a> 	}
+<a class="jxr_linenumber" name="L300" href="#L300">300</a> 
+<a class="jxr_linenumber" name="L301" href="#L301">301</a> 	@Override
+<a class="jxr_linenumber" name="L302" href="#L302">302</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isAll(ElementFlag...flags) {
+<a class="jxr_linenumber" name="L303" href="#L303">303</a> 		<strong class="jxr_keyword">return</strong> stream(flags).allMatch(<strong class="jxr_keyword">this</strong>::is);
+<a class="jxr_linenumber" name="L304" href="#L304">304</a> 	}
+<a class="jxr_linenumber" name="L305" href="#L305">305</a> 
+<a class="jxr_linenumber" name="L306" href="#L306">306</a> 	@Override
+<a class="jxr_linenumber" name="L307" href="#L307">307</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isAny(ElementFlag...flags) {
+<a class="jxr_linenumber" name="L308" href="#L308">308</a> 		<strong class="jxr_keyword">return</strong> stream(flags).anyMatch(<strong class="jxr_keyword">this</strong>::is);
+<a class="jxr_linenumber" name="L309" href="#L309">309</a> 	}
+<a class="jxr_linenumber" name="L310" href="#L310">310</a> 
+<a class="jxr_linenumber" name="L311" href="#L311">311</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L312" href="#L312">312</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field has the {@link Deprecated @Deprecated} annotation on it.</em>
+<a class="jxr_linenumber" name="L313" href="#L313">313</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L314" href="#L314">314</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field has the {@link Deprecated @Deprecated} annotation on it.</em>
+<a class="jxr_linenumber" name="L315" href="#L315">315</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L316" href="#L316">316</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isDeprecated() { <strong class="jxr_keyword">return</strong> f.isAnnotationPresent(Deprecated.<strong class="jxr_keyword">class</strong>); }
+<a class="jxr_linenumber" name="L317" href="#L317">317</a> 
+<a class="jxr_linenumber" name="L318" href="#L318">318</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L319" href="#L319">319</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field doesn't have the {@link Deprecated @Deprecated} annotation on it.</em>
+<a class="jxr_linenumber" name="L320" href="#L320">320</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L321" href="#L321">321</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field doesn't have the {@link Deprecated @Deprecated} annotation on it.</em>
+<a class="jxr_linenumber" name="L322" href="#L322">322</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L323" href="#L323">323</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isNotDeprecated() { <strong class="jxr_keyword">return</strong> ! f.isAnnotationPresent(Deprecated.<strong class="jxr_keyword">class</strong>); }
+<a class="jxr_linenumber" name="L324" href="#L324">324</a> 
+<a class="jxr_linenumber" name="L325" href="#L325">325</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L326" href="#L326">326</a> <em class="jxr_javadoccomment">	 * Identifies if the specified visibility matches this field.</em>
+<a class="jxr_linenumber" name="L327" href="#L327">327</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L328" href="#L328">328</a> <em class="jxr_javadoccomment">	 * @param v The visibility to validate against.</em>
+<a class="jxr_linenumber" name="L329" href="#L329">329</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this visibility matches the modifier attribute of this field.</em>
+<a class="jxr_linenumber" name="L330" href="#L330">330</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L331" href="#L331">331</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isVisible(<a name="Visibility" href="../../../../../org/apache/juneau/common/reflect/Visibility.html#Visibility">Visibility</a> v) {
+<a class="jxr_linenumber" name="L332" href="#L332">332</a> 		<strong class="jxr_keyword">return</strong> v.isVisible(f);
+<a class="jxr_linenumber" name="L333" href="#L333">333</a> 	}
+<a class="jxr_linenumber" name="L334" href="#L334">334</a> 
+<a class="jxr_linenumber" name="L335" href="#L335">335</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L336" href="#L336">336</a> <em class="jxr_javadoccomment">	 * Sets the field value on the specified object.</em>
+<a class="jxr_linenumber" name="L337" href="#L337">337</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L338" href="#L338">338</a> <em class="jxr_javadoccomment">	 * @param o The object containing the field.</em>
+<a class="jxr_linenumber" name="L339" href="#L339">339</a> <em class="jxr_javadoccomment">	 * @param value The new field value.</em>
+<a class="jxr_linenumber" name="L340" href="#L340">340</a> <em class="jxr_javadoccomment">	 * @throws BeanRuntimeException Field was not accessible or field does not belong to object.</em>
+<a class="jxr_linenumber" name="L341" href="#L341">341</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L342" href="#L342">342</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> set(Object o, Object value) <strong class="jxr_keyword">throws</strong> <a name="BeanRuntimeException" href="../../../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a> {
+<a class="jxr_linenumber" name="L343" href="#L343">343</a> 		<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L344" href="#L344">344</a> 			f.setAccessible(<strong class="jxr_keyword">true</strong>);
+<a class="jxr_linenumber" name="L345" href="#L345">345</a> 			f.set(o, value);
+<a class="jxr_linenumber" name="L346" href="#L346">346</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="L347" href="#L347">347</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(e);
+<a class="jxr_linenumber" name="L348" href="#L348">348</a> 		}
+<a class="jxr_linenumber" name="L349" href="#L349">349</a> 	}
+<a class="jxr_linenumber" name="L350" href="#L350">350</a> 
+<a class="jxr_linenumber" name="L351" href="#L351">351</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L352" href="#L352">352</a> <em class="jxr_javadoccomment">	 * Sets the field value on the specified object if the value is &lt;jk&gt;null&lt;/jk&gt;.</em>
+<a class="jxr_linenumber" name="L353" href="#L353">353</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L354" href="#L354">354</a> <em class="jxr_javadoccomment">	 * @param o The object containing the field.</em>
+<a class="jxr_linenumber" name="L355" href="#L355">355</a> <em class="jxr_javadoccomment">	 * @param value The new field value.</em>
+<a class="jxr_linenumber" name="L356" href="#L356">356</a> <em class="jxr_javadoccomment">	 * @throws BeanRuntimeException Field was not accessible or field does not belong to object.</em>
+<a class="jxr_linenumber" name="L357" href="#L357">357</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L358" href="#L358">358</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setIfNull(Object o, Object value) {
+<a class="jxr_linenumber" name="L359" href="#L359">359</a> 		Object v = get(o);
+<a class="jxr_linenumber" name="L360" href="#L360">360</a> 		<strong class="jxr_keyword">if</strong> (v == <strong class="jxr_keyword">null</strong>)
+<a class="jxr_linenumber" name="L361" href="#L361">361</a> 			set(o, value);
+<a class="jxr_linenumber" name="L362" href="#L362">362</a> 	}
+<a class="jxr_linenumber" name="L363" href="#L363">363</a> 
+<a class="jxr_linenumber" name="L364" href="#L364">364</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L365" href="#L365">365</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field is a synthetic field as defined by the Java Language Specification.</em>
+<a class="jxr_linenumber" name="L366" href="#L366">366</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L367" href="#L367">367</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L368" href="#L368">368</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#isSynthetic()}.</em>
+<a class="jxr_linenumber" name="L369" href="#L369">369</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L370" href="#L370">370</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
+<a class="jxr_linenumber" name="L371" href="#L371">371</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
+<a class="jxr_linenumber" name="L372" href="#L372">372</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Filter out compiler-generated fields&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L373" href="#L373">373</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ...;</em>
+<a class="jxr_linenumber" name="L374" href="#L374">374</a> <em class="jxr_javadoccomment">	 * 	&lt;jk&gt;if&lt;/jk&gt; (! &lt;jv&gt;fi&lt;/jv&gt;.isSynthetic()) {</em>
+<a class="jxr_linenumber" name="L375" href="#L375">375</a> <em class="jxr_javadoccomment">	 * 		&lt;jc&gt;// Process real field&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L376" href="#L376">376</a> <em class="jxr_javadoccomment">	 * 	}</em>
+<a class="jxr_linenumber" name="L377" href="#L377">377</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
+<a class="jxr_linenumber" name="L378" href="#L378">378</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L379" href="#L379">379</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field is a synthetic field.</em>
+<a class="jxr_linenumber" name="L380" href="#L380">380</a> <em class="jxr_javadoccomment">	 * @see Field#isSynthetic()</em>
+<a class="jxr_linenumber" name="L381" href="#L381">381</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L382" href="#L382">382</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isSynthetic() {
+<a class="jxr_linenumber" name="L383" href="#L383">383</a> 		<strong class="jxr_keyword">return</strong> f.isSynthetic();
+<a class="jxr_linenumber" name="L384" href="#L384">384</a> 	}
+<a class="jxr_linenumber" name="L385" href="#L385">385</a> 
+<a class="jxr_linenumber" name="L386" href="#L386">386</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L387" href="#L387">387</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this field represents an element of an enumerated type.</em>
+<a class="jxr_linenumber" name="L388" href="#L388">388</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L389" href="#L389">389</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L390" href="#L390">390</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#isEnumConstant()}.</em>
+<a class="jxr_linenumber" name="L391" href="#L391">391</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L392" href="#L392">392</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
+<a class="jxr_linenumber" name="L393" href="#L393">393</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
+<a class="jxr_linenumber" name="L394" href="#L394">394</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Check if field is an enum constant&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L395" href="#L395">395</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ClassInfo.&lt;jsm&gt;of&lt;/jsm&gt;(MyEnum.&lt;jk&gt;class&lt;/jk&gt;).getField(&lt;js&gt;"VALUE1"&lt;/js&gt;);</em>
+<a class="jxr_linenumber" name="L396" href="#L396">396</a> <em class="jxr_javadoccomment">	 * 	&lt;jk&gt;if&lt;/jk&gt; (&lt;jv&gt;fi&lt;/jv&gt;.isEnumConstant()) {</em>
+<a class="jxr_linenumber" name="L397" href="#L397">397</a> <em class="jxr_javadoccomment">	 * 		&lt;jc&gt;// Handle enum constant&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L398" href="#L398">398</a> <em class="jxr_javadoccomment">	 * 	}</em>
+<a class="jxr_linenumber" name="L399" href="#L399">399</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
+<a class="jxr_linenumber" name="L400" href="#L400">400</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L401" href="#L401">401</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this field represents an enum constant.</em>
+<a class="jxr_linenumber" name="L402" href="#L402">402</a> <em class="jxr_javadoccomment">	 * @see Field#isEnumConstant()</em>
+<a class="jxr_linenumber" name="L403" href="#L403">403</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L404" href="#L404">404</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isEnumConstant() {
+<a class="jxr_linenumber" name="L405" href="#L405">405</a> 		<strong class="jxr_keyword">return</strong> f.isEnumConstant();
+<a class="jxr_linenumber" name="L406" href="#L406">406</a> 	}
+<a class="jxr_linenumber" name="L407" href="#L407">407</a> 
+<a class="jxr_linenumber" name="L408" href="#L408">408</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L409" href="#L409">409</a> <em class="jxr_javadoccomment">	 * Returns an {@link AnnotatedType} object that represents the use of a type to specify the declared type of the field.</em>
+<a class="jxr_linenumber" name="L410" href="#L410">410</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L411" href="#L411">411</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L412" href="#L412">412</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#getAnnotatedType()}.</em>
+<a class="jxr_linenumber" name="L413" href="#L413">413</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L414" href="#L414">414</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
+<a class="jxr_linenumber" name="L415" href="#L415">415</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
+<a class="jxr_linenumber" name="L416" href="#L416">416</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Get annotated type: @NotNull String name&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L417" href="#L417">417</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ClassInfo.&lt;jsm&gt;of&lt;/jsm&gt;(MyClass.&lt;jk&gt;class&lt;/jk&gt;).getField(&lt;js&gt;"name"&lt;/js&gt;);</em>
+<a class="jxr_linenumber" name="L418" href="#L418">418</a> <em class="jxr_javadoccomment">	 * 	AnnotatedType &lt;jv&gt;aType&lt;/jv&gt; = &lt;jv&gt;fi&lt;/jv&gt;.getAnnotatedType();</em>
+<a class="jxr_linenumber" name="L419" href="#L419">419</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Check for @NotNull on the type&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L420" href="#L420">420</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
+<a class="jxr_linenumber" name="L421" href="#L421">421</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L422" href="#L422">422</a> <em class="jxr_javadoccomment">	 * @return An {@link AnnotatedType} object representing the declared type.</em>
+<a class="jxr_linenumber" name="L423" href="#L423">423</a> <em class="jxr_javadoccomment">	 * @see Field#getAnnotatedType()</em>
+<a class="jxr_linenumber" name="L424" href="#L424">424</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L425" href="#L425">425</a> 	<strong class="jxr_keyword">public</strong> AnnotatedType getAnnotatedType() {
+<a class="jxr_linenumber" name="L426" href="#L426">426</a> 		<strong class="jxr_keyword">return</strong> f.getAnnotatedType();
+<a class="jxr_linenumber" name="L427" href="#L427">427</a> 	}
+<a class="jxr_linenumber" name="L428" href="#L428">428</a> 
+<a class="jxr_linenumber" name="L429" href="#L429">429</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L430" href="#L430">430</a> 	<em class="jxr_comment">// Field-Specific Methods</em>
+<a class="jxr_linenumber" name="L431" href="#L431">431</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L432" href="#L432">432</a> 
+<a class="jxr_linenumber" name="L433" href="#L433">433</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L434" href="#L434">434</a> <em class="jxr_javadoccomment">	 * Returns a string describing this field, including its generic type.</em>
+<a class="jxr_linenumber" name="L435" href="#L435">435</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L436" href="#L436">436</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L437" href="#L437">437</a> <em class="jxr_javadoccomment">	 * Same as calling {@link Field#toGenericString()}.</em>
+<a class="jxr_linenumber" name="L438" href="#L438">438</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L439" href="#L439">439</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Example:&lt;/h5&gt;</em>
+<a class="jxr_linenumber" name="L440" href="#L440">440</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
+<a class="jxr_linenumber" name="L441" href="#L441">441</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Get generic string for: public static final List&amp;lt;String&amp;gt; VALUES&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L442" href="#L442">442</a> <em class="jxr_javadoccomment">	 * 	FieldInfo &lt;jv&gt;fi&lt;/jv&gt; = ClassInfo.&lt;jsm&gt;of&lt;/jsm&gt;(MyClass.&lt;jk&gt;class&lt;/jk&gt;).getField(&lt;js&gt;"VALUES"&lt;/js&gt;);</em>
+<a class="jxr_linenumber" name="L443" href="#L443">443</a> <em class="jxr_javadoccomment">	 * 	String &lt;jv&gt;str&lt;/jv&gt; = &lt;jv&gt;fi&lt;/jv&gt;.toGenericString();</em>
+<a class="jxr_linenumber" name="L444" href="#L444">444</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Returns: "public static final java.util.List&amp;lt;java.lang.String&amp;gt; com.example.MyClass.VALUES"&lt;/jc&gt;</em>
+<a class="jxr_linenumber" name="L445" href="#L445">445</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
+<a class="jxr_linenumber" name="L446" href="#L446">446</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L447" href="#L447">447</a> <em class="jxr_javadoccomment">	 * @return A string describing this field.</em>
+<a class="jxr_linenumber" name="L448" href="#L448">448</a> <em class="jxr_javadoccomment">	 * @see Field#toGenericString()</em>
+<a class="jxr_linenumber" name="L449" href="#L449">449</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L450" href="#L450">450</a> 	<strong class="jxr_keyword">public</strong> String toGenericString() {
+<a class="jxr_linenumber" name="L451" href="#L451">451</a> 		<strong class="jxr_keyword">return</strong> f.toGenericString();
+<a class="jxr_linenumber" name="L452" href="#L452">452</a> 	}
+<a class="jxr_linenumber" name="L453" href="#L453">453</a> 
+<a class="jxr_linenumber" name="L454" href="#L454">454</a> 	@Override
+<a class="jxr_linenumber" name="L455" href="#L455">455</a> 	<strong class="jxr_keyword">public</strong> String toString() {
+<a class="jxr_linenumber" name="L456" href="#L456">456</a> 		<strong class="jxr_keyword">return</strong> cn(f.getDeclaringClass()) + <span class="jxr_string">"."</span> + f.getName();
+<a class="jxr_linenumber" name="L457" href="#L457">457</a> 	}
+<a class="jxr_linenumber" name="L458" href="#L458">458</a> 
+<a class="jxr_linenumber" name="L459" href="#L459">459</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L460" href="#L460">460</a> 	<em class="jxr_comment">// Annotatable interface methods</em>
+<a class="jxr_linenumber" name="L461" href="#L461">461</a> 	<em class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L462" href="#L462">462</a> 
+<a class="jxr_linenumber" name="L463" href="#L463">463</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L464" href="#L464">464</a> 	<strong class="jxr_keyword">public</strong> <a name="AnnotatableType" href="../../../../../org/apache/juneau/common/reflect/AnnotatableType.html#AnnotatableType">AnnotatableType</a> getAnnotatableType() {
+<a class="jxr_linenumber" name="L465" href="#L465">465</a> 		<strong class="jxr_keyword">return</strong> AnnotatableType.FIELD_TYPE;
+<a class="jxr_linenumber" name="L466" href="#L466">466</a> 	}
+<a class="jxr_linenumber" name="L467" href="#L467">467</a> 
+<a class="jxr_linenumber" name="L468" href="#L468">468</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L469" href="#L469">469</a> 	<strong class="jxr_keyword">public</strong> ClassInfo getClassInfo() {
+<a class="jxr_linenumber" name="L470" href="#L470">470</a> 		<strong class="jxr_keyword">return</strong> getDeclaringClass();
+<a class="jxr_linenumber" name="L471" href="#L471">471</a> 	}
+<a class="jxr_linenumber" name="L472" href="#L472">472</a> 
+<a class="jxr_linenumber" name="L473" href="#L473">473</a> 	@Override <em class="jxr_comment">/* Annotatable */</em>
+<a class="jxr_linenumber" name="L474" href="#L474">474</a> 	<strong class="jxr_keyword">public</strong> String getAnnotatableName() {
+<a class="jxr_linenumber" name="L475" href="#L475">475</a> 		<strong class="jxr_keyword">return</strong> getName();
+<a class="jxr_linenumber" name="L476" href="#L476">476</a> 	}
+<a class="jxr_linenumber" name="L477" href="#L477">477</a> }
 </pre>
 <hr/>
 <div id="footer">© 2016–2025 <a href="https://www.apache.org/">The Apache Software Foundation</a></div>
diff --git a/site/xref/org/apache/juneau/common/reflect/MethodInfo.html b/site/xref/org/apache/juneau/common/reflect/MethodInfo.html
index dd8dec4d1d..cb6f559a47 100644
--- a/site/xref/org/apache/juneau/common/reflect/MethodInfo.html
+++ b/site/xref/org/apache/juneau/common/reflect/MethodInfo.html
@@ -435,7 +435,7 @@
 <a class="jxr_linenumber" name="L427" href="#L427">427</a> <em class="jxr_javadoccomment">	 * @param action An action to perform on the entry.</em>
 <a class="jxr_linenumber" name="L428" href="#L428">428</a> <em class="jxr_javadoccomment">	 * @return This object.</em>
 <a class="jxr_linenumber" name="L429" href="#L429">429</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L430" href="#L430">430</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">void</strong> forEachAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type, Predicate&lt;A&gt; filter, Consumer&lt;A&gt; action) {
+<a class="jxr_linenumber" name="L430" href="#L430">430</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">void</strong> forEachAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type, Predicate&lt;A&gt; filter, Consumer&lt;A&gt; action) {
 <a class="jxr_linenumber" name="L431" href="#L431">431</a> 		declaringClass.forEachAnnotation(annotationProvider, type, filter, action);
 <a class="jxr_linenumber" name="L432" href="#L432">432</a> 		rstream(matchingCache.get())
 <a class="jxr_linenumber" name="L433" href="#L433">433</a> 			.flatMap(m -&gt; m.getDeclaredAnnotationInfos().stream())
@@ -482,10 +482,10 @@
 <a class="jxr_linenumber" name="L474" href="#L474">474</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
 <a class="jxr_linenumber" name="L475" href="#L475">475</a> <em class="jxr_javadoccomment">	 * @return The first annotation found, or &lt;jk&gt;null&lt;/jk&gt; if it doesn't exist.</em>
 <a class="jxr_linenumber" name="L476" href="#L476">476</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L477" href="#L477">477</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A getAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L477" href="#L477">477</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; A getAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
 <a class="jxr_linenumber" name="L478" href="#L478">478</a> 		<em class="jxr_comment">// Inline Context.firstAnnotation() call</em>
 <a class="jxr_linenumber" name="L479" href="#L479">479</a> 		<strong class="jxr_keyword">return</strong> matchingCache.get().stream()
-<a class="jxr_linenumber" name="L480" href="#L480">480</a> 			.map(m2 -&gt; annotationProvider.getAnnotationProvider().find(type, m2.<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>))
+<a class="jxr_linenumber" name="L480" href="#L480">480</a> 			.map(m2 -&gt; annotationProvider.find(type, m2.<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>))
 <a class="jxr_linenumber" name="L481" href="#L481">481</a> 			.filter(Objects::nonNull)
 <a class="jxr_linenumber" name="L482" href="#L482">482</a> 			.findFirst()
 <a class="jxr_linenumber" name="L483" href="#L483">483</a> 			.orElse(<strong class="jxr_keyword">null</strong>);
@@ -596,10 +596,10 @@
 <a class="jxr_linenumber" name="L588" href="#L588">588</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
 <a class="jxr_linenumber" name="L589" href="#L589">589</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is present on this method.</em>
 <a class="jxr_linenumber" name="L590" href="#L590">590</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L591" href="#L591">591</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L591" href="#L591">591</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
 <a class="jxr_linenumber" name="L592" href="#L592">592</a> 		<em class="jxr_comment">// Inline Context.firstAnnotation() call</em>
 <a class="jxr_linenumber" name="L593" href="#L593">593</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> m2 : matchingCache.get())
-<a class="jxr_linenumber" name="L594" href="#L594">594</a> 			<strong class="jxr_keyword">if</strong> (nn(annotationProvider.getAnnotationProvider().find(type, m2.<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>)))
+<a class="jxr_linenumber" name="L594" href="#L594">594</a> 			<strong class="jxr_keyword">if</strong> (nn(annotationProvider.find(type, m2.<strong class="jxr_keyword">inner</strong>()).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x -&gt; <strong class="jxr_keyword">true</strong>).findFirst().orElse(<strong class="jxr_keyword">null</strong>)))
 <a class="jxr_linenumber" name="L595" href="#L595">595</a> 				<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
 <a class="jxr_linenumber" name="L596" href="#L596">596</a> 		<strong class="jxr_keyword">return</strong> false;
 <a class="jxr_linenumber" name="L597" href="#L597">597</a> 	}
@@ -660,7 +660,7 @@
 <a class="jxr_linenumber" name="L652" href="#L652">652</a> <em class="jxr_javadoccomment">	 * @param type The annotation to look for.</em>
 <a class="jxr_linenumber" name="L653" href="#L653">653</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the specified annotation is not present on this method.</em>
 <a class="jxr_linenumber" name="L654" href="#L654">654</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L655" href="#L655">655</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> annotationProvider, Class&lt;A&gt; type) {
+<a class="jxr_linenumber" name="L655" href="#L655">655</a> 	<strong class="jxr_keyword">public</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <strong class="jxr_keyword">boolean</strong> hasNoAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> annotationProvider, Class&lt;A&gt; type) {
 <a class="jxr_linenumber" name="L656" href="#L656">656</a> 		<strong class="jxr_keyword">return</strong> ! hasAnnotation(annotationProvider, type);
 <a class="jxr_linenumber" name="L657" href="#L657">657</a> 	}
 <a class="jxr_linenumber" name="L658" href="#L658">658</a> 
diff --git a/site/xref/org/apache/juneau/common/reflect/ParameterInfo.html b/site/xref/org/apache/juneau/common/reflect/ParameterInfo.html
index 0524636c40..1f9f3410ce 100644
--- a/site/xref/org/apache/juneau/common/reflect/ParameterInfo.html
+++ b/site/xref/org/apache/juneau/common/reflect/ParameterInfo.html
@@ -814,7 +814,7 @@
 <a class="jxr_linenumber" name="L806" href="#L806">806</a> 		<strong class="jxr_keyword">return</strong> list;
 <a class="jxr_linenumber" name="L807" href="#L807">807</a> 	}
 <a class="jxr_linenumber" name="L808" href="#L808">808</a> 
-<a class="jxr_linenumber" name="L809" href="#L809">809</a> 	<strong class="jxr_keyword">private</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <a name="ParameterInfo" href="../../../../../org/apache/juneau/common/reflect/ParameterInfo.html#ParameterInfo">ParameterInfo</a> forEachAnnotation(<a name="AnnotationProvider" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider.html#AnnotationProvider">AnnotationProvider</a> ap, Class&lt;A&gt; a, P [...]
+<a class="jxr_linenumber" name="L809" href="#L809">809</a> 	<strong class="jxr_keyword">private</strong> &lt;A <strong class="jxr_keyword">extends</strong> Annotation&gt; <a name="ParameterInfo" href="../../../../../org/apache/juneau/common/reflect/ParameterInfo.html#ParameterInfo">ParameterInfo</a> forEachAnnotation(<a name="AnnotationProvider2" href="../../../../../org/apache/juneau/common/reflect/AnnotationProvider2.html#AnnotationProvider2">AnnotationProvider2</a> ap, Class&lt;A&gt;  [...]
 <a class="jxr_linenumber" name="L810" href="#L810">810</a> 		<strong class="jxr_keyword">if</strong> (executable.isConstructor) {
 <a class="jxr_linenumber" name="L811" href="#L811">811</a> 			<strong class="jxr_keyword">var</strong> ci = executable.getParameter(index).getParameterType().unwrap(Value.<strong class="jxr_keyword">class</strong>, Optional.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L812" href="#L812">812</a> 			<strong class="jxr_keyword">var</strong> annotationInfos = getAnnotationInfos();
diff --git a/site/xref/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.html b/site/xref/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.html
index c8e1c98949..1379061041 100644
--- a/site/xref/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.html
+++ b/site/xref/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.html
@@ -164,7 +164,7 @@
 <a class="jxr_linenumber" name="L156" href="#L156">156</a> 			omSwagger = <strong class="jxr_keyword">new</strong> <a name="JsonMap" href="../../../../../org/apache/juneau/collections/JsonMap.html#JsonMap">JsonMap</a>();
 <a class="jxr_linenumber" name="L157" href="#L157">157</a> 
 <a class="jxr_linenumber" name="L158" href="#L158">158</a> 		<em class="jxr_comment">// Combine it with @Rest(swagger)</em>
-<a class="jxr_linenumber" name="L159" href="#L159">159</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rr : rci.getAnnotations(context, Rest.<strong class="jxr_keyword">class</strong>)) {
+<a class="jxr_linenumber" name="L159" href="#L159">159</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rr : rci.getAnnotations(context.getAnnotationProvider(), Rest.<strong class="jxr_keyword">class</strong>)) {
 <a class="jxr_linenumber" name="L160" href="#L160">160</a> 
 <a class="jxr_linenumber" name="L161" href="#L161">161</a> 			JsonMap sInfo = omSwagger.getMap(<span class="jxr_string">"info"</span>, <strong class="jxr_keyword">true</strong>);
 <a class="jxr_linenumber" name="L162" href="#L162">162</a> 
@@ -440,8 +440,8 @@
 <a class="jxr_linenumber" name="L432" href="#L432">432</a> 
 <a class="jxr_linenumber" name="L433" href="#L433">433</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> eci : mi.getExceptionTypes()) {
 <a class="jxr_linenumber" name="L434" href="#L434">434</a> 				<strong class="jxr_keyword">if</strong> (eci.hasAnnotation(Response.<strong class="jxr_keyword">class</strong>)) {
-<a class="jxr_linenumber" name="L435" href="#L435">435</a> 					List&lt;Response&gt; la = eci.getAnnotations(context, Response.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L436" href="#L436">436</a> 					List&lt;StatusCode&gt; la2 = eci.getAnnotations(context, StatusCode.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L435" href="#L435">435</a> 					List&lt;Response&gt; la = eci.getAnnotations(context.getAnnotationProvider(), Response.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L436" href="#L436">436</a> 					List&lt;StatusCode&gt; la2 = eci.getAnnotations(context.getAnnotationProvider(), StatusCode.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L437" href="#L437">437</a> 					Set&lt;Integer&gt; codes = getCodes(la2, 500);
 <a class="jxr_linenumber" name="L438" href="#L438">438</a> 					<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> a : la) {
 <a class="jxr_linenumber" name="L439" href="#L439">439</a> 						<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> code : codes) {
@@ -463,7 +463,7 @@
 <a class="jxr_linenumber" name="L455" href="#L455">455</a> 							String ha = a.name();
 <a class="jxr_linenumber" name="L456" href="#L456">456</a> 							<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> code : codes) {
 <a class="jxr_linenumber" name="L457" href="#L457">457</a> 								JsonMap header = responses.getMap(String.valueOf(code), <strong class="jxr_keyword">true</strong>).getMap(<span class="jxr_string">"headers"</span>, <strong class="jxr_keyword">true</strong>).getMap(ha, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L458" href="#L458">458</a> 								ecmi.forEachAnnotation(context, Schema.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; merge(header, x));
+<a class="jxr_linenumber" name="L458" href="#L458">458</a> 								ecmi.forEachAnnotation(context.getAnnotationProvider(), Schema.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; merge(header, x));
 <a class="jxr_linenumber" name="L459" href="#L459">459</a> 								rstream(ecmi.getReturnType().unwrap(Value.<strong class="jxr_keyword">class</strong>, Optional.<strong class="jxr_keyword">class</strong>).getAnnotationInfos()).map(x -&gt; x.<strong class="jxr_keyword">cast</strong>(Schema.<strong class="jxr_keyword">class</strong>)).filter(Objects::nonNull).map(AnnotationInfo::<strong class="jxr_keyword">inner</strong>).forEach(x -&gt; merge(header, x));
 <a class="jxr_linenumber" name="L460" href="#L460">460</a> 								pushupSchemaFields(RESPONSE_HEADER, header, getSchema(header.getMap(<span class="jxr_string">"schema"</span>), ecmi.getReturnType().unwrap(Value.<strong class="jxr_keyword">class</strong>, Optional.<strong class="jxr_keyword">class</strong>).innerType(), bs));
 <a class="jxr_linenumber" name="L461" href="#L461">461</a> 							}
@@ -474,16 +474,16 @@
 <a class="jxr_linenumber" name="L466" href="#L466">466</a> 
 <a class="jxr_linenumber" name="L467" href="#L467">467</a> 			<strong class="jxr_keyword">if</strong> (mi.hasAnnotation(Response.<strong class="jxr_keyword">class</strong>) || mi.getReturnType().unwrap(Value.<strong class="jxr_keyword">class</strong>, Optional.<strong class="jxr_keyword">class</strong>).hasAnnotation(Response.<strong class="jxr_keyword">class</strong>)) {
 <a class="jxr_linenumber" name="L468" href="#L468">468</a> 				List&lt;Response&gt; la = list();
-<a class="jxr_linenumber" name="L469" href="#L469">469</a> 				mi.forEachAnnotation(context, Response.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; la.add(x));
+<a class="jxr_linenumber" name="L469" href="#L469">469</a> 				mi.forEachAnnotation(context.getAnnotationProvider(), Response.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; la.add(x));
 <a class="jxr_linenumber" name="L470" href="#L470">470</a> 				List&lt;StatusCode&gt; la2 = list();
-<a class="jxr_linenumber" name="L471" href="#L471">471</a> 				mi.forEachAnnotation(context, StatusCode.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; la2.add(x));
+<a class="jxr_linenumber" name="L471" href="#L471">471</a> 				mi.forEachAnnotation(context.getAnnotationProvider(), StatusCode.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; la2.add(x));
 <a class="jxr_linenumber" name="L472" href="#L472">472</a> 				Set&lt;Integer&gt; codes = getCodes(la2, 200);
 <a class="jxr_linenumber" name="L473" href="#L473">473</a> 				<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> a : la) {
 <a class="jxr_linenumber" name="L474" href="#L474">474</a> 					<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> code : codes) {
 <a class="jxr_linenumber" name="L475" href="#L475">475</a> 						JsonMap om = responses.getMap(String.valueOf(code), <strong class="jxr_keyword">true</strong>);
 <a class="jxr_linenumber" name="L476" href="#L476">476</a> 						merge(om, a);
 <a class="jxr_linenumber" name="L477" href="#L477">477</a> 						JsonMap schema = getSchema(om.getMap(<span class="jxr_string">"schema"</span>), m.getGenericReturnType(), bs);
-<a class="jxr_linenumber" name="L478" href="#L478">478</a> 						mi.forEachAnnotation(context, Schema.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; merge(schema, x));
+<a class="jxr_linenumber" name="L478" href="#L478">478</a> 						mi.forEachAnnotation(context.getAnnotationProvider(), Schema.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; merge(schema, x));
 <a class="jxr_linenumber" name="L479" href="#L479">479</a> 						pushupSchemaFields(RESPONSE, om, schema);
 <a class="jxr_linenumber" name="L480" href="#L480">480</a> 						om.appendIf(nem, <span class="jxr_string">"schema"</span>, schema);
 <a class="jxr_linenumber" name="L481" href="#L481">481</a> 						addBodyExamples(sm, om, <strong class="jxr_keyword">true</strong>, m.getGenericReturnType(), locale);
@@ -499,7 +499,7 @@
 <a class="jxr_linenumber" name="L491" href="#L491">491</a> 							<strong class="jxr_keyword">if</strong> (! isMulti(a)) {
 <a class="jxr_linenumber" name="L492" href="#L492">492</a> 								<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> code : codes) {
 <a class="jxr_linenumber" name="L493" href="#L493">493</a> 									JsonMap header = responses.getMap(String.valueOf(code), <strong class="jxr_keyword">true</strong>).getMap(<span class="jxr_string">"headers"</span>, <strong class="jxr_keyword">true</strong>).getMap(ha, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L494" href="#L494">494</a> 									ecmi.forEachAnnotation(context, Schema.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; merge(header, x));
+<a class="jxr_linenumber" name="L494" href="#L494">494</a> 									ecmi.forEachAnnotation(context.getAnnotationProvider(), Schema.<strong class="jxr_keyword">class</strong>, x -&gt; <strong class="jxr_keyword">true</strong>, x -&gt; merge(header, x));
 <a class="jxr_linenumber" name="L495" href="#L495">495</a> 									rstream(ecmi.getReturnType().unwrap(Value.<strong class="jxr_keyword">class</strong>, Optional.<strong class="jxr_keyword">class</strong>).getAnnotationInfos()).map(x -&gt; x.<strong class="jxr_keyword">cast</strong>(Schema.<strong class="jxr_keyword">class</strong>)).filter(Objects::nonNull).map(AnnotationInfo::<strong class="jxr_keyword">inner</strong>).forEach(x -&gt; merge(header, x));
 <a class="jxr_linenumber" name="L496" href="#L496">496</a> 									merge(header, a.schema());
 <a class="jxr_linenumber" name="L497" href="#L497">497</a> 									pushupSchemaFields(RESPONSE_HEADER, header, getSchema(header, ecmi.getReturnType().innerType(), bs));
diff --git a/site/xref/org/apache/juneau/swap/AutoListSwap.html b/site/xref/org/apache/juneau/swap/AutoListSwap.html
index 05591b93f6..e89a65db34 100644
--- a/site/xref/org/apache/juneau/swap/AutoListSwap.html
+++ b/site/xref/org/apache/juneau/swap/AutoListSwap.html
@@ -141,7 +141,7 @@
 <a class="jxr_linenumber" name="L133" href="#L133">133</a> 			&amp;&amp; mi.hasAnyName(SWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L134" href="#L134">134</a> 			&amp;&amp; mi.hasReturnTypeParent(List.<strong class="jxr_keyword">class</strong>)
 <a class="jxr_linenumber" name="L135" href="#L135">135</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L137" href="#L137">137</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L138" href="#L138">138</a> 	}
 <a class="jxr_linenumber" name="L139" href="#L139">139</a> 
@@ -151,7 +151,7 @@
 <a class="jxr_linenumber" name="L143" href="#L143">143</a> 			cs.isNotDeprecated()
 <a class="jxr_linenumber" name="L144" href="#L144">144</a> 			&amp;&amp; cs.isVisible(bc.getBeanConstructorVisibility())
 <a class="jxr_linenumber" name="L145" href="#L145">145</a> 			&amp;&amp; cs.hasMatchingParameterTypes(rt)
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> 			&amp;&amp; cs.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L146" href="#L146">146</a> 			&amp;&amp; cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L147" href="#L147">147</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L148" href="#L148">148</a> 	}
 <a class="jxr_linenumber" name="L149" href="#L149">149</a> 
@@ -164,12 +164,12 @@
 <a class="jxr_linenumber" name="L156" href="#L156">156</a> 			&amp;&amp; mi.hasAnyName(UNSWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L157" href="#L157">157</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>, rt.<strong class="jxr_keyword">inner</strong>())
 <a class="jxr_linenumber" name="L158" href="#L158">158</a> 			&amp;&amp; mi.hasReturnTypeParent(ci)
-<a class="jxr_linenumber" name="L159" href="#L159">159</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L159" href="#L159">159</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L160" href="#L160">160</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L161" href="#L161">161</a> 	}
 <a class="jxr_linenumber" name="L162" href="#L162">162</a> 
 <a class="jxr_linenumber" name="L163" href="#L163">163</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> shouldIgnore(BeanContext bc, ClassInfo ci) {
-<a class="jxr_linenumber" name="L164" href="#L164">164</a> 		<strong class="jxr_keyword">return</strong> ci.hasAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>) || ci.isNonStaticMemberClass();
+<a class="jxr_linenumber" name="L164" href="#L164">164</a> 		<strong class="jxr_keyword">return</strong> ci.hasAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>) || ci.isNonStaticMemberClass();
 <a class="jxr_linenumber" name="L165" href="#L165">165</a> 	}
 <a class="jxr_linenumber" name="L166" href="#L166">166</a> 
 <a class="jxr_linenumber" name="L167" href="#L167">167</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
diff --git a/site/xref/org/apache/juneau/swap/AutoMapSwap.html b/site/xref/org/apache/juneau/swap/AutoMapSwap.html
index 59d59aa9d2..8cb9a3e347 100644
--- a/site/xref/org/apache/juneau/swap/AutoMapSwap.html
+++ b/site/xref/org/apache/juneau/swap/AutoMapSwap.html
@@ -141,7 +141,7 @@
 <a class="jxr_linenumber" name="L133" href="#L133">133</a> 			&amp;&amp; mi.hasAnyName(SWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L134" href="#L134">134</a> 			&amp;&amp; mi.hasReturnTypeParent(Map.<strong class="jxr_keyword">class</strong>)
 <a class="jxr_linenumber" name="L135" href="#L135">135</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L137" href="#L137">137</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L138" href="#L138">138</a> 	}
 <a class="jxr_linenumber" name="L139" href="#L139">139</a> 
@@ -151,7 +151,7 @@
 <a class="jxr_linenumber" name="L143" href="#L143">143</a> 			cs.isNotDeprecated()
 <a class="jxr_linenumber" name="L144" href="#L144">144</a> 			&amp;&amp; cs.isVisible(bc.getBeanConstructorVisibility())
 <a class="jxr_linenumber" name="L145" href="#L145">145</a> 			&amp;&amp; cs.hasMatchingParameterTypes(rt)
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> 			&amp;&amp; cs.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L146" href="#L146">146</a> 			&amp;&amp; cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L147" href="#L147">147</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L148" href="#L148">148</a> 	}
 <a class="jxr_linenumber" name="L149" href="#L149">149</a> 
@@ -164,12 +164,12 @@
 <a class="jxr_linenumber" name="L156" href="#L156">156</a> 			&amp;&amp; mi.hasAnyName(UNSWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L157" href="#L157">157</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>, rt.<strong class="jxr_keyword">inner</strong>())
 <a class="jxr_linenumber" name="L158" href="#L158">158</a> 			&amp;&amp; mi.hasReturnTypeParent(ci)
-<a class="jxr_linenumber" name="L159" href="#L159">159</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L159" href="#L159">159</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L160" href="#L160">160</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L161" href="#L161">161</a> 	}
 <a class="jxr_linenumber" name="L162" href="#L162">162</a> 
 <a class="jxr_linenumber" name="L163" href="#L163">163</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> shouldIgnore(BeanContext bc, ClassInfo ci) {
-<a class="jxr_linenumber" name="L164" href="#L164">164</a> 		<strong class="jxr_keyword">return</strong> ci.hasAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>) || ci.isNonStaticMemberClass();
+<a class="jxr_linenumber" name="L164" href="#L164">164</a> 		<strong class="jxr_keyword">return</strong> ci.hasAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>) || ci.isNonStaticMemberClass();
 <a class="jxr_linenumber" name="L165" href="#L165">165</a> 	}
 <a class="jxr_linenumber" name="L166" href="#L166">166</a> 
 <a class="jxr_linenumber" name="L167" href="#L167">167</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
diff --git a/site/xref/org/apache/juneau/swap/AutoNumberSwap.html b/site/xref/org/apache/juneau/swap/AutoNumberSwap.html
index 49f91bf881..0ed232b576 100644
--- a/site/xref/org/apache/juneau/swap/AutoNumberSwap.html
+++ b/site/xref/org/apache/juneau/swap/AutoNumberSwap.html
@@ -166,7 +166,7 @@
 <a class="jxr_linenumber" name="L158" href="#L158">158</a> 			&amp;&amp; (rt.isChildOf(Number.<strong class="jxr_keyword">class</strong>) || (rt.isPrimitive() &amp;&amp; rt.isAny(<strong class="jxr_keyword">int</strong>.<strong class="jxr_keyword">class</strong>, <strong class="jxr_keyword">short</strong>.<strong class="jxr_keyword">class</strong>, <strong class="jxr_keyword">long</strong>.<strong class="jxr_keyword">class</strong>, <strong class="jxr_keyword">float</strong>.<strong clas [...]
 <a class="jxr_linenumber" name="L159" href="#L159">159</a> 			&amp;&amp; mi.hasAnyName(SWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L160" href="#L160">160</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L161" href="#L161">161</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L161" href="#L161">161</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L162" href="#L162">162</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L163" href="#L163">163</a> 	}
 <a class="jxr_linenumber" name="L164" href="#L164">164</a> 
@@ -176,7 +176,7 @@
 <a class="jxr_linenumber" name="L168" href="#L168">168</a> 			cs.isNotDeprecated()
 <a class="jxr_linenumber" name="L169" href="#L169">169</a> 			&amp;&amp; cs.isVisible(bc.getBeanConstructorVisibility())
 <a class="jxr_linenumber" name="L170" href="#L170">170</a> 			&amp;&amp; cs.hasMatchingParameterTypes(rt)
-<a class="jxr_linenumber" name="L171" href="#L171">171</a> 			&amp;&amp; cs.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L171" href="#L171">171</a> 			&amp;&amp; cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L172" href="#L172">172</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L173" href="#L173">173</a> 	}
 <a class="jxr_linenumber" name="L174" href="#L174">174</a> 
@@ -189,14 +189,14 @@
 <a class="jxr_linenumber" name="L181" href="#L181">181</a> 			&amp;&amp; mi.hasAnyName(UNSWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L182" href="#L182">182</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>, rt.<strong class="jxr_keyword">inner</strong>())
 <a class="jxr_linenumber" name="L183" href="#L183">183</a> 			&amp;&amp; mi.hasReturnTypeParent(ci)
-<a class="jxr_linenumber" name="L184" href="#L184">184</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L184" href="#L184">184</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L185" href="#L185">185</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L186" href="#L186">186</a> 	}
 <a class="jxr_linenumber" name="L187" href="#L187">187</a> 
 <a class="jxr_linenumber" name="L188" href="#L188">188</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> shouldIgnore(BeanContext bc, ClassInfo ci) {
 <a class="jxr_linenumber" name="L189" href="#L189">189</a> 		<em class="jxr_comment">// @formatter:off</em>
 <a class="jxr_linenumber" name="L190" href="#L190">190</a> 		<strong class="jxr_keyword">return</strong>
-<a class="jxr_linenumber" name="L191" href="#L191">191</a> 			ci.hasAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L191" href="#L191">191</a> 			ci.hasAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>)
 <a class="jxr_linenumber" name="L192" href="#L192">192</a> 			|| ci.isNonStaticMemberClass()
 <a class="jxr_linenumber" name="L193" href="#L193">193</a> 			|| ci.isPrimitive()
 <a class="jxr_linenumber" name="L194" href="#L194">194</a> 			|| ci.isChildOf(Number.<strong class="jxr_keyword">class</strong>);
diff --git a/site/xref/org/apache/juneau/swap/AutoObjectSwap.html b/site/xref/org/apache/juneau/swap/AutoObjectSwap.html
index c65c634bac..f618dd813b 100644
--- a/site/xref/org/apache/juneau/swap/AutoObjectSwap.html
+++ b/site/xref/org/apache/juneau/swap/AutoObjectSwap.html
@@ -142,7 +142,7 @@
 <a class="jxr_linenumber" name="L134" href="#L134">134</a> 			&amp;&amp; mi.isVisible(bc.getBeanMethodVisibility())
 <a class="jxr_linenumber" name="L135" href="#L135">135</a> 			&amp;&amp; mi.hasAnyName(SWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L136" href="#L136">136</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L137" href="#L137">137</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L138" href="#L138">138</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L139" href="#L139">139</a> 	}
 <a class="jxr_linenumber" name="L140" href="#L140">140</a> 
@@ -152,7 +152,7 @@
 <a class="jxr_linenumber" name="L144" href="#L144">144</a> 			cs.isNotDeprecated()
 <a class="jxr_linenumber" name="L145" href="#L145">145</a> 			&amp;&amp; cs.isVisible(bc.getBeanConstructorVisibility())
 <a class="jxr_linenumber" name="L146" href="#L146">146</a> 			&amp;&amp; cs.hasMatchingParameterTypes(rt)
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> 			&amp;&amp; cs.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L147" href="#L147">147</a> 			&amp;&amp; cs.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L148" href="#L148">148</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L149" href="#L149">149</a> 	}
 <a class="jxr_linenumber" name="L150" href="#L150">150</a> 
@@ -165,12 +165,12 @@
 <a class="jxr_linenumber" name="L157" href="#L157">157</a> 			&amp;&amp; mi.hasAnyName(UNSWAP_METHOD_NAMES)
 <a class="jxr_linenumber" name="L158" href="#L158">158</a> 			&amp;&amp; mi.hasParameterTypesLenient(BeanSession.<strong class="jxr_keyword">class</strong>, rt.<strong class="jxr_keyword">inner</strong>())
 <a class="jxr_linenumber" name="L159" href="#L159">159</a> 			&amp;&amp; mi.hasReturnTypeParent(ci)
-<a class="jxr_linenumber" name="L160" href="#L160">160</a> 			&amp;&amp; mi.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L160" href="#L160">160</a> 			&amp;&amp; mi.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>);
 <a class="jxr_linenumber" name="L161" href="#L161">161</a> 		<em class="jxr_comment">// @formatter:on</em>
 <a class="jxr_linenumber" name="L162" href="#L162">162</a> 	}
 <a class="jxr_linenumber" name="L163" href="#L163">163</a> 
 <a class="jxr_linenumber" name="L164" href="#L164">164</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> shouldIgnore(BeanContext bc, ClassInfo ci) {
-<a class="jxr_linenumber" name="L165" href="#L165">165</a> 		<strong class="jxr_keyword">return</strong> ci.hasAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>) || ci.isNonStaticMemberClass();
+<a class="jxr_linenumber" name="L165" href="#L165">165</a> 		<strong class="jxr_keyword">return</strong> ci.hasAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>) || ci.isNonStaticMemberClass();
 <a class="jxr_linenumber" name="L166" href="#L166">166</a> 	}
 <a class="jxr_linenumber" name="L167" href="#L167">167</a> 
 <a class="jxr_linenumber" name="L168" href="#L168">168</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
diff --git a/site/xref/org/apache/juneau/swap/SurrogateSwap.html b/site/xref/org/apache/juneau/swap/SurrogateSwap.html
index 863523f805..a1a92e94ab 100644
--- a/site/xref/org/apache/juneau/swap/SurrogateSwap.html
+++ b/site/xref/org/apache/juneau/swap/SurrogateSwap.html
@@ -62,7 +62,7 @@
 <a class="jxr_linenumber" name="L54" href="#L54">54</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> List&lt;SurrogateSwap&lt;?,?&gt;&gt; findObjectSwaps(Class&lt;?&gt; c, BeanContext bc) {
 <a class="jxr_linenumber" name="L55" href="#L55">55</a>  		List&lt;SurrogateSwap&lt;?,?&gt;&gt; l = <strong class="jxr_keyword">new</strong> LinkedList&lt;&gt;();
 <a class="jxr_linenumber" name="L56" href="#L56">56</a>  		<strong class="jxr_keyword">var</strong> ci = ClassInfo.of(c);
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  		ci.getPublicConstructors().stream().filter(x -&gt; x.hasNoAnnotation(bc, BeanIgnore.<strong class="jxr_keyword">class</strong>) &amp;&amp; x.hasNumParameters(1) &amp;&amp; x.isPublic()).forEach(x -&gt; {
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  		ci.getPublicConstructors().stream().filter(x -&gt; x.hasNoAnnotation(bc.getAnnotationProvider(), BeanIgnore.<strong class="jxr_keyword">class</strong>) &amp;&amp; x.hasNumParameters(1) &amp;&amp; x.isPublic()).forEach(x -&gt; {
 <a class="jxr_linenumber" name="L58" href="#L58">58</a>  			<strong class="jxr_keyword">var</strong> pt = x.getParameter(0).getParameterType().<strong class="jxr_keyword">inner</strong>();
 <a class="jxr_linenumber" name="L59" href="#L59">59</a>  			<strong class="jxr_keyword">if</strong> (! pt.equals(c.getDeclaringClass())) {
 <a class="jxr_linenumber" name="L60" href="#L60">60</a>  				<em class="jxr_comment">// Find the unswap method if there is one.</em>