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 30d078929e Deploy documentation staging from 
695b7c770dcbe490fd02a78767763c7c53bd8b12 
695b7c770dcbe490fd02a78767763c7c53bd8b12
30d078929e is described below

commit 30d078929eeb0089d397aa24abe1849e5619acb2
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Nov 5 21:02:41 2025 +0000

    Deploy documentation staging from 695b7c770dcbe490fd02a78767763c7c53bd8b12 
695b7c770dcbe490fd02a78767763c7c53bd8b12
---
 site/xref/org/apache/juneau/Context.html           | 247 ++++++++-------
 .../juneau/common/reflect/AnnotationProvider2.html | 336 ++++++++++++---------
 .../apache/juneau/common/utils/PredicateUtils.html |  52 +++-
 3 files changed, 362 insertions(+), 273 deletions(-)

diff --git a/site/xref/org/apache/juneau/Context.html 
b/site/xref/org/apache/juneau/Context.html
index 6aee083ce8..d37bccb368 100644
--- a/site/xref/org/apache/juneau/Context.html
+++ b/site/xref/org/apache/juneau/Context.html
@@ -903,133 +903,130 @@
 <a class="jxr_linenumber" name="L895" href="#L895">895</a> 
 <a class="jxr_linenumber" name="L896" href="#L896">896</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
 <a class="jxr_linenumber" name="L897" href="#L897">897</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; <strong 
class="jxr_keyword">void</strong> forEachDeclaredAnnotation(Class&lt;A&gt; 
type, Class&lt;?&gt; onClass, Predicate&lt;A&gt; filter, Consumer&lt;A&gt; 
action) {
-<a class="jxr_linenumber" name="L898" href="#L898">898</a> <em 
class="jxr_comment">//          getAnnotationProvider().find(type, 
onClass).map(x -&gt; x.inner()).filter(x -&gt; filter.test(x)).forEach(x -&gt; 
action.accept(x));</em>
-<a class="jxr_linenumber" name="L899" href="#L899">899</a>             <strong 
class="jxr_keyword">if</strong> (nn(type) &amp;&amp; nn(onClass))
-<a class="jxr_linenumber" name="L900" href="#L900">900</a>                     
<strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a : declaredAnnotations(type, onClass))
-<a class="jxr_linenumber" name="L901" href="#L901">901</a>                     
        consumeIf(filter, action, a);
-<a class="jxr_linenumber" name="L902" href="#L902">902</a>     }
-<a class="jxr_linenumber" name="L903" href="#L903">903</a> 
-<a class="jxr_linenumber" name="L904" href="#L904">904</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L905" href="#L905">905</a> <em 
class="jxr_javadoccomment">      * Returns a session to use for this 
context.</em>
+<a class="jxr_linenumber" name="L898" href="#L898">898</a>             
getAnnotationProvider().findDeclaredParentFirst(type, onClass).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="L899" href="#L899">899</a>     }
+<a class="jxr_linenumber" name="L900" href="#L900">900</a> 
+<a class="jxr_linenumber" name="L901" href="#L901">901</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L902" href="#L902">902</a> <em 
class="jxr_javadoccomment">      * Returns a session to use for this 
context.</em>
+<a class="jxr_linenumber" name="L903" href="#L903">903</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L904" href="#L904">904</a> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L905" href="#L905">905</a> <em 
class="jxr_javadoccomment">      * Note that subclasses may opt to return a 
reusable non-modifiable session.</em>
 <a class="jxr_linenumber" name="L906" href="#L906">906</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L907" href="#L907">907</a> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L908" href="#L908">908</a> <em 
class="jxr_javadoccomment">      * Note that subclasses may opt to return a 
reusable non-modifiable session.</em>
-<a class="jxr_linenumber" name="L909" href="#L909">909</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L910" href="#L910">910</a> <em 
class="jxr_javadoccomment">      * @return A new session object.</em>
-<a class="jxr_linenumber" name="L911" href="#L911">911</a> <em 
class="jxr_javadoccomment">      */</em>
-<a class="jxr_linenumber" name="L912" href="#L912">912</a>     <strong 
class="jxr_keyword">public</strong> <a name="ContextSession" 
href="../../../org/apache/juneau/ContextSession.html#ContextSession">ContextSession</a>
 getSession() { <strong class="jxr_keyword">return</strong> 
createSession().build(); }
-<a class="jxr_linenumber" name="L913" href="#L913">913</a> 
-<a class="jxr_linenumber" name="L914" href="#L914">914</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L915" href="#L915">915</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,c)&lt;/c&gt; returns a non-null value.</em>
-<a class="jxr_linenumber" name="L916" href="#L916">916</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L917" href="#L917">917</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
-<a class="jxr_linenumber" name="L918" href="#L918">918</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
-<a class="jxr_linenumber" name="L919" href="#L919">919</a> <em 
class="jxr_javadoccomment">      * @param onClass The class being checked 
on.</em>
-<a class="jxr_linenumber" name="L920" href="#L920">920</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified class.</em>
-<a class="jxr_linenumber" name="L921" href="#L921">921</a> <em 
class="jxr_javadoccomment">      */</em>
-<a class="jxr_linenumber" name="L922" href="#L922">922</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, 
Class&lt;?&gt; onClass) {
-<a class="jxr_linenumber" name="L923" href="#L923">923</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onClass).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
-<a class="jxr_linenumber" name="L924" href="#L924">924</a>     }
-<a class="jxr_linenumber" name="L925" href="#L925">925</a> 
-<a class="jxr_linenumber" name="L926" href="#L926">926</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L927" href="#L927">927</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,c)&lt;/c&gt; returns a non-null value.</em>
-<a class="jxr_linenumber" name="L928" href="#L928">928</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L929" href="#L929">929</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
-<a class="jxr_linenumber" name="L930" href="#L930">930</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
-<a class="jxr_linenumber" name="L931" href="#L931">931</a> <em 
class="jxr_javadoccomment">      * @param onConstructor The constructor being 
checked on.</em>
-<a class="jxr_linenumber" name="L932" href="#L932">932</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified field.</em>
-<a class="jxr_linenumber" name="L933" href="#L933">933</a> <em 
class="jxr_javadoccomment">      */</em>
-<a class="jxr_linenumber" name="L934" href="#L934">934</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, 
Constructor&lt;?&gt; onConstructor) {
-<a class="jxr_linenumber" name="L935" href="#L935">935</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onConstructor).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
-<a class="jxr_linenumber" name="L936" href="#L936">936</a>     }
-<a class="jxr_linenumber" name="L937" href="#L937">937</a> 
-<a class="jxr_linenumber" name="L938" href="#L938">938</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L939" href="#L939">939</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,f)&lt;/c&gt; returns a non-null value.</em>
-<a class="jxr_linenumber" name="L940" href="#L940">940</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L941" href="#L941">941</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
-<a class="jxr_linenumber" name="L942" href="#L942">942</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
-<a class="jxr_linenumber" name="L943" href="#L943">943</a> <em 
class="jxr_javadoccomment">      * @param onField The field being checked 
on.</em>
-<a class="jxr_linenumber" name="L944" href="#L944">944</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified field.</em>
-<a class="jxr_linenumber" name="L945" href="#L945">945</a> <em 
class="jxr_javadoccomment">      */</em>
-<a class="jxr_linenumber" name="L946" href="#L946">946</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, Field 
onField) {
-<a class="jxr_linenumber" name="L947" href="#L947">947</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onField).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
-<a class="jxr_linenumber" name="L948" href="#L948">948</a>     }
-<a class="jxr_linenumber" name="L949" href="#L949">949</a> 
-<a class="jxr_linenumber" name="L950" href="#L950">950</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L951" href="#L951">951</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,m)&lt;/c&gt; returns a non-null value.</em>
-<a class="jxr_linenumber" name="L952" href="#L952">952</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L953" href="#L953">953</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
-<a class="jxr_linenumber" name="L954" href="#L954">954</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
-<a class="jxr_linenumber" name="L955" href="#L955">955</a> <em 
class="jxr_javadoccomment">      * @param onMethod The method being checked 
on.</em>
-<a class="jxr_linenumber" name="L956" href="#L956">956</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified method.</em>
-<a class="jxr_linenumber" name="L957" href="#L957">957</a> <em 
class="jxr_javadoccomment">      */</em>
-<a class="jxr_linenumber" name="L958" href="#L958">958</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, Method 
onMethod) {
-<a class="jxr_linenumber" name="L959" href="#L959">959</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onMethod).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
-<a class="jxr_linenumber" name="L960" href="#L960">960</a>     }
-<a class="jxr_linenumber" name="L961" href="#L961">961</a> 
-<a class="jxr_linenumber" name="L962" href="#L962">962</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L963" href="#L963">963</a> <em 
class="jxr_javadoccomment">      * Debug mode.</em>
-<a class="jxr_linenumber" name="L964" href="#L964">964</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L965" href="#L965">965</a> <em 
class="jxr_javadoccomment">      * @see Context.Builder#debug()</em>
-<a class="jxr_linenumber" name="L966" href="#L966">966</a> <em 
class="jxr_javadoccomment">      * @return</em>
-<a class="jxr_linenumber" name="L967" href="#L967">967</a> <em 
class="jxr_javadoccomment">      *      &lt;jk&gt;true&lt;/jk&gt; if debug mode 
is enabled.</em>
-<a class="jxr_linenumber" name="L968" href="#L968">968</a> <em 
class="jxr_javadoccomment">      */</em>
-<a class="jxr_linenumber" name="L969" href="#L969">969</a>     <strong 
class="jxr_keyword">public</strong> <strong 
class="jxr_keyword">boolean</strong> isDebug() { <strong 
class="jxr_keyword">return</strong> debug; }
-<a class="jxr_linenumber" name="L970" href="#L970">970</a> 
-<a class="jxr_linenumber" name="L971" href="#L971">971</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
-<a class="jxr_linenumber" name="L972" href="#L972">972</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Class&lt;?&gt; onClass, Predicate&lt;A&gt; 
filter) {
-<a class="jxr_linenumber" name="L973" href="#L973">973</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onClass).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L974" href="#L974">974</a>     }
-<a class="jxr_linenumber" name="L975" href="#L975">975</a> 
-<a class="jxr_linenumber" name="L976" href="#L976">976</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
-<a class="jxr_linenumber" name="L977" href="#L977">977</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Constructor&lt;?&gt; onConstructor, 
Predicate&lt;A&gt; filter) {
-<a class="jxr_linenumber" name="L978" href="#L978">978</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onConstructor).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).filter(x -&gt; 
filter.test(x)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L979" href="#L979">979</a>     }
-<a class="jxr_linenumber" name="L980" href="#L980">980</a> 
-<a class="jxr_linenumber" name="L981" href="#L981">981</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
-<a class="jxr_linenumber" name="L982" href="#L982">982</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Field onField, Predicate&lt;A&gt; filter) {
-<a class="jxr_linenumber" name="L983" href="#L983">983</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onField).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L984" href="#L984">984</a>     }
-<a class="jxr_linenumber" name="L985" href="#L985">985</a> 
-<a class="jxr_linenumber" name="L986" href="#L986">986</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
-<a class="jxr_linenumber" name="L987" href="#L987">987</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Method onMethod, Predicate&lt;A&gt; filter) 
{
-<a class="jxr_linenumber" name="L988" href="#L988">988</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onMethod).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L989" href="#L989">989</a>     }
-<a class="jxr_linenumber" name="L990" href="#L990">990</a> 
-<a class="jxr_linenumber" name="L991" href="#L991">991</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
-<a class="jxr_linenumber" name="L992" href="#L992">992</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastDeclaredAnnotation(Class&lt;A&gt; type, Class&lt;?&gt; onClass, 
Predicate&lt;A&gt; filter) {
-<a class="jxr_linenumber" name="L993" href="#L993">993</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().findDeclared(type, 
onClass).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L994" href="#L994">994</a>     }
-<a class="jxr_linenumber" name="L995" href="#L995">995</a> 
-<a class="jxr_linenumber" name="L996" href="#L996">996</a>     @Override <em 
class="jxr_comment">/* Overridden from Object */</em>
-<a class="jxr_linenumber" name="L997" href="#L997">997</a>     <strong 
class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="L998" href="#L998">998</a>             <strong 
class="jxr_keyword">return</strong> Utils2.toPropertyMap(<strong 
class="jxr_keyword">this</strong>).asReadableString();
-<a class="jxr_linenumber" name="L999" href="#L999">999</a>     }
-<a class="jxr_linenumber" name="L1000" href="#L1000">1000</a> 
-<a class="jxr_linenumber" name="L1001" href="#L1001">1001</a>  
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L1002" href="#L1002">1002</a>  <strong 
class="jxr_keyword">private</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A[] 
declaredAnnotations(Class&lt;A&gt; type, Class&lt;?&gt; onClass) {
-<a class="jxr_linenumber" name="L1003" href="#L1003">1003</a>          <strong 
class="jxr_keyword">return</strong> 
(A[])declaredClassAnnotationCache.get(onClass, type);
-<a class="jxr_linenumber" name="L1004" href="#L1004">1004</a>  }
-<a class="jxr_linenumber" name="L1005" href="#L1005">1005</a> 
-<a class="jxr_linenumber" name="L1006" href="#L1006">1006</a>  <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1007" href="#L1007">1007</a> <em 
class="jxr_javadoccomment">   * Perform optional initialization on builder 
before it is used.</em>
+<a class="jxr_linenumber" name="L907" href="#L907">907</a> <em 
class="jxr_javadoccomment">      * @return A new session object.</em>
+<a class="jxr_linenumber" name="L908" href="#L908">908</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L909" href="#L909">909</a>     <strong 
class="jxr_keyword">public</strong> <a name="ContextSession" 
href="../../../org/apache/juneau/ContextSession.html#ContextSession">ContextSession</a>
 getSession() { <strong class="jxr_keyword">return</strong> 
createSession().build(); }
+<a class="jxr_linenumber" name="L910" href="#L910">910</a> 
+<a class="jxr_linenumber" name="L911" href="#L911">911</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L912" href="#L912">912</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,c)&lt;/c&gt; returns a non-null value.</em>
+<a class="jxr_linenumber" name="L913" href="#L913">913</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L914" href="#L914">914</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
+<a class="jxr_linenumber" name="L915" href="#L915">915</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
+<a class="jxr_linenumber" name="L916" href="#L916">916</a> <em 
class="jxr_javadoccomment">      * @param onClass The class being checked 
on.</em>
+<a class="jxr_linenumber" name="L917" href="#L917">917</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified class.</em>
+<a class="jxr_linenumber" name="L918" href="#L918">918</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L919" href="#L919">919</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, 
Class&lt;?&gt; onClass) {
+<a class="jxr_linenumber" name="L920" href="#L920">920</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onClass).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
+<a class="jxr_linenumber" name="L921" href="#L921">921</a>     }
+<a class="jxr_linenumber" name="L922" href="#L922">922</a> 
+<a class="jxr_linenumber" name="L923" href="#L923">923</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L924" href="#L924">924</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,c)&lt;/c&gt; returns a non-null value.</em>
+<a class="jxr_linenumber" name="L925" href="#L925">925</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L926" href="#L926">926</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
+<a class="jxr_linenumber" name="L927" href="#L927">927</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
+<a class="jxr_linenumber" name="L928" href="#L928">928</a> <em 
class="jxr_javadoccomment">      * @param onConstructor The constructor being 
checked on.</em>
+<a class="jxr_linenumber" name="L929" href="#L929">929</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified field.</em>
+<a class="jxr_linenumber" name="L930" href="#L930">930</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L931" href="#L931">931</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, 
Constructor&lt;?&gt; onConstructor) {
+<a class="jxr_linenumber" name="L932" href="#L932">932</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onConstructor).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
+<a class="jxr_linenumber" name="L933" href="#L933">933</a>     }
+<a class="jxr_linenumber" name="L934" href="#L934">934</a> 
+<a class="jxr_linenumber" name="L935" href="#L935">935</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L936" href="#L936">936</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,f)&lt;/c&gt; returns a non-null value.</em>
+<a class="jxr_linenumber" name="L937" href="#L937">937</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L938" href="#L938">938</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
+<a class="jxr_linenumber" name="L939" href="#L939">939</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
+<a class="jxr_linenumber" name="L940" href="#L940">940</a> <em 
class="jxr_javadoccomment">      * @param onField The field being checked 
on.</em>
+<a class="jxr_linenumber" name="L941" href="#L941">941</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified field.</em>
+<a class="jxr_linenumber" name="L942" href="#L942">942</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L943" href="#L943">943</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, Field 
onField) {
+<a class="jxr_linenumber" name="L944" href="#L944">944</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onField).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
+<a class="jxr_linenumber" name="L945" href="#L945">945</a>     }
+<a class="jxr_linenumber" name="L946" href="#L946">946</a> 
+<a class="jxr_linenumber" name="L947" href="#L947">947</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L948" href="#L948">948</a> <em 
class="jxr_javadoccomment">      * Returns &lt;jk&gt;true&lt;/jk&gt; if 
&lt;c&gt;getAnnotation(a,m)&lt;/c&gt; returns a non-null value.</em>
+<a class="jxr_linenumber" name="L949" href="#L949">949</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L950" href="#L950">950</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation being 
checked for.</em>
+<a class="jxr_linenumber" name="L951" href="#L951">951</a> <em 
class="jxr_javadoccomment">      * @param type The annotation being checked 
for.</em>
+<a class="jxr_linenumber" name="L952" href="#L952">952</a> <em 
class="jxr_javadoccomment">      * @param onMethod The method being checked 
on.</em>
+<a class="jxr_linenumber" name="L953" href="#L953">953</a> <em 
class="jxr_javadoccomment">      * @return &lt;jk&gt;true&lt;/jk&gt; if the 
annotation exists on the specified method.</em>
+<a class="jxr_linenumber" name="L954" href="#L954">954</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L955" href="#L955">955</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, Method 
onMethod) {
+<a class="jxr_linenumber" name="L956" href="#L956">956</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onMethod).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).findFirst().isPresent();
+<a class="jxr_linenumber" name="L957" href="#L957">957</a>     }
+<a class="jxr_linenumber" name="L958" href="#L958">958</a> 
+<a class="jxr_linenumber" name="L959" href="#L959">959</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L960" href="#L960">960</a> <em 
class="jxr_javadoccomment">      * Debug mode.</em>
+<a class="jxr_linenumber" name="L961" href="#L961">961</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L962" href="#L962">962</a> <em 
class="jxr_javadoccomment">      * @see Context.Builder#debug()</em>
+<a class="jxr_linenumber" name="L963" href="#L963">963</a> <em 
class="jxr_javadoccomment">      * @return</em>
+<a class="jxr_linenumber" name="L964" href="#L964">964</a> <em 
class="jxr_javadoccomment">      *      &lt;jk&gt;true&lt;/jk&gt; if debug mode 
is enabled.</em>
+<a class="jxr_linenumber" name="L965" href="#L965">965</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L966" href="#L966">966</a>     <strong 
class="jxr_keyword">public</strong> <strong 
class="jxr_keyword">boolean</strong> isDebug() { <strong 
class="jxr_keyword">return</strong> debug; }
+<a class="jxr_linenumber" name="L967" href="#L967">967</a> 
+<a class="jxr_linenumber" name="L968" href="#L968">968</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
+<a class="jxr_linenumber" name="L969" href="#L969">969</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Class&lt;?&gt; onClass, Predicate&lt;A&gt; 
filter) {
+<a class="jxr_linenumber" name="L970" href="#L970">970</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onClass).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L971" href="#L971">971</a>     }
+<a class="jxr_linenumber" name="L972" href="#L972">972</a> 
+<a class="jxr_linenumber" name="L973" href="#L973">973</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
+<a class="jxr_linenumber" name="L974" href="#L974">974</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Constructor&lt;?&gt; onConstructor, 
Predicate&lt;A&gt; filter) {
+<a class="jxr_linenumber" name="L975" href="#L975">975</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onConstructor).map(x -&gt; x.<strong 
class="jxr_keyword">inner</strong>()).filter(x -&gt; 
filter.test(x)).findFirst().orElse(<strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L976" href="#L976">976</a>     }
+<a class="jxr_linenumber" name="L977" href="#L977">977</a> 
+<a class="jxr_linenumber" name="L978" href="#L978">978</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
+<a class="jxr_linenumber" name="L979" href="#L979">979</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Field onField, Predicate&lt;A&gt; filter) {
+<a class="jxr_linenumber" name="L980" href="#L980">980</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onField).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L981" href="#L981">981</a>     }
+<a class="jxr_linenumber" name="L982" href="#L982">982</a> 
+<a class="jxr_linenumber" name="L983" href="#L983">983</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
+<a class="jxr_linenumber" name="L984" href="#L984">984</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastAnnotation(Class&lt;A&gt; type, Method onMethod, Predicate&lt;A&gt; filter) 
{
+<a class="jxr_linenumber" name="L985" href="#L985">985</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().find(type, 
onMethod).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L986" href="#L986">986</a>     }
+<a class="jxr_linenumber" name="L987" href="#L987">987</a> 
+<a class="jxr_linenumber" name="L988" href="#L988">988</a>     @Override <em 
class="jxr_comment">/* Overridden from MetaProvider */</em>
+<a class="jxr_linenumber" name="L989" href="#L989">989</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A 
lastDeclaredAnnotation(Class&lt;A&gt; type, Class&lt;?&gt; onClass, 
Predicate&lt;A&gt; filter) {
+<a class="jxr_linenumber" name="L990" href="#L990">990</a>             <strong 
class="jxr_keyword">return</strong> getAnnotationProvider().findDeclared(type, 
onClass).map(x -&gt; x.<strong class="jxr_keyword">inner</strong>()).filter(x 
-&gt; filter.test(x)).findFirst().orElse(<strong 
class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L991" href="#L991">991</a>     }
+<a class="jxr_linenumber" name="L992" href="#L992">992</a> 
+<a class="jxr_linenumber" name="L993" href="#L993">993</a>     @Override <em 
class="jxr_comment">/* Overridden from Object */</em>
+<a class="jxr_linenumber" name="L994" href="#L994">994</a>     <strong 
class="jxr_keyword">public</strong> String toString() {
+<a class="jxr_linenumber" name="L995" href="#L995">995</a>             <strong 
class="jxr_keyword">return</strong> Utils2.toPropertyMap(<strong 
class="jxr_keyword">this</strong>).asReadableString();
+<a class="jxr_linenumber" name="L996" href="#L996">996</a>     }
+<a class="jxr_linenumber" name="L997" href="#L997">997</a> 
+<a class="jxr_linenumber" name="L998" href="#L998">998</a>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L999" href="#L999">999</a>     <strong 
class="jxr_keyword">private</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; A[] 
declaredAnnotations(Class&lt;A&gt; type, Class&lt;?&gt; onClass) {
+<a class="jxr_linenumber" name="L1000" href="#L1000">1000</a>          <strong 
class="jxr_keyword">return</strong> 
(A[])declaredClassAnnotationCache.get(onClass, type);
+<a class="jxr_linenumber" name="L1001" href="#L1001">1001</a>  }
+<a class="jxr_linenumber" name="L1002" href="#L1002">1002</a> 
+<a class="jxr_linenumber" name="L1003" href="#L1003">1003</a>  <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1004" href="#L1004">1004</a> <em 
class="jxr_javadoccomment">   * Perform optional initialization on builder 
before it is used.</em>
+<a class="jxr_linenumber" name="L1005" href="#L1005">1005</a> <em 
class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="L1006" href="#L1006">1006</a> <em 
class="jxr_javadoccomment">   * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L1007" href="#L1007">1007</a> <em 
class="jxr_javadoccomment">   * Default behavior is a no-op.</em>
 <a class="jxr_linenumber" name="L1008" href="#L1008">1008</a> <em 
class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="L1009" href="#L1009">1009</a> <em 
class="jxr_javadoccomment">   * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L1010" href="#L1010">1010</a> <em 
class="jxr_javadoccomment">   * Default behavior is a no-op.</em>
-<a class="jxr_linenumber" name="L1011" href="#L1011">1011</a> <em 
class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="L1012" href="#L1012">1012</a> <em 
class="jxr_javadoccomment">   * @param builder The builder to initialize.</em>
-<a class="jxr_linenumber" name="L1013" href="#L1013">1013</a> <em 
class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="L1014" href="#L1014">1014</a>  <strong 
class="jxr_keyword">protected</strong> <strong 
class="jxr_keyword">void</strong> init(Builder builder) {}
-<a class="jxr_linenumber" name="L1015" href="#L1015">1015</a> 
-<a class="jxr_linenumber" name="L1016" href="#L1016">1016</a>  <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L1017" href="#L1017">1017</a> <em 
class="jxr_javadoccomment">   * Returns the properties on this bean as a map 
for debugging.</em>
-<a class="jxr_linenumber" name="L1018" href="#L1018">1018</a> <em 
class="jxr_javadoccomment">   *</em>
-<a class="jxr_linenumber" name="L1019" href="#L1019">1019</a> <em 
class="jxr_javadoccomment">   * @return The properties on this bean as a map 
for debugging.</em>
-<a class="jxr_linenumber" name="L1020" href="#L1020">1020</a> <em 
class="jxr_javadoccomment">   */</em>
-<a class="jxr_linenumber" name="L1021" href="#L1021">1021</a>  <strong 
class="jxr_keyword">protected</strong> <a name="JsonMap" 
href="../../../org/apache/juneau/collections/JsonMap.html#JsonMap">JsonMap</a> 
properties() {
-<a class="jxr_linenumber" name="L1022" href="#L1022">1022</a>          <strong 
class="jxr_keyword">return</strong> filteredMap(<span 
class="jxr_string">"annotations"</span>, annotations, <span 
class="jxr_string">"debug"</span>, debug);
-<a class="jxr_linenumber" name="L1023" href="#L1023">1023</a>  }
-<a class="jxr_linenumber" name="L1024" href="#L1024">1024</a> }
+<a class="jxr_linenumber" name="L1009" href="#L1009">1009</a> <em 
class="jxr_javadoccomment">   * @param builder The builder to initialize.</em>
+<a class="jxr_linenumber" name="L1010" href="#L1010">1010</a> <em 
class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="L1011" href="#L1011">1011</a>  <strong 
class="jxr_keyword">protected</strong> <strong 
class="jxr_keyword">void</strong> init(Builder builder) {}
+<a class="jxr_linenumber" name="L1012" href="#L1012">1012</a> 
+<a class="jxr_linenumber" name="L1013" href="#L1013">1013</a>  <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L1014" href="#L1014">1014</a> <em 
class="jxr_javadoccomment">   * Returns the properties on this bean as a map 
for debugging.</em>
+<a class="jxr_linenumber" name="L1015" href="#L1015">1015</a> <em 
class="jxr_javadoccomment">   *</em>
+<a class="jxr_linenumber" name="L1016" href="#L1016">1016</a> <em 
class="jxr_javadoccomment">   * @return The properties on this bean as a map 
for debugging.</em>
+<a class="jxr_linenumber" name="L1017" href="#L1017">1017</a> <em 
class="jxr_javadoccomment">   */</em>
+<a class="jxr_linenumber" name="L1018" href="#L1018">1018</a>  <strong 
class="jxr_keyword">protected</strong> <a name="JsonMap" 
href="../../../org/apache/juneau/collections/JsonMap.html#JsonMap">JsonMap</a> 
properties() {
+<a class="jxr_linenumber" name="L1019" href="#L1019">1019</a>          <strong 
class="jxr_keyword">return</strong> filteredMap(<span 
class="jxr_string">"annotations"</span>, annotations, <span 
class="jxr_string">"debug"</span>, debug);
+<a class="jxr_linenumber" name="L1020" href="#L1020">1020</a>  }
+<a class="jxr_linenumber" name="L1021" href="#L1021">1021</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/AnnotationProvider2.html 
b/site/xref/org/apache/juneau/common/reflect/AnnotationProvider2.html
index f13a96fc12..d4f1ce628a 100644
--- a/site/xref/org/apache/juneau/common/reflect/AnnotationProvider2.html
+++ b/site/xref/org/apache/juneau/common/reflect/AnnotationProvider2.html
@@ -280,163 +280,205 @@
 <a class="jxr_linenumber" name="L272" href="#L272">272</a>             <strong 
class="jxr_keyword">return</strong> classDeclaredAnnotations.get(onClass);
 <a class="jxr_linenumber" name="L273" href="#L273">273</a>     }
 <a class="jxr_linenumber" name="L274" href="#L274">274</a> 
-<a class="jxr_linenumber" name="L275" href="#L275">275</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; findDeclared(Class&lt;A&gt; type, 
Class&lt;?&gt; onClass) {
-<a class="jxr_linenumber" name="L276" href="#L276">276</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
-<a class="jxr_linenumber" name="L277" href="#L277">277</a>             
assertArgNotNull(<span class="jxr_string">"onClass"</span>, onClass);
-<a class="jxr_linenumber" name="L278" href="#L278">278</a>             <strong 
class="jxr_keyword">return</strong> findDeclared(onClass).stream()
-<a class="jxr_linenumber" name="L279" href="#L279">279</a>                     
.filter(a -&gt; a.isType(type))
-<a class="jxr_linenumber" name="L280" href="#L280">280</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
-<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>     <strong 
class="jxr_keyword">public</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; find(Method onMethod) {
-<a class="jxr_linenumber" name="L284" href="#L284">284</a>             
assertArgNotNull(<span class="jxr_string">"onMethod"</span>, onMethod);
-<a class="jxr_linenumber" name="L285" href="#L285">285</a>             <strong 
class="jxr_keyword">return</strong> methodAnnotations.get(onMethod);
-<a class="jxr_linenumber" name="L286" href="#L286">286</a>     }
-<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
-<a class="jxr_linenumber" name="L288" href="#L288">288</a>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L289" href="#L289">289</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; find(Class&lt;A&gt; type, Method 
onMethod) {
-<a class="jxr_linenumber" name="L290" href="#L290">290</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
-<a class="jxr_linenumber" name="L291" href="#L291">291</a>             
assertArgNotNull(<span class="jxr_string">"onMethod"</span>, onMethod);
-<a class="jxr_linenumber" name="L292" href="#L292">292</a>             <strong 
class="jxr_keyword">return</strong> find(onMethod).stream()
-<a class="jxr_linenumber" name="L293" href="#L293">293</a>                     
.filter(a -&gt; a.isType(type))
-<a class="jxr_linenumber" name="L294" href="#L294">294</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
-<a class="jxr_linenumber" name="L295" href="#L295">295</a>     }
-<a class="jxr_linenumber" name="L296" href="#L296">296</a> 
-<a class="jxr_linenumber" name="L297" href="#L297">297</a>     <strong 
class="jxr_keyword">public</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; find(Field onField) {
-<a class="jxr_linenumber" name="L298" href="#L298">298</a>             
assertArgNotNull(<span class="jxr_string">"onField"</span>, onField);
-<a class="jxr_linenumber" name="L299" href="#L299">299</a>             <strong 
class="jxr_keyword">return</strong> fieldAnnotations.get(onField);
-<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>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L303" href="#L303">303</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; find(Class&lt;A&gt; type, Field onField) {
-<a class="jxr_linenumber" name="L304" href="#L304">304</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
-<a class="jxr_linenumber" name="L305" href="#L305">305</a>             
assertArgNotNull(<span class="jxr_string">"onField"</span>, onField);
-<a class="jxr_linenumber" name="L306" href="#L306">306</a>             <strong 
class="jxr_keyword">return</strong> find(onField).stream()
-<a class="jxr_linenumber" name="L307" href="#L307">307</a>                     
.filter(a -&gt; a.isType(type))
-<a class="jxr_linenumber" name="L308" href="#L308">308</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
-<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>     <strong 
class="jxr_keyword">public</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; find(Constructor&lt;?&gt; 
onConstructor) {
-<a class="jxr_linenumber" name="L312" href="#L312">312</a>             
assertArgNotNull(<span class="jxr_string">"onConstructor"</span>, 
onConstructor);
-<a class="jxr_linenumber" name="L313" href="#L313">313</a>             <strong 
class="jxr_keyword">return</strong> constructorAnnotations.get(onConstructor);
-<a class="jxr_linenumber" name="L314" href="#L314">314</a>     }
-<a class="jxr_linenumber" name="L315" href="#L315">315</a> 
+<a class="jxr_linenumber" name="L275" href="#L275">275</a>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L276" href="#L276">276</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; findDeclared(Class&lt;A&gt; type, 
Class&lt;?&gt; onClass) {
+<a class="jxr_linenumber" name="L277" href="#L277">277</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
+<a class="jxr_linenumber" name="L278" href="#L278">278</a>             
assertArgNotNull(<span class="jxr_string">"onClass"</span>, onClass);
+<a class="jxr_linenumber" name="L279" href="#L279">279</a>             <strong 
class="jxr_keyword">return</strong> findDeclared(onClass).stream()
+<a class="jxr_linenumber" name="L280" href="#L280">280</a>                     
.filter(a -&gt; a.isType(type))
+<a class="jxr_linenumber" name="L281" href="#L281">281</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
+<a class="jxr_linenumber" name="L282" href="#L282">282</a>     }
+<a class="jxr_linenumber" name="L283" href="#L283">283</a> 
+<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">      * Finds all declared annotations on the 
specified class in parent-to-child order (reversed).</em>
+<a class="jxr_linenumber" name="L286" href="#L286">286</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L287" href="#L287">287</a> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L288" href="#L288">288</a> <em 
class="jxr_javadoccomment">      * This method returns annotations in the 
opposite order from {@link #findDeclared(Class)}.</em>
+<a class="jxr_linenumber" name="L289" href="#L289">289</a> <em 
class="jxr_javadoccomment">      * It processes parent/declared annotations 
first (lower priority), then runtime annotations (higher priority).</em>
+<a class="jxr_linenumber" name="L290" href="#L290">290</a> <em 
class="jxr_javadoccomment">      * This is useful when you want to process 
multiple annotation values where child annotations</em>
+<a class="jxr_linenumber" name="L291" href="#L291">291</a> <em 
class="jxr_javadoccomment">      * can override values from parent 
annotations.</em>
+<a class="jxr_linenumber" name="L292" href="#L292">292</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L293" href="#L293">293</a> <em 
class="jxr_javadoccomment">      * @param onClass The class to search on.</em>
+<a class="jxr_linenumber" name="L294" href="#L294">294</a> <em 
class="jxr_javadoccomment">      * @return A stream of {@link AnnotationInfo} 
objects in parent-to-child order.</em>
+<a class="jxr_linenumber" name="L295" href="#L295">295</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L296" href="#L296">296</a>     <strong 
class="jxr_keyword">public</strong> 
Stream&lt;AnnotationInfo&lt;Annotation&gt;&gt; 
findDeclaredParentFirst(Class&lt;?&gt; onClass) {
+<a class="jxr_linenumber" name="L297" href="#L297">297</a>             
assertArgNotNull(<span class="jxr_string">"onClass"</span>, onClass);
+<a class="jxr_linenumber" name="L298" href="#L298">298</a>             <strong 
class="jxr_keyword">var</strong> list = classDeclaredAnnotations.get(onClass);
+<a class="jxr_linenumber" name="L299" href="#L299">299</a>             <em 
class="jxr_comment">// Iterate backwards to get parent-to-child order</em>
+<a class="jxr_linenumber" name="L300" href="#L300">300</a>             <strong 
class="jxr_keyword">return</strong> java.util.stream.IntStream.range(0, 
list.size())
+<a class="jxr_linenumber" name="L301" href="#L301">301</a>                     
.map(i -&gt; list.size() - 1 - i)
+<a class="jxr_linenumber" name="L302" href="#L302">302</a>                     
.mapToObj(list::get);
+<a class="jxr_linenumber" name="L303" href="#L303">303</a>     }
+<a class="jxr_linenumber" name="L304" href="#L304">304</a> 
+<a class="jxr_linenumber" name="L305" href="#L305">305</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L306" href="#L306">306</a> <em 
class="jxr_javadoccomment">      * Finds all declared annotations of the 
specified type on the specified class in parent-to-child order (reversed).</em>
+<a class="jxr_linenumber" name="L307" href="#L307">307</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L308" href="#L308">308</a> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L309" href="#L309">309</a> <em 
class="jxr_javadoccomment">      * This method returns annotations in the 
opposite order from {@link #findDeclared(Class, Class)}.</em>
+<a class="jxr_linenumber" name="L310" href="#L310">310</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L311" href="#L311">311</a> <em 
class="jxr_javadoccomment">      * @param &lt;A&gt; The annotation type to 
find.</em>
+<a class="jxr_linenumber" name="L312" href="#L312">312</a> <em 
class="jxr_javadoccomment">      * @param type The annotation type to find.</em>
+<a class="jxr_linenumber" name="L313" href="#L313">313</a> <em 
class="jxr_javadoccomment">      * @param onClass The class to search on.</em>
+<a class="jxr_linenumber" name="L314" href="#L314">314</a> <em 
class="jxr_javadoccomment">      * @return A stream of {@link AnnotationInfo} 
objects in parent-to-child order.</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>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L317" href="#L317">317</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; find(Class&lt;A&gt; type, 
Constructor&lt;?&gt; onConstructor) {
+<a class="jxr_linenumber" name="L317" href="#L317">317</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; findDeclaredParentFirst(Class&lt;A&gt; 
type, Class&lt;?&gt; onClass) {
 <a class="jxr_linenumber" name="L318" href="#L318">318</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
-<a class="jxr_linenumber" name="L319" href="#L319">319</a>             
assertArgNotNull(<span class="jxr_string">"onConstructor"</span>, 
onConstructor);
-<a class="jxr_linenumber" name="L320" href="#L320">320</a>             <strong 
class="jxr_keyword">return</strong> find(onConstructor).stream()
+<a class="jxr_linenumber" name="L319" href="#L319">319</a>             
assertArgNotNull(<span class="jxr_string">"onClass"</span>, onClass);
+<a class="jxr_linenumber" name="L320" href="#L320">320</a>             <strong 
class="jxr_keyword">return</strong> findDeclaredParentFirst(onClass)
 <a class="jxr_linenumber" name="L321" href="#L321">321</a>                     
.filter(a -&gt; a.isType(type))
 <a class="jxr_linenumber" name="L322" href="#L322">322</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
 <a class="jxr_linenumber" name="L323" href="#L323">323</a>     }
 <a class="jxr_linenumber" name="L324" href="#L324">324</a> 
-<a class="jxr_linenumber" name="L325" href="#L325">325</a>     <em 
class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L326" href="#L326">326</a>     <em 
class="jxr_comment">// Private implementation</em>
-<a class="jxr_linenumber" name="L327" href="#L327">327</a>     <em 
class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L328" href="#L328">328</a> 
-<a class="jxr_linenumber" name="L329" href="#L329">329</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L330" href="#L330">330</a> <em 
class="jxr_javadoccomment">      * Finds all annotations on the specified class 
in child-to-parent order.</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> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L333" href="#L333">333</a> <em 
class="jxr_javadoccomment">      * Annotations are appended in the following 
order:</em>
-<a class="jxr_linenumber" name="L334" href="#L334">334</a> <em 
class="jxr_javadoccomment">      * &lt;ol&gt;</em>
-<a class="jxr_linenumber" name="L335" href="#L335">335</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On this class.</em>
-<a class="jxr_linenumber" name="L336" href="#L336">336</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On parent classes ordered 
child-to-parent.</em>
-<a class="jxr_linenumber" name="L337" href="#L337">337</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On interfaces ordered 
child-to-parent.</em>
-<a class="jxr_linenumber" name="L338" href="#L338">338</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On the package of this 
class.</em>
-<a class="jxr_linenumber" name="L339" href="#L339">339</a> <em 
class="jxr_javadoccomment">      * &lt;/ol&gt;</em>
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L341" href="#L341">341</a> <em 
class="jxr_javadoccomment">      * @param forClass The class to find 
annotations on.</em>
-<a class="jxr_linenumber" name="L342" href="#L342">342</a> <em 
class="jxr_javadoccomment">      * @return A list of {@link AnnotationInfo} 
objects in child-to-parent order.</em>
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> <em 
class="jxr_javadoccomment">      */</em>
-<a class="jxr_linenumber" name="L344" href="#L344">344</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; 
findClassAnnotations(Class&lt;?&gt; forClass) {
-<a class="jxr_linenumber" name="L345" href="#L345">345</a>             <strong 
class="jxr_keyword">var</strong> ci = ClassInfo.of(forClass);
-<a class="jxr_linenumber" name="L346" href="#L346">346</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
-<a class="jxr_linenumber" name="L347" href="#L347">347</a> 
-<a class="jxr_linenumber" name="L348" href="#L348">348</a>             <em 
class="jxr_comment">// On all parent classes and interfaces (properly traversed 
to avoid duplicates)</em>
-<a class="jxr_linenumber" name="L349" href="#L349">349</a>             <strong 
class="jxr_keyword">var</strong> parentsAndInterfaces = 
ci.getParentsAndInterfaces();
-<a class="jxr_linenumber" name="L350" href="#L350">350</a>             <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 
0; i &lt; parentsAndInterfaces.size(); i++)
-<a class="jxr_linenumber" name="L351" href="#L351">351</a>                     
findDeclaredAnnotations(list, parentsAndInterfaces.get(i).<strong 
class="jxr_keyword">inner</strong>());
+<a class="jxr_linenumber" name="L325" href="#L325">325</a>     <strong 
class="jxr_keyword">public</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; find(Method onMethod) {
+<a class="jxr_linenumber" name="L326" href="#L326">326</a>             
assertArgNotNull(<span class="jxr_string">"onMethod"</span>, onMethod);
+<a class="jxr_linenumber" name="L327" href="#L327">327</a>             <strong 
class="jxr_keyword">return</strong> methodAnnotations.get(onMethod);
+<a class="jxr_linenumber" name="L328" href="#L328">328</a>     }
+<a class="jxr_linenumber" name="L329" href="#L329">329</a> 
+<a class="jxr_linenumber" name="L330" href="#L330">330</a>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L331" href="#L331">331</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; find(Class&lt;A&gt; type, Method 
onMethod) {
+<a class="jxr_linenumber" name="L332" href="#L332">332</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
+<a class="jxr_linenumber" name="L333" href="#L333">333</a>             
assertArgNotNull(<span class="jxr_string">"onMethod"</span>, onMethod);
+<a class="jxr_linenumber" name="L334" href="#L334">334</a>             <strong 
class="jxr_keyword">return</strong> find(onMethod).stream()
+<a class="jxr_linenumber" name="L335" href="#L335">335</a>                     
.filter(a -&gt; a.isType(type))
+<a class="jxr_linenumber" name="L336" href="#L336">336</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
+<a class="jxr_linenumber" name="L337" href="#L337">337</a>     }
+<a class="jxr_linenumber" name="L338" href="#L338">338</a> 
+<a class="jxr_linenumber" name="L339" href="#L339">339</a>     <strong 
class="jxr_keyword">public</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; find(Field onField) {
+<a class="jxr_linenumber" name="L340" href="#L340">340</a>             
assertArgNotNull(<span class="jxr_string">"onField"</span>, onField);
+<a class="jxr_linenumber" name="L341" href="#L341">341</a>             <strong 
class="jxr_keyword">return</strong> fieldAnnotations.get(onField);
+<a class="jxr_linenumber" name="L342" href="#L342">342</a>     }
+<a class="jxr_linenumber" name="L343" href="#L343">343</a> 
+<a class="jxr_linenumber" name="L344" href="#L344">344</a>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L345" href="#L345">345</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; find(Class&lt;A&gt; type, Field onField) {
+<a class="jxr_linenumber" name="L346" href="#L346">346</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
+<a class="jxr_linenumber" name="L347" href="#L347">347</a>             
assertArgNotNull(<span class="jxr_string">"onField"</span>, onField);
+<a class="jxr_linenumber" name="L348" href="#L348">348</a>             <strong 
class="jxr_keyword">return</strong> find(onField).stream()
+<a class="jxr_linenumber" name="L349" href="#L349">349</a>                     
.filter(a -&gt; a.isType(type))
+<a class="jxr_linenumber" name="L350" href="#L350">350</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
+<a class="jxr_linenumber" name="L351" href="#L351">351</a>     }
 <a class="jxr_linenumber" name="L352" href="#L352">352</a> 
-<a class="jxr_linenumber" name="L353" href="#L353">353</a>             <em 
class="jxr_comment">// On the package of this class</em>
-<a class="jxr_linenumber" name="L354" href="#L354">354</a>             <strong 
class="jxr_keyword">var</strong> pkg = ci.getPackage();
-<a class="jxr_linenumber" name="L355" href="#L355">355</a>             <strong 
class="jxr_keyword">if</strong> (nn(pkg)) {
-<a class="jxr_linenumber" name="L356" href="#L356">356</a>                     
<strong class="jxr_keyword">var</strong> pi = PackageInfo.of(pkg.<strong 
class="jxr_keyword">inner</strong>());
-<a class="jxr_linenumber" name="L357" href="#L357">357</a>                     
<strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a : pkg.<strong 
class="jxr_keyword">inner</strong>().getAnnotations())
-<a class="jxr_linenumber" name="L358" href="#L358">358</a>                     
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a2 : splitRepeated(a))
-<a class="jxr_linenumber" name="L359" href="#L359">359</a>                     
                list.add(AnnotationInfo.of(pi, a2));
-<a class="jxr_linenumber" name="L360" href="#L360">360</a>             }
-<a class="jxr_linenumber" name="L361" href="#L361">361</a> 
-<a class="jxr_linenumber" name="L362" href="#L362">362</a>             <strong 
class="jxr_keyword">return</strong> u(list);
-<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>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; 
findClassDeclaredAnnotations(Class&lt;?&gt; forClass) {
-<a class="jxr_linenumber" name="L366" href="#L366">366</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
-<a class="jxr_linenumber" name="L367" href="#L367">367</a> 
-<a class="jxr_linenumber" name="L368" href="#L368">368</a>             <em 
class="jxr_comment">// On this class</em>
-<a class="jxr_linenumber" name="L369" href="#L369">369</a>             
findDeclaredAnnotations(list, forClass);
+<a class="jxr_linenumber" name="L353" href="#L353">353</a>     <strong 
class="jxr_keyword">public</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; find(Constructor&lt;?&gt; 
onConstructor) {
+<a class="jxr_linenumber" name="L354" href="#L354">354</a>             
assertArgNotNull(<span class="jxr_string">"onConstructor"</span>, 
onConstructor);
+<a class="jxr_linenumber" name="L355" href="#L355">355</a>             <strong 
class="jxr_keyword">return</strong> constructorAnnotations.get(onConstructor);
+<a class="jxr_linenumber" name="L356" href="#L356">356</a>     }
+<a class="jxr_linenumber" name="L357" href="#L357">357</a> 
+<a class="jxr_linenumber" name="L358" href="#L358">358</a>     
@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L359" href="#L359">359</a>     <strong 
class="jxr_keyword">public</strong> &lt;A <strong 
class="jxr_keyword">extends</strong> Annotation&gt; 
Stream&lt;AnnotationInfo&lt;A&gt;&gt; find(Class&lt;A&gt; type, 
Constructor&lt;?&gt; onConstructor) {
+<a class="jxr_linenumber" name="L360" href="#L360">360</a>             
assertArgNotNull(<span class="jxr_string">"type"</span>, type);
+<a class="jxr_linenumber" name="L361" href="#L361">361</a>             
assertArgNotNull(<span class="jxr_string">"onConstructor"</span>, 
onConstructor);
+<a class="jxr_linenumber" name="L362" href="#L362">362</a>             <strong 
class="jxr_keyword">return</strong> find(onConstructor).stream()
+<a class="jxr_linenumber" name="L363" href="#L363">363</a>                     
.filter(a -&gt; a.isType(type))
+<a class="jxr_linenumber" name="L364" href="#L364">364</a>                     
.map(a -&gt; (AnnotationInfo&lt;A&gt;)a);
+<a class="jxr_linenumber" name="L365" href="#L365">365</a>     }
+<a class="jxr_linenumber" name="L366" href="#L366">366</a> 
+<a class="jxr_linenumber" name="L367" href="#L367">367</a>     <em 
class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L368" href="#L368">368</a>     <em 
class="jxr_comment">// Private implementation</em>
+<a class="jxr_linenumber" name="L369" href="#L369">369</a>     <em 
class="jxr_comment">//-----------------------------------------------------------------------------------------------------------------</em>
 <a class="jxr_linenumber" name="L370" href="#L370">370</a> 
-<a class="jxr_linenumber" name="L371" href="#L371">371</a>             <strong 
class="jxr_keyword">return</strong> u(list);
-<a class="jxr_linenumber" name="L372" href="#L372">372</a>     }
-<a class="jxr_linenumber" name="L373" href="#L373">373</a> 
-<a class="jxr_linenumber" name="L374" href="#L374">374</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; findMethodAnnotations(Method 
forMethod) {
-<a class="jxr_linenumber" name="L375" href="#L375">375</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
-<a class="jxr_linenumber" name="L376" href="#L376">376</a> 
-<a class="jxr_linenumber" name="L377" href="#L377">377</a>             
MethodInfo.of(forMethod).getMatchingMethods().forEach(m -&gt; {
-<a class="jxr_linenumber" name="L378" href="#L378">378</a>                     
runtimeAnnotations.findMatching(m.<strong 
class="jxr_keyword">inner</strong>()).forEach(a -&gt; 
list.add(AnnotationInfo.of(m, a)));
-<a class="jxr_linenumber" name="L379" href="#L379">379</a>                     
list.addAll(m.getDeclaredAnnotationInfos());
-<a class="jxr_linenumber" name="L380" href="#L380">380</a>             });
-<a class="jxr_linenumber" name="L381" href="#L381">381</a> 
-<a class="jxr_linenumber" name="L382" href="#L382">382</a>             <strong 
class="jxr_keyword">return</strong> u(list);
-<a class="jxr_linenumber" name="L383" href="#L383">383</a>     }
-<a class="jxr_linenumber" name="L384" href="#L384">384</a> 
-<a class="jxr_linenumber" name="L385" href="#L385">385</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; findFieldAnnotations(Field 
forField) {
-<a class="jxr_linenumber" name="L386" href="#L386">386</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
-<a class="jxr_linenumber" name="L387" href="#L387">387</a> 
-<a class="jxr_linenumber" name="L388" href="#L388">388</a>             
FieldInfo fi = FieldInfo.of(forField);
-<a class="jxr_linenumber" name="L389" href="#L389">389</a>             
runtimeAnnotations.findMatching(forField).forEach(a -&gt; 
list.add(AnnotationInfo.of(fi, a)));
-<a class="jxr_linenumber" name="L390" href="#L390">390</a>             
list.addAll(fi.getAnnotationInfos());
-<a class="jxr_linenumber" name="L391" href="#L391">391</a> 
-<a class="jxr_linenumber" name="L392" href="#L392">392</a>             <strong 
class="jxr_keyword">return</strong> u(list);
-<a class="jxr_linenumber" name="L393" href="#L393">393</a>     }
+<a class="jxr_linenumber" name="L371" href="#L371">371</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L372" href="#L372">372</a> <em 
class="jxr_javadoccomment">      * Finds all annotations on the specified class 
in child-to-parent order.</em>
+<a class="jxr_linenumber" name="L373" href="#L373">373</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L374" href="#L374">374</a> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L375" href="#L375">375</a> <em 
class="jxr_javadoccomment">      * Annotations are appended in the following 
order:</em>
+<a class="jxr_linenumber" name="L376" href="#L376">376</a> <em 
class="jxr_javadoccomment">      * &lt;ol&gt;</em>
+<a class="jxr_linenumber" name="L377" href="#L377">377</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On this class.</em>
+<a class="jxr_linenumber" name="L378" href="#L378">378</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On parent classes ordered 
child-to-parent.</em>
+<a class="jxr_linenumber" name="L379" href="#L379">379</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On interfaces ordered 
child-to-parent.</em>
+<a class="jxr_linenumber" name="L380" href="#L380">380</a> <em 
class="jxr_javadoccomment">      *      &lt;li&gt;On the package of this 
class.</em>
+<a class="jxr_linenumber" name="L381" href="#L381">381</a> <em 
class="jxr_javadoccomment">      * &lt;/ol&gt;</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> <em 
class="jxr_javadoccomment">      * @param forClass The class to find 
annotations on.</em>
+<a class="jxr_linenumber" name="L384" href="#L384">384</a> <em 
class="jxr_javadoccomment">      * @return A list of {@link AnnotationInfo} 
objects in child-to-parent order.</em>
+<a class="jxr_linenumber" name="L385" href="#L385">385</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L386" href="#L386">386</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; 
findClassAnnotations(Class&lt;?&gt; forClass) {
+<a class="jxr_linenumber" name="L387" href="#L387">387</a>             <strong 
class="jxr_keyword">var</strong> ci = ClassInfo.of(forClass);
+<a class="jxr_linenumber" name="L388" href="#L388">388</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
+<a class="jxr_linenumber" name="L389" href="#L389">389</a> 
+<a class="jxr_linenumber" name="L390" href="#L390">390</a>             <em 
class="jxr_comment">// On all parent classes and interfaces (properly traversed 
to avoid duplicates)</em>
+<a class="jxr_linenumber" name="L391" href="#L391">391</a>             <strong 
class="jxr_keyword">var</strong> parentsAndInterfaces = 
ci.getParentsAndInterfaces();
+<a class="jxr_linenumber" name="L392" href="#L392">392</a>             <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 
0; i &lt; parentsAndInterfaces.size(); i++)
+<a class="jxr_linenumber" name="L393" href="#L393">393</a>                     
findDeclaredAnnotations(list, parentsAndInterfaces.get(i).<strong 
class="jxr_keyword">inner</strong>());
 <a class="jxr_linenumber" name="L394" href="#L394">394</a> 
-<a class="jxr_linenumber" name="L395" href="#L395">395</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; 
findConstructorAnnotations(Constructor&lt;?&gt; forConstructor) {
-<a class="jxr_linenumber" name="L396" href="#L396">396</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
-<a class="jxr_linenumber" name="L397" href="#L397">397</a> 
-<a class="jxr_linenumber" name="L398" href="#L398">398</a>             
ConstructorInfo ci = ConstructorInfo.of(forConstructor);
-<a class="jxr_linenumber" name="L399" href="#L399">399</a>             
runtimeAnnotations.findMatching(forConstructor).forEach(a -&gt; 
list.add(AnnotationInfo.of(ci, a)));
-<a class="jxr_linenumber" name="L400" href="#L400">400</a>             
list.addAll(ci.getDeclaredAnnotationInfos());
-<a class="jxr_linenumber" name="L401" href="#L401">401</a> 
-<a class="jxr_linenumber" name="L402" href="#L402">402</a>             <strong 
class="jxr_keyword">return</strong> u(list);
-<a class="jxr_linenumber" name="L403" href="#L403">403</a>     }
-<a class="jxr_linenumber" name="L404" href="#L404">404</a> 
-<a class="jxr_linenumber" name="L405" href="#L405">405</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L406" href="#L406">406</a> <em 
class="jxr_javadoccomment">      * Finds all declared annotations on the 
specified class and appends them to the list.</em>
-<a class="jxr_linenumber" name="L407" href="#L407">407</a> <em 
class="jxr_javadoccomment">      *</em>
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> <em 
class="jxr_javadoccomment">      * @param appendTo The list to append to.</em>
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> <em 
class="jxr_javadoccomment">      * @param forClass The class to find declared 
annotations on.</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>     <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> 
findDeclaredAnnotations(List&lt;AnnotationInfo&lt;Annotation&gt;&gt; appendTo, 
Class&lt;?&gt; forClass) {
-<a class="jxr_linenumber" name="L412" href="#L412">412</a>             <strong 
class="jxr_keyword">var</strong> ci = ClassInfo.of(forClass);
-<a class="jxr_linenumber" name="L413" href="#L413">413</a>             
runtimeAnnotations.findMatching(forClass).forEach(x -&gt; 
appendTo.add(AnnotationInfo.of(ClassInfo.of(forClass), x)));
-<a class="jxr_linenumber" name="L414" href="#L414">414</a>             <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> a : 
forClass.getDeclaredAnnotations())
-<a class="jxr_linenumber" name="L415" href="#L415">415</a>                     
<strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a2 : splitRepeated(a))
-<a class="jxr_linenumber" name="L416" href="#L416">416</a>                     
        appendTo.add(AnnotationInfo.of(ci, a2));
-<a class="jxr_linenumber" name="L417" href="#L417">417</a>     }
+<a class="jxr_linenumber" name="L395" href="#L395">395</a>             <em 
class="jxr_comment">// On the package of this class</em>
+<a class="jxr_linenumber" name="L396" href="#L396">396</a>             <strong 
class="jxr_keyword">var</strong> pkg = ci.getPackage();
+<a class="jxr_linenumber" name="L397" href="#L397">397</a>             <strong 
class="jxr_keyword">if</strong> (nn(pkg)) {
+<a class="jxr_linenumber" name="L398" href="#L398">398</a>                     
<strong class="jxr_keyword">var</strong> pi = PackageInfo.of(pkg.<strong 
class="jxr_keyword">inner</strong>());
+<a class="jxr_linenumber" name="L399" href="#L399">399</a>                     
<strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a : pkg.<strong 
class="jxr_keyword">inner</strong>().getAnnotations())
+<a class="jxr_linenumber" name="L400" href="#L400">400</a>                     
        <strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a2 : splitRepeated(a))
+<a class="jxr_linenumber" name="L401" href="#L401">401</a>                     
                list.add(AnnotationInfo.of(pi, a2));
+<a class="jxr_linenumber" name="L402" href="#L402">402</a>             }
+<a class="jxr_linenumber" name="L403" href="#L403">403</a> 
+<a class="jxr_linenumber" name="L404" href="#L404">404</a>             <strong 
class="jxr_keyword">return</strong> u(list);
+<a class="jxr_linenumber" name="L405" href="#L405">405</a>     }
+<a class="jxr_linenumber" name="L406" href="#L406">406</a> 
+<a class="jxr_linenumber" name="L407" href="#L407">407</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; 
findClassDeclaredAnnotations(Class&lt;?&gt; forClass) {
+<a class="jxr_linenumber" name="L408" href="#L408">408</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
+<a class="jxr_linenumber" name="L409" href="#L409">409</a> 
+<a class="jxr_linenumber" name="L410" href="#L410">410</a>             <em 
class="jxr_comment">// On this class</em>
+<a class="jxr_linenumber" name="L411" href="#L411">411</a>             
findDeclaredAnnotations(list, forClass);
+<a class="jxr_linenumber" name="L412" href="#L412">412</a> 
+<a class="jxr_linenumber" name="L413" href="#L413">413</a>             <strong 
class="jxr_keyword">return</strong> u(list);
+<a class="jxr_linenumber" name="L414" href="#L414">414</a>     }
+<a class="jxr_linenumber" name="L415" href="#L415">415</a> 
+<a class="jxr_linenumber" name="L416" href="#L416">416</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; findMethodAnnotations(Method 
forMethod) {
+<a class="jxr_linenumber" name="L417" href="#L417">417</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
 <a class="jxr_linenumber" name="L418" href="#L418">418</a> 
-<a class="jxr_linenumber" name="L419" href="#L419">419</a>     <em 
class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L420" href="#L420">420</a> <em 
class="jxr_javadoccomment">      * Finds all annotations on the specified 
package and appends them to the list.</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">      * @param appendTo The list to append to.</em>
-<a class="jxr_linenumber" name="L423" href="#L423">423</a> <em 
class="jxr_javadoccomment">      * @param forPackage The package to find 
annotations on.</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">private</strong> <strong class="jxr_keyword">void</strong> 
findDeclaredAnnotations(List&lt;AnnotationInfo&lt;Annotation&gt;&gt; appendTo, 
Package forPackage) {
-<a class="jxr_linenumber" name="L426" href="#L426">426</a>             <strong 
class="jxr_keyword">var</strong> pi = PackageInfo.of(forPackage);
-<a class="jxr_linenumber" name="L427" href="#L427">427</a>             <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> a : 
forPackage.getAnnotations())
-<a class="jxr_linenumber" name="L428" href="#L428">428</a>                     
<strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a2 : splitRepeated(a))
-<a class="jxr_linenumber" name="L429" href="#L429">429</a>                     
        appendTo.add(AnnotationInfo.of(pi, a2));
-<a class="jxr_linenumber" name="L430" href="#L430">430</a>     }
-<a class="jxr_linenumber" name="L431" href="#L431">431</a> }
+<a class="jxr_linenumber" name="L419" href="#L419">419</a>             
MethodInfo.of(forMethod).getMatchingMethods().forEach(m -&gt; {
+<a class="jxr_linenumber" name="L420" href="#L420">420</a>                     
runtimeAnnotations.findMatching(m.<strong 
class="jxr_keyword">inner</strong>()).forEach(a -&gt; 
list.add(AnnotationInfo.of(m, a)));
+<a class="jxr_linenumber" name="L421" href="#L421">421</a>                     
list.addAll(m.getDeclaredAnnotationInfos());
+<a class="jxr_linenumber" name="L422" href="#L422">422</a>             });
+<a class="jxr_linenumber" name="L423" href="#L423">423</a> 
+<a class="jxr_linenumber" name="L424" href="#L424">424</a>             <strong 
class="jxr_keyword">return</strong> u(list);
+<a class="jxr_linenumber" name="L425" href="#L425">425</a>     }
+<a class="jxr_linenumber" name="L426" href="#L426">426</a> 
+<a class="jxr_linenumber" name="L427" href="#L427">427</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; findFieldAnnotations(Field 
forField) {
+<a class="jxr_linenumber" name="L428" href="#L428">428</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
+<a class="jxr_linenumber" name="L429" href="#L429">429</a> 
+<a class="jxr_linenumber" name="L430" href="#L430">430</a>             
FieldInfo fi = FieldInfo.of(forField);
+<a class="jxr_linenumber" name="L431" href="#L431">431</a>             
runtimeAnnotations.findMatching(forField).forEach(a -&gt; 
list.add(AnnotationInfo.of(fi, a)));
+<a class="jxr_linenumber" name="L432" href="#L432">432</a>             
list.addAll(fi.getAnnotationInfos());
+<a class="jxr_linenumber" name="L433" href="#L433">433</a> 
+<a class="jxr_linenumber" name="L434" href="#L434">434</a>             <strong 
class="jxr_keyword">return</strong> u(list);
+<a class="jxr_linenumber" name="L435" href="#L435">435</a>     }
+<a class="jxr_linenumber" name="L436" href="#L436">436</a> 
+<a class="jxr_linenumber" name="L437" href="#L437">437</a>     <strong 
class="jxr_keyword">private</strong> 
List&lt;AnnotationInfo&lt;Annotation&gt;&gt; 
findConstructorAnnotations(Constructor&lt;?&gt; forConstructor) {
+<a class="jxr_linenumber" name="L438" href="#L438">438</a>             <strong 
class="jxr_keyword">var</strong> list = <strong 
class="jxr_keyword">new</strong> 
ArrayList&lt;AnnotationInfo&lt;Annotation&gt;&gt;();
+<a class="jxr_linenumber" name="L439" href="#L439">439</a> 
+<a class="jxr_linenumber" name="L440" href="#L440">440</a>             
ConstructorInfo ci = ConstructorInfo.of(forConstructor);
+<a class="jxr_linenumber" name="L441" href="#L441">441</a>             
runtimeAnnotations.findMatching(forConstructor).forEach(a -&gt; 
list.add(AnnotationInfo.of(ci, a)));
+<a class="jxr_linenumber" name="L442" href="#L442">442</a>             
list.addAll(ci.getDeclaredAnnotationInfos());
+<a class="jxr_linenumber" name="L443" href="#L443">443</a> 
+<a class="jxr_linenumber" name="L444" href="#L444">444</a>             <strong 
class="jxr_keyword">return</strong> u(list);
+<a class="jxr_linenumber" name="L445" href="#L445">445</a>     }
+<a class="jxr_linenumber" name="L446" href="#L446">446</a> 
+<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">      * Finds all declared annotations on the 
specified class and appends them to the list.</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> <em 
class="jxr_javadoccomment">      * @param appendTo The list to append to.</em>
+<a class="jxr_linenumber" name="L451" href="#L451">451</a> <em 
class="jxr_javadoccomment">      * @param forClass The class to find declared 
annotations on.</em>
+<a class="jxr_linenumber" name="L452" href="#L452">452</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L453" href="#L453">453</a>     <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> 
findDeclaredAnnotations(List&lt;AnnotationInfo&lt;Annotation&gt;&gt; appendTo, 
Class&lt;?&gt; forClass) {
+<a class="jxr_linenumber" name="L454" href="#L454">454</a>             <strong 
class="jxr_keyword">var</strong> ci = ClassInfo.of(forClass);
+<a class="jxr_linenumber" name="L455" href="#L455">455</a>             
runtimeAnnotations.findMatching(forClass).forEach(x -&gt; 
appendTo.add(AnnotationInfo.of(ClassInfo.of(forClass), x)));
+<a class="jxr_linenumber" name="L456" href="#L456">456</a>             <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> a : 
forClass.getDeclaredAnnotations())
+<a class="jxr_linenumber" name="L457" href="#L457">457</a>                     
<strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a2 : splitRepeated(a))
+<a class="jxr_linenumber" name="L458" href="#L458">458</a>                     
        appendTo.add(AnnotationInfo.of(ci, a2));
+<a class="jxr_linenumber" name="L459" href="#L459">459</a>     }
+<a class="jxr_linenumber" name="L460" href="#L460">460</a> 
+<a class="jxr_linenumber" name="L461" href="#L461">461</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L462" href="#L462">462</a> <em 
class="jxr_javadoccomment">      * Finds all annotations on the specified 
package and appends them to the list.</em>
+<a class="jxr_linenumber" name="L463" href="#L463">463</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L464" href="#L464">464</a> <em 
class="jxr_javadoccomment">      * @param appendTo The list to append to.</em>
+<a class="jxr_linenumber" name="L465" href="#L465">465</a> <em 
class="jxr_javadoccomment">      * @param forPackage The package to find 
annotations on.</em>
+<a class="jxr_linenumber" name="L466" href="#L466">466</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L467" href="#L467">467</a>     <strong 
class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> 
findDeclaredAnnotations(List&lt;AnnotationInfo&lt;Annotation&gt;&gt; appendTo, 
Package forPackage) {
+<a class="jxr_linenumber" name="L468" href="#L468">468</a>             <strong 
class="jxr_keyword">var</strong> pi = PackageInfo.of(forPackage);
+<a class="jxr_linenumber" name="L469" href="#L469">469</a>             <strong 
class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> a : 
forPackage.getAnnotations())
+<a class="jxr_linenumber" name="L470" href="#L470">470</a>                     
<strong class="jxr_keyword">for</strong> (<strong 
class="jxr_keyword">var</strong> a2 : splitRepeated(a))
+<a class="jxr_linenumber" name="L471" href="#L471">471</a>                     
        appendTo.add(AnnotationInfo.of(pi, a2));
+<a class="jxr_linenumber" name="L472" href="#L472">472</a>     }
+<a class="jxr_linenumber" name="L473" href="#L473">473</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/utils/PredicateUtils.html 
b/site/xref/org/apache/juneau/common/utils/PredicateUtils.html
index 68cacae71d..75f0a55728 100644
--- a/site/xref/org/apache/juneau/common/utils/PredicateUtils.html
+++ b/site/xref/org/apache/juneau/common/utils/PredicateUtils.html
@@ -132,7 +132,57 @@
 <a class="jxr_linenumber" name="L124" href="#L124">124</a>             <strong 
class="jxr_keyword">if</strong> (test(predicate, value))
 <a class="jxr_linenumber" name="L125" href="#L125">125</a>                     
consumer.accept(value);
 <a class="jxr_linenumber" name="L126" href="#L126">126</a>     }
-<a class="jxr_linenumber" name="L127" href="#L127">127</a> }
+<a class="jxr_linenumber" name="L127" href="#L127">127</a> 
+<a class="jxr_linenumber" name="L128" href="#L128">128</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L129" href="#L129">129</a> <em 
class="jxr_javadoccomment">      * Returns a function that prints the input 
value to stderr and returns it unchanged.</em>
+<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L131" href="#L131">131</a> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L132" href="#L132">132</a> <em 
class="jxr_javadoccomment">      * Useful for debugging streams by inserting 
into a stream pipeline with {@code .map(peek())}.</em>
+<a class="jxr_linenumber" name="L133" href="#L133">133</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L134" href="#L134">134</a> <em 
class="jxr_javadoccomment">      * &lt;h5 
class='section'&gt;Example:&lt;/h5&gt;</em>
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em 
class="jxr_javadoccomment">      * &lt;p class='bjava'&gt;</em>
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> <em 
class="jxr_javadoccomment">      *      list.stream()</em>
+<a class="jxr_linenumber" name="L137" href="#L137">137</a> <em 
class="jxr_javadoccomment">      *              .map(peek())</em>
+<a class="jxr_linenumber" name="L138" href="#L138">138</a> <em 
class="jxr_javadoccomment">      *              .filter(x -&amp;gt; x != 
&lt;jk&gt;null&lt;/jk&gt;)</em>
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> <em 
class="jxr_javadoccomment">      *              
.collect(Collectors.toList());</em>
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> <em 
class="jxr_javadoccomment">      * &lt;/p&gt;</em>
+<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">      * @param &lt;T&gt; The type of value.</em>
+<a class="jxr_linenumber" name="L143" href="#L143">143</a> <em 
class="jxr_javadoccomment">      * @return A function that prints and returns 
the value.</em>
+<a class="jxr_linenumber" name="L144" href="#L144">144</a> <em 
class="jxr_javadoccomment">      */</em>
+<a class="jxr_linenumber" name="L145" href="#L145">145</a>     <strong 
class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> 
&lt;T&gt; Function&lt;T,T&gt; peek() {
+<a class="jxr_linenumber" name="L146" href="#L146">146</a>             <strong 
class="jxr_keyword">return</strong> v -&gt; {
+<a class="jxr_linenumber" name="L147" href="#L147">147</a>                     
System.err.println(v);
+<a class="jxr_linenumber" name="L148" href="#L148">148</a>                     
<strong class="jxr_keyword">return</strong> v;
+<a class="jxr_linenumber" name="L149" href="#L149">149</a>             };
+<a class="jxr_linenumber" name="L150" href="#L150">150</a>     }
+<a class="jxr_linenumber" name="L151" href="#L151">151</a> 
+<a class="jxr_linenumber" name="L152" href="#L152">152</a>     <em 
class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L153" href="#L153">153</a> <em 
class="jxr_javadoccomment">      * Returns a function that prints the input 
value to stderr using a custom formatter and returns it unchanged.</em>
+<a class="jxr_linenumber" name="L154" href="#L154">154</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L155" href="#L155">155</a> <em 
class="jxr_javadoccomment">      * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L156" href="#L156">156</a> <em 
class="jxr_javadoccomment">      * Useful for debugging streams by inserting 
into a stream pipeline with {@code .map(peek(...))}.</em>
+<a class="jxr_linenumber" name="L157" href="#L157">157</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L158" href="#L158">158</a> <em 
class="jxr_javadoccomment">      * &lt;h5 
class='section'&gt;Example:&lt;/h5&gt;</em>
+<a class="jxr_linenumber" name="L159" href="#L159">159</a> <em 
class="jxr_javadoccomment">      * &lt;p class='bjava'&gt;</em>
+<a class="jxr_linenumber" name="L160" href="#L160">160</a> <em 
class="jxr_javadoccomment">      *      list.stream()</em>
+<a class="jxr_linenumber" name="L161" href="#L161">161</a> <em 
class="jxr_javadoccomment">      *              
.map(peek(&lt;js&gt;"Processing: {0}"&lt;/js&gt;, x -&amp;gt; x.getName()))</em>
+<a class="jxr_linenumber" name="L162" href="#L162">162</a> <em 
class="jxr_javadoccomment">      *              .filter(x -&amp;gt; x != 
&lt;jk&gt;null&lt;/jk&gt;)</em>
+<a class="jxr_linenumber" name="L163" href="#L163">163</a> <em 
class="jxr_javadoccomment">      *              
.collect(Collectors.toList());</em>
+<a class="jxr_linenumber" name="L164" href="#L164">164</a> <em 
class="jxr_javadoccomment">      * &lt;/p&gt;</em>
+<a class="jxr_linenumber" name="L165" href="#L165">165</a> <em 
class="jxr_javadoccomment">      *</em>
+<a class="jxr_linenumber" name="L166" href="#L166">166</a> <em 
class="jxr_javadoccomment">      * @param &lt;T&gt; The type of value.</em>
+<a class="jxr_linenumber" name="L167" href="#L167">167</a> <em 
class="jxr_javadoccomment">      * @param message A format string using {@code 
{0}} as placeholder for the formatted value.</em>
+<a class="jxr_linenumber" name="L168" href="#L168">168</a> <em 
class="jxr_javadoccomment">      * @param formatter A function to 
extract/format the value for display.</em>
+<a class="jxr_linenumber" name="L169" href="#L169">169</a> <em 
class="jxr_javadoccomment">      * @return A function that prints and returns 
the value.</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>     <strong 
class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> 
&lt;T&gt; Function&lt;T,T&gt; peek(String message, Function&lt;T,?&gt; 
formatter) {
+<a class="jxr_linenumber" name="L172" href="#L172">172</a>             <strong 
class="jxr_keyword">return</strong> v -&gt; {
+<a class="jxr_linenumber" name="L173" href="#L173">173</a>                     
System.err.println(message.replace(<span class="jxr_string">"{0}"</span>, 
String.valueOf(formatter.apply(v))));
+<a class="jxr_linenumber" name="L174" href="#L174">174</a>                     
<strong class="jxr_keyword">return</strong> v;
+<a class="jxr_linenumber" name="L175" href="#L175">175</a>             };
+<a class="jxr_linenumber" name="L176" href="#L176">176</a>     }
+<a class="jxr_linenumber" name="L177" href="#L177">177</a> }
 </pre>
 <hr/>
 <div id="footer">© 2016–2025 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a></div>


Reply via email to