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

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

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 b85268302e Deploy documentation staging from d63455807acab26ea88bdf27153730009ac2681d d63455807acab26ea88bdf27153730009ac2681d
b85268302e is described below

commit b85268302eb33d5db5136993c5c05ab6d83165e7
Author: github-actions[bot] <gi...@users.noreply.github.com>
AuthorDate: Sat Nov 29 14:55:03 2025 +0000

    Deploy documentation staging from d63455807acab26ea88bdf27153730009ac2681d d63455807acab26ea88bdf27153730009ac2681d
---
 site/xref-test/allclasses-frame.html               |   1 -
 site/xref-test/org/apache/juneau/ComboInput.html   |   2 +-
 .../a/rttests/RoundTripLargeObjects_Test.html      | 267 +++---
 .../juneau/common/utils/FormatString_Test.html     | 429 ----------
 .../org/apache/juneau/common/utils/Utils_Test.html |   4 +-
 .../apache/juneau/common/utils/package-frame.html  |   3 -
 .../juneau/common/utils/package-summary.html       |  55 +-
 .../apache/juneau/rest/annotation/Path_Test.html   | 667 ++++++++-------
 .../client/RestClient_Config_RestClient_Test.html  |   2 +-
 site/xref/allclasses-frame.html                    |   5 -
 site/xref/org/apache/juneau/BasicException.html    | 129 +--
 .../org/apache/juneau/BasicRuntimeException.html   | 269 +++---
 site/xref/org/apache/juneau/BeanSession.html       |   2 +-
 site/xref/org/apache/juneau/ContextSession.html    |   2 +-
 .../org/apache/juneau/assertions/Assertion.html    |   2 +-
 site/xref/org/apache/juneau/bean/LinkString.html   |   2 +-
 .../juneau/common/reflect/ExecutableInfo.html      |   4 +-
 .../apache/juneau/common/utils/FormatString.html   | 737 -----------------
 .../apache/juneau/common/utils/StringFormat.html   |   8 +-
 .../apache/juneau/common/utils/ThrowableUtils.html |  16 +-
 .../apache/juneau/common/utils/package-frame.html  |  15 -
 .../juneau/common/utils/package-summary.html       |  69 +-
 site/xref/org/apache/juneau/cp/Messages.html       |   2 +-
 .../apache/juneau/microservice/Microservice.html   |   2 +-
 .../juneau/microservice/jetty/JettyLogger.html     | 876 ++++++++++----------
 .../org/apache/juneau/parser/ParseException.html   |   2 +-
 .../org/apache/juneau/parser/ParserListener.html   | 115 +--
 .../org/apache/juneau/rest/arg/ArgException.html   | 249 +++---
 .../org/apache/juneau/rest/client/RestClient.html  | 902 ++++++++++-----------
 .../juneau/rest/mock/MockServletRequest.html       |   2 +-
 .../org/apache/juneau/rest/servlet/RestObject.html |   4 +-
 .../apache/juneau/rest/servlet/RestServlet.html    |   4 +-
 .../juneau/rest/swagger/SwaggerException.html      |  21 +-
 .../juneau/serializer/SerializeException.html      |   2 +-
 .../juneau/serializer/SerializerListener.html      |  81 +-
 .../juneau/serializer/SerializerSession.html       |   2 +-
 36 files changed, 1858 insertions(+), 3096 deletions(-)

diff --git a/site/xref-test/allclasses-frame.html b/site/xref-test/allclasses-frame.html
index 97b75b2b5e..5930f090a0 100644
--- a/site/xref-test/allclasses-frame.html
+++ b/site/xref-test/allclasses-frame.html
@@ -950,7 +950,6 @@
                 <li><a href="org/apache/juneau/rest/annotation/FormData_Test.html#FormData_Test" target="classFrame">FormData_Test</a></li>
                 <li><a href="org/apache/juneau/rest/annotation/FormData_Test.html#FormData_Test.A" target="classFrame">FormData_Test.A</a></li>
                 <li><a href="org/apache/juneau/bean/html5/Form_Test.html#Form_Test" target="classFrame">Form_Test</a></li>
-                <li><a href="org/apache/juneau/common/utils/FormatString_Test.html#FormatString_Test" target="classFrame">FormatString_Test</a></li>
                 <li><a href="org/apache/juneau/http/annotation/FormatType_Test.html#FormatType_Test" target="classFrame">FormatType_Test</a></li>
                 <li><a href="org/apache/juneau/http/header/Forwarded_Test.html#Forwarded_Test" target="classFrame">Forwarded_Test</a></li>
                 <li><a href="org/apache/juneau/http/header/Forwarded_Test.html#Forwarded_Test.A" target="classFrame">Forwarded_Test.A</a></li>
diff --git a/site/xref-test/org/apache/juneau/ComboInput.html b/site/xref-test/org/apache/juneau/ComboInput.html
index 3e59ac3883..d6235ac9ec 100644
--- a/site/xref-test/org/apache/juneau/ComboInput.html
+++ b/site/xref-test/org/apache/juneau/ComboInput.html
@@ -83,7 +83,7 @@
 <a class="jxr_linenumber" name="L75" href="#L75">75</a>  	}
 <a class="jxr_linenumber" name="L76" href="#L76">76</a>  
 <a class="jxr_linenumber" name="L77" href="#L77">77</a>  	<strong class="jxr_keyword">public</strong> ComboInput&lt;T&gt; verify(Predicate&lt;T&gt; verify, String msg, Object...args) {
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  		<strong class="jxr_keyword">this</strong>.verify.add(x -&gt; verify.test(x) ? <strong class="jxr_keyword">null</strong> : mformat(msg, args));
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  		<strong class="jxr_keyword">this</strong>.verify.add(x -&gt; verify.test(x) ? <strong class="jxr_keyword">null</strong> : f(msg, args));
 <a class="jxr_linenumber" name="L79" href="#L79">79</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="L80" href="#L80">80</a>  	}
 <a class="jxr_linenumber" name="L81" href="#L81">81</a>  
diff --git a/site/xref-test/org/apache/juneau/a/rttests/RoundTripLargeObjects_Test.html b/site/xref-test/org/apache/juneau/a/rttests/RoundTripLargeObjects_Test.html
index 7f5b010f4e..e47142de81 100644
--- a/site/xref-test/org/apache/juneau/a/rttests/RoundTripLargeObjects_Test.html
+++ b/site/xref-test/org/apache/juneau/a/rttests/RoundTripLargeObjects_Test.html
@@ -25,139 +25,140 @@
 <a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.juneau.a.rttests;
 <a class="jxr_linenumber" name="L18" href="#L18">18</a>  
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StringUtils.*;
-<a class="jxr_linenumber" name="L20" href="#L20">20</a>  
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.util.*;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.*;
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.html.*;
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.json.*;
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.msgpack.*;
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.uon.*;
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.urlencoding.*;
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.xml.*;
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.*;
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.params.*;
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.params.provider.*;
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment"> * Tests designed to serialize and parse objects to make sure we end up</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> * with the same objects for all serializers and parsers.</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  @Disabled
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  @SuppressWarnings({<span class="jxr_string">"serial"</span>})
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <strong class="jxr_keyword">class</strong> RoundTripLargeObjects_Test <strong class="jxr_keyword">extends</strong> <a name="TestBase" href="../../../../../org/apache/juneau/TestBase.html#TestBase">TestBase</a> {
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_RUNS = 10;
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> SIZE_PARAM = 20000;
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a name="RoundTrip_Tester" href="../../../../../org/apache/juneau/a/rttests/RoundTrip_Tester.html#RoundTrip_Tester">RoundTrip_Tester</a>[] TESTERS = {
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  		tester(1, <span class="jxr_string">"Json DEFAULT"</span>)
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  			.serializer(JsonSerializer.create().keepNullProperties())
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  			.parser(JsonParser.create())
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  			.build(),
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  		tester(2, <span class="jxr_string">"Json5 DEFAULT"</span>)
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  			.serializer(Json5Serializer.create().keepNullProperties())
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  			.parser(Json5Parser.create())
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  			.build(),
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  		tester(3, <span class="jxr_string">"Json DEFAULT_SQ"</span>)
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  			.serializer(JsonSerializer.create().json5().keepNullProperties())
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  			.parser(JsonParser.create())
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  			.build(),
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  		tester(4, <span class="jxr_string">"Xml DEFAULT w/namespaces,validation"</span>)
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  			.serializer(XmlSerializer.create().sq().ns().keepNullProperties().addNamespaceUrisToRoot().useWhitespace())
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  			.parser(XmlParser.create())
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  			.validateXml()
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  			.validateXmlWhitespace()
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  			.build(),
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  		tester(5, <span class="jxr_string">"Xml DEFAULT wo/namespaces,validation"</span>)
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  			.serializer(XmlSerializer.create().sq().keepNullProperties())
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  			.parser(XmlParser.create())
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  			.validateXmlWhitespace()
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  			.build(),
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  		tester(6, <span class="jxr_string">"Html"</span>)
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  			.serializer(HtmlSerializer.create().keepNullProperties())
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  			.parser(HtmlParser.create())
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  			.validateXmlWhitespace()
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  			.build(),
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  		tester(7, <span class="jxr_string">"UrlEncoding"</span>)
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  			.serializer(UrlEncodingSerializer.create().keepNullProperties())
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  			.parser(UrlEncodingParser.create())
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  			.build(),
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  		tester(8, <span class="jxr_string">"Uon"</span>)
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  			.serializer(UonSerializer.create().keepNullProperties())
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  			.parser(UonParser.create())
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  			.build(),
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  		tester(9, <span class="jxr_string">"MsgPack"</span>)
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  			.serializer(MsgPackSerializer.create().keepNullProperties())
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  			.parser(MsgPackParser.create())
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  			.build()
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>  	};
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>  
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  	<strong class="jxr_keyword">static</strong> <a name="RoundTrip_Tester" href="../../../../../org/apache/juneau/a/rttests/RoundTrip_Tester.html#RoundTrip_Tester">RoundTrip_Tester</a>[]  testers() {
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>  		<strong class="jxr_keyword">return</strong> TESTERS;
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>  	}
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>  
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>  	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> RoundTrip_Tester.Builder tester(<strong class="jxr_keyword">int</strong> index, String label) {
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>  		<strong class="jxr_keyword">return</strong> RoundTrip_Tester.create(index, label);
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>  	}
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>  
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>  	<em class="jxr_comment">// test</em>
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
-<a class="jxr_linenumber" name="L100" href="#L100">100</a> 	@ParameterizedTest
-<a class="jxr_linenumber" name="L101" href="#L101">101</a> 	@MethodSource(<span class="jxr_string">"testers"</span>)
-<a class="jxr_linenumber" name="L102" href="#L102">102</a> 	<strong class="jxr_keyword">void</strong> a01_largeMap(<a name="RoundTrip_Tester" href="../../../../../org/apache/juneau/a/rttests/RoundTrip_Tester.html#RoundTrip_Tester">RoundTrip_Tester</a> t) <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> 		<strong class="jxr_keyword">long</strong> startTime;
-<a class="jxr_linenumber" name="L104" href="#L104">104</a> 		<strong class="jxr_keyword">var</strong> numRuns = NUM_RUNS;
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
-<a class="jxr_linenumber" name="L106" href="#L106">106</a> 		<strong class="jxr_keyword">var</strong> a = A.create();
-<a class="jxr_linenumber" name="L107" href="#L107">107</a> 		<strong class="jxr_keyword">var</strong> s = t.getSerializer();
-<a class="jxr_linenumber" name="L108" href="#L108">108</a> 		<strong class="jxr_keyword">var</strong> p = t.getParser();
-<a class="jxr_linenumber" name="L109" href="#L109">109</a> 		System.err.println(<span class="jxr_string">"\n---Speed test on "</span> + t.label + <span class="jxr_string">"---"</span>); <em class="jxr_comment">// NOT DEBUG</em>
-<a class="jxr_linenumber" name="L110" href="#L110">110</a> 		<strong class="jxr_keyword">var</strong> r = (Object)<span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L111" href="#L111">111</a> 
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 		<em class="jxr_comment">// Initialization run.</em>
-<a class="jxr_linenumber" name="L113" href="#L113">113</a> 		r = s.serialize(a);
-<a class="jxr_linenumber" name="L114" href="#L114">114</a> 		System.err.println(mformat(<span class="jxr_string">"Serialized size: {0,number} "</span>, (r instanceof String ? r.toString().length() : ((byte[])r).length))); <em class="jxr_comment">// NOT DEBUG</em>
-<a class="jxr_linenumber" name="L115" href="#L115">115</a> 		p.parse(r, A.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L116" href="#L116">116</a> 
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> 		startTime = System.currentTimeMillis();
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> i = 0; i &lt; numRuns; i++)
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> 			r = s.serialize(a);
-<a class="jxr_linenumber" name="L120" href="#L120">120</a> 		System.err.println(mformat(<span class="jxr_string">"Average serialize time: {0,number}ms"</span>, (System.currentTimeMillis()-startTime)/numRuns)); <em class="jxr_comment">// NOT DEBUG</em>
-<a class="jxr_linenumber" name="L121" href="#L121">121</a> 		startTime = System.currentTimeMillis();
-<a class="jxr_linenumber" name="L122" href="#L122">122</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> i = 0; i &lt; numRuns; i++)
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> 			p.parse(r, A.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L124" href="#L124">124</a> 		System.err.println(mformat(<span class="jxr_string">"Average parsed time: {0,number}ms"</span>, (System.currentTimeMillis()-startTime)/numRuns)); <em class="jxr_comment">// NOT DEBUG</em>
-<a class="jxr_linenumber" name="L125" href="#L125">125</a> 	}
-<a class="jxr_linenumber" name="L126" href="#L126">126</a> 
-<a class="jxr_linenumber" name="L127" href="#L127">127</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A {
-<a class="jxr_linenumber" name="L128" href="#L128">128</a> 		<strong class="jxr_keyword">public</strong> A1Map a1Map;
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> 		<strong class="jxr_keyword">public</strong> A1List a1List;
-<a class="jxr_linenumber" name="L130" href="#L130">130</a> 		<strong class="jxr_keyword">public</strong> A1[] a1Array;
-<a class="jxr_linenumber" name="L131" href="#L131">131</a> 
-<a class="jxr_linenumber" name="L132" href="#L132">132</a> 		<strong class="jxr_keyword">static</strong> A create() {
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> 			<strong class="jxr_keyword">var</strong> a = <strong class="jxr_keyword">new</strong> A();
-<a class="jxr_linenumber" name="L134" href="#L134">134</a> 			a.a1Map = <strong class="jxr_keyword">new</strong> A1Map();
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> 			a.a1List = <strong class="jxr_keyword">new</strong> A1List();
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> i = 0; i &lt; SIZE_PARAM; i++) {
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> 				a.a1Map.put(String.valueOf(i), <strong class="jxr_keyword">new</strong> A1());
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> 				a.a1List.add(<strong class="jxr_keyword">new</strong> A1());
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> 			}
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> 			a.a1Array = a.a1List.toArray(<strong class="jxr_keyword">new</strong> A1[0]);
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> 			<strong class="jxr_keyword">return</strong> a;
-<a class="jxr_linenumber" name="L142" href="#L142">142</a> 		}
-<a class="jxr_linenumber" name="L143" href="#L143">143</a> 	}
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> 
-<a class="jxr_linenumber" name="L145" href="#L145">145</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A1 {
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> 		<strong class="jxr_keyword">public</strong> String f1 = <span class="jxr_string">"a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789"</span>;
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> 	}
-<a class="jxr_linenumber" name="L148" href="#L148">148</a> 
-<a class="jxr_linenumber" name="L149" href="#L149">149</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A1Map <strong class="jxr_keyword">extends</strong> LinkedHashMap&lt;String,A1&gt; {}
-<a class="jxr_linenumber" name="L150" href="#L150">150</a> 
-<a class="jxr_linenumber" name="L151" href="#L151">151</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A1List <strong class="jxr_keyword">extends</strong> LinkedList&lt;A1&gt; {}
-<a class="jxr_linenumber" name="L152" href="#L152">152</a> }
+<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
+<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.util.*;
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.*;
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.html.*;
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.json.*;
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.msgpack.*;
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.uon.*;
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.urlencoding.*;
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.xml.*;
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.*;
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.params.*;
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.params.provider.*;
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> * Tests designed to serialize and parse objects to make sure we end up</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> * with the same objects for all serializers and parsers.</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  @Disabled
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  @SuppressWarnings({<span class="jxr_string">"serial"</span>})
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <strong class="jxr_keyword">class</strong> RoundTripLargeObjects_Test <strong class="jxr_keyword">extends</strong> <a name="TestBase" href="../../../../../org/apache/juneau/TestBase.html#TestBase">TestBase</a> {
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> NUM_RUNS = 10;
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> SIZE_PARAM = 20000;
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a name="RoundTrip_Tester" href="../../../../../org/apache/juneau/a/rttests/RoundTrip_Tester.html#RoundTrip_Tester">RoundTrip_Tester</a>[] TESTERS = {
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  		tester(1, <span class="jxr_string">"Json DEFAULT"</span>)
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  			.serializer(JsonSerializer.create().keepNullProperties())
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  			.parser(JsonParser.create())
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>  			.build(),
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  		tester(2, <span class="jxr_string">"Json5 DEFAULT"</span>)
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  			.serializer(Json5Serializer.create().keepNullProperties())
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  			.parser(Json5Parser.create())
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  			.build(),
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  		tester(3, <span class="jxr_string">"Json DEFAULT_SQ"</span>)
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  			.serializer(JsonSerializer.create().json5().keepNullProperties())
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  			.parser(JsonParser.create())
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  			.build(),
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  		tester(4, <span class="jxr_string">"Xml DEFAULT w/namespaces,validation"</span>)
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  			.serializer(XmlSerializer.create().sq().ns().keepNullProperties().addNamespaceUrisToRoot().useWhitespace())
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  			.parser(XmlParser.create())
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>  			.validateXml()
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  			.validateXmlWhitespace()
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>  			.build(),
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  		tester(5, <span class="jxr_string">"Xml DEFAULT wo/namespaces,validation"</span>)
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>  			.serializer(XmlSerializer.create().sq().keepNullProperties())
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  			.parser(XmlParser.create())
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  			.validateXmlWhitespace()
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>  			.build(),
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>  		tester(6, <span class="jxr_string">"Html"</span>)
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>  			.serializer(HtmlSerializer.create().keepNullProperties())
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>  			.parser(HtmlParser.create())
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>  			.validateXmlWhitespace()
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>  			.build(),
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>  		tester(7, <span class="jxr_string">"UrlEncoding"</span>)
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>  			.serializer(UrlEncodingSerializer.create().keepNullProperties())
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>  			.parser(UrlEncodingParser.create())
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  			.build(),
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  		tester(8, <span class="jxr_string">"Uon"</span>)
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>  			.serializer(UonSerializer.create().keepNullProperties())
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>  			.parser(UonParser.create())
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>  			.build(),
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>  		tester(9, <span class="jxr_string">"MsgPack"</span>)
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>  			.serializer(MsgPackSerializer.create().keepNullProperties())
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>  			.parser(MsgPackParser.create())
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  			.build()
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>  	};
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>  	<strong class="jxr_keyword">static</strong> <a name="RoundTrip_Tester" href="../../../../../org/apache/juneau/a/rttests/RoundTrip_Tester.html#RoundTrip_Tester">RoundTrip_Tester</a>[]  testers() {
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>  		<strong class="jxr_keyword">return</strong> TESTERS;
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>  	}
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>  	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">static</strong> RoundTrip_Tester.Builder tester(<strong class="jxr_keyword">int</strong> index, String label) {
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>  		<strong class="jxr_keyword">return</strong> RoundTrip_Tester.create(index, label);
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>  	}
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>  	<em class="jxr_comment">//====================================================================================================</em>
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>  	<em class="jxr_comment">// test</em>
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>  	<em class="jxr_comment">//====================================================================================================</em>
+<a class="jxr_linenumber" name="L100" href="#L100">100</a> 
+<a class="jxr_linenumber" name="L101" href="#L101">101</a> 	@ParameterizedTest
+<a class="jxr_linenumber" name="L102" href="#L102">102</a> 	@MethodSource(<span class="jxr_string">"testers"</span>)
+<a class="jxr_linenumber" name="L103" href="#L103">103</a> 	<strong class="jxr_keyword">void</strong> a01_largeMap(<a name="RoundTrip_Tester" href="../../../../../org/apache/juneau/a/rttests/RoundTrip_Tester.html#RoundTrip_Tester">RoundTrip_Tester</a> t) <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L104" href="#L104">104</a> 		<strong class="jxr_keyword">long</strong> startTime;
+<a class="jxr_linenumber" name="L105" href="#L105">105</a> 		<strong class="jxr_keyword">var</strong> numRuns = NUM_RUNS;
+<a class="jxr_linenumber" name="L106" href="#L106">106</a> 
+<a class="jxr_linenumber" name="L107" href="#L107">107</a> 		<strong class="jxr_keyword">var</strong> a = A.create();
+<a class="jxr_linenumber" name="L108" href="#L108">108</a> 		<strong class="jxr_keyword">var</strong> s = t.getSerializer();
+<a class="jxr_linenumber" name="L109" href="#L109">109</a> 		<strong class="jxr_keyword">var</strong> p = t.getParser();
+<a class="jxr_linenumber" name="L110" href="#L110">110</a> 		System.err.println(<span class="jxr_string">"\n---Speed test on "</span> + t.label + <span class="jxr_string">"---"</span>); <em class="jxr_comment">// NOT DEBUG</em>
+<a class="jxr_linenumber" name="L111" href="#L111">111</a> 		<strong class="jxr_keyword">var</strong> r = (Object)<span class="jxr_string">""</span>;
+<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
+<a class="jxr_linenumber" name="L113" href="#L113">113</a> 		<em class="jxr_comment">// Initialization run.</em>
+<a class="jxr_linenumber" name="L114" href="#L114">114</a> 		r = s.serialize(a);
+<a class="jxr_linenumber" name="L115" href="#L115">115</a> 		System.err.println(f(<span class="jxr_string">"Serialized size: {0,number} "</span>, (r instanceof String ? r.toString().length() : ((byte[])r).length))); <em class="jxr_comment">// NOT DEBUG</em>
+<a class="jxr_linenumber" name="L116" href="#L116">116</a> 		p.parse(r, A.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L117" href="#L117">117</a> 
+<a class="jxr_linenumber" name="L118" href="#L118">118</a> 		startTime = System.currentTimeMillis();
+<a class="jxr_linenumber" name="L119" href="#L119">119</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> i = 0; i &lt; numRuns; i++)
+<a class="jxr_linenumber" name="L120" href="#L120">120</a> 			r = s.serialize(a);
+<a class="jxr_linenumber" name="L121" href="#L121">121</a> 		System.err.println(mformat(<span class="jxr_string">"Average serialize time: {0,number}ms"</span>, (System.currentTimeMillis()-startTime)/numRuns)); <em class="jxr_comment">// NOT DEBUG</em>
+<a class="jxr_linenumber" name="L122" href="#L122">122</a> 		startTime = System.currentTimeMillis();
+<a class="jxr_linenumber" name="L123" href="#L123">123</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> i = 0; i &lt; numRuns; i++)
+<a class="jxr_linenumber" name="L124" href="#L124">124</a> 			p.parse(r, A.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L125" href="#L125">125</a> 		System.err.println(mformat(<span class="jxr_string">"Average parsed time: {0,number}ms"</span>, (System.currentTimeMillis()-startTime)/numRuns)); <em class="jxr_comment">// NOT DEBUG</em>
+<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="L128" href="#L128">128</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A {
+<a class="jxr_linenumber" name="L129" href="#L129">129</a> 		<strong class="jxr_keyword">public</strong> A1Map a1Map;
+<a class="jxr_linenumber" name="L130" href="#L130">130</a> 		<strong class="jxr_keyword">public</strong> A1List a1List;
+<a class="jxr_linenumber" name="L131" href="#L131">131</a> 		<strong class="jxr_keyword">public</strong> A1[] a1Array;
+<a class="jxr_linenumber" name="L132" href="#L132">132</a> 
+<a class="jxr_linenumber" name="L133" href="#L133">133</a> 		<strong class="jxr_keyword">static</strong> A create() {
+<a class="jxr_linenumber" name="L134" href="#L134">134</a> 			<strong class="jxr_keyword">var</strong> a = <strong class="jxr_keyword">new</strong> A();
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> 			a.a1Map = <strong class="jxr_keyword">new</strong> A1Map();
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> 			a.a1List = <strong class="jxr_keyword">new</strong> A1List();
+<a class="jxr_linenumber" name="L137" href="#L137">137</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> i = 0; i &lt; SIZE_PARAM; i++) {
+<a class="jxr_linenumber" name="L138" href="#L138">138</a> 				a.a1Map.put(String.valueOf(i), <strong class="jxr_keyword">new</strong> A1());
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> 				a.a1List.add(<strong class="jxr_keyword">new</strong> A1());
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> 			}
+<a class="jxr_linenumber" name="L141" href="#L141">141</a> 			a.a1Array = a.a1List.toArray(<strong class="jxr_keyword">new</strong> A1[0]);
+<a class="jxr_linenumber" name="L142" href="#L142">142</a> 			<strong class="jxr_keyword">return</strong> a;
+<a class="jxr_linenumber" name="L143" href="#L143">143</a> 		}
+<a class="jxr_linenumber" name="L144" href="#L144">144</a> 	}
+<a class="jxr_linenumber" name="L145" href="#L145">145</a> 
+<a class="jxr_linenumber" name="L146" href="#L146">146</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A1 {
+<a class="jxr_linenumber" name="L147" href="#L147">147</a> 		<strong class="jxr_keyword">public</strong> String f1 = <span class="jxr_string">"a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789i123456789j123456789"</span>;
+<a class="jxr_linenumber" name="L148" href="#L148">148</a> 	}
+<a class="jxr_linenumber" name="L149" href="#L149">149</a> 
+<a class="jxr_linenumber" name="L150" href="#L150">150</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A1Map <strong class="jxr_keyword">extends</strong> LinkedHashMap&lt;String,A1&gt; {}
+<a class="jxr_linenumber" name="L151" href="#L151">151</a> 
+<a class="jxr_linenumber" name="L152" href="#L152">152</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> A1List <strong class="jxr_keyword">extends</strong> LinkedList&lt;A1&gt; {}
+<a class="jxr_linenumber" name="L153" href="#L153">153</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-test/org/apache/juneau/common/utils/FormatString_Test.html b/site/xref-test/org/apache/juneau/common/utils/FormatString_Test.html
deleted file mode 100644
index 949a947981..0000000000
--- a/site/xref-test/org/apache/juneau/common/utils/FormatString_Test.html
+++ /dev/null
@@ -1,429 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
-<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-<title>FormatString_Test xref</title>
-<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
-</head>
-<body>
-<div id="overview"><a href="../../../../../../testapidocs/org/apache/juneau/common/utils/FormatString_Test.html">View Javadoc</a></div><pre>
-<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</em>
-<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> * contributor license agreements.  See the NOTICE file distributed with</em>
-<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * this work for additional information regarding copyright ownership.</em>
-<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</em>
-<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * (the "License"); you may not use this file except in compliance with</em>
-<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * the License.  You may obtain a copy of the License at</em>
-<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> *</em>
-<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> *      <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
-<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> *</em>
-<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
-<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
-<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
-<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
-<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> * limitations under the License.</em>
-<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> */</em>
-<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.juneau.common.utils;
-<a class="jxr_linenumber" name="L18" href="#L18">18</a>  
-<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
-<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.junit.jupiter.api.Assertions.*;
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> java.util.stream.Collectors.*;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.math.*;
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.text.*;
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.util.*;
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.util.stream.*;
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.*;
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.common.function.*;
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">import</strong> org.junit.jupiter.api.*;
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">class</strong> <a name="FormatString_Test" href="../../../../../org/apache/juneau/common/utils/FormatString_Test.html#FormatString_Test">FormatString_Test</a> <strong class="jxr_keyword">extends</strong> <a name="TestBase" href="../../../../../org/apache/juneau/TestBase.html#TestBase">TestBase</a> {
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> StringFormat fs(String pattern) {
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  		<strong class="jxr_keyword">return</strong> StringFormat.of(pattern);
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  	}
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String stringify(ThrowingSupplier&lt;String&gt; supplier) {
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  			<strong class="jxr_keyword">return</strong> supplier.get();
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  		} <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  			<strong class="jxr_keyword">return</strong> t.getClass().getSimpleName() + <span class="jxr_string">": "</span> + t.getLocalizedMessage();
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  		}
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  	}
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> assertStringFormat(String pattern, Locale locale, Object... args) {
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  		<strong class="jxr_keyword">var</strong> expected = stringify(()-&gt;String.format(locale, pattern, args));
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  		<strong class="jxr_keyword">var</strong> actual = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  		<strong class="jxr_keyword">var</strong> fmt = (StringFormat)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  			<strong class="jxr_keyword">var</strong> fmt2 = fs(pattern);
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  			fmt = fmt2;
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  			actual = stringify(()-&gt;fmt2.format(locale, args));
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  		} <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  			actual = t.getClass().getSimpleName() + <span class="jxr_string">": "</span> + t.getLocalizedMessage();
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  		}
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  		<strong class="jxr_keyword">if</strong> (!expected.equals(actual)) {
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  			System.out.println(<span class="jxr_string">"Pattern: "</span> + pattern);
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  			<strong class="jxr_keyword">var</strong> toPattern = opt(fmt).map(x -&gt; x.toPattern()).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  			System.out.println(<span class="jxr_string">"toPattern(): "</span> + toPattern);
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  			fail(<span class="jxr_string">"Pattern: "</span> + pattern + <span class="jxr_string">", toPattern(): "</span> + toPattern + <span class="jxr_string">", expected: &lt;"</span> + expected + <span class="jxr_string">"&gt; but was: &lt;"</span> + actual + <span class="jxr_string">"&gt;"</span>);
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  		}
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  	}
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> assertStringFormat(String pattern, Object... args) {
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  		<strong class="jxr_keyword">var</strong> expected = stringify(()-&gt;String.format(pattern, args));
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  		<strong class="jxr_keyword">var</strong> actual = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  		<strong class="jxr_keyword">var</strong> fmt = (StringFormat)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  			<strong class="jxr_keyword">var</strong> fmt2 = fs(pattern);
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  			fmt = fmt2;
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  			actual = stringify(()-&gt;fmt2.format(args));
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  		} <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  			actual = t.getClass().getSimpleName() + <span class="jxr_string">": "</span> + t.getLocalizedMessage();
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  		}
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  		<strong class="jxr_keyword">if</strong> (!expected.equals(actual)) {
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  			System.out.println(<span class="jxr_string">"Pattern: "</span> + pattern);
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  			<strong class="jxr_keyword">var</strong> toPattern = opt(fmt).map(x -&gt; x.toPattern()).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  			System.out.println(<span class="jxr_string">"toPattern(): "</span> + toPattern);
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  			fail(<span class="jxr_string">"Pattern: "</span> + pattern + <span class="jxr_string">", toPattern(): "</span> + toPattern + <span class="jxr_string">", expected: &lt;"</span> + expected + <span class="jxr_string">"&gt; but was: &lt;"</span> + actual + <span class="jxr_string">"&gt;"</span>);
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  		}
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  	}
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> assertMessageFormat(String pattern, Locale locale, Object... args) {
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  		<strong class="jxr_keyword">var</strong> expected = stringify(()-&gt;<strong class="jxr_keyword">new</strong> MessageFormat(pattern, locale).format(args));
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>  		<strong class="jxr_keyword">var</strong> actual = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>  		<strong class="jxr_keyword">var</strong> fmt = (StringFormat)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>  			<strong class="jxr_keyword">var</strong> fmt2 = fs(pattern);
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>  			fmt = fmt2;
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>  			actual = stringify(()-&gt;fmt2.format(locale, args));
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>  		} <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>  			actual = t.getClass().getSimpleName() + <span class="jxr_string">": "</span> + t.getLocalizedMessage();
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>  		}
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>  		<strong class="jxr_keyword">if</strong> (!expected.equals(actual)) {
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  			System.out.println(<span class="jxr_string">"Pattern: "</span> + pattern);
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>  			<strong class="jxr_keyword">var</strong> toPattern = opt(fmt).map(x -&gt; x.toPattern()).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  			System.out.println(<span class="jxr_string">"toPattern(): "</span> + toPattern);
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>  			fail(<span class="jxr_string">"Pattern: "</span> + pattern + <span class="jxr_string">", toPattern(): "</span> + toPattern + <span class="jxr_string">", expected: &lt;"</span> + expected + <span class="jxr_string">"&gt; but was: &lt;"</span> + actual + <span class="jxr_string">"&gt;"</span>);
-<a class="jxr_linenumber" name="L100" href="#L100">100</a> 		}
-<a class="jxr_linenumber" name="L101" href="#L101">101</a> 	}
-<a class="jxr_linenumber" name="L102" href="#L102">102</a> 
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> assertMessageFormat(String pattern, Object... args) {
-<a class="jxr_linenumber" name="L104" href="#L104">104</a> 		<strong class="jxr_keyword">var</strong> expected = stringify(()-&gt;MessageFormat.format(pattern, args));
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 		<strong class="jxr_keyword">var</strong> actual = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L106" href="#L106">106</a> 		<strong class="jxr_keyword">var</strong> fmt = (StringFormat)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L107" href="#L107">107</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L108" href="#L108">108</a> 			<strong class="jxr_keyword">var</strong> fmt2 = fs(pattern);
-<a class="jxr_linenumber" name="L109" href="#L109">109</a> 			fmt = fmt2;
-<a class="jxr_linenumber" name="L110" href="#L110">110</a> 			actual = stringify(()-&gt;fmt2.format(args));
-<a class="jxr_linenumber" name="L111" href="#L111">111</a> 		} <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 			actual = t.getClass().getSimpleName() + <span class="jxr_string">": "</span> + t.getLocalizedMessage();
-<a class="jxr_linenumber" name="L113" href="#L113">113</a> 		}
-<a class="jxr_linenumber" name="L114" href="#L114">114</a> 		<strong class="jxr_keyword">if</strong> (!expected.equals(actual)) {
-<a class="jxr_linenumber" name="L115" href="#L115">115</a> 			System.out.println(<span class="jxr_string">"Pattern: "</span> + pattern);
-<a class="jxr_linenumber" name="L116" href="#L116">116</a> 			<strong class="jxr_keyword">var</strong> toPattern = opt(fmt).map(x -&gt; x.toPattern()).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> 			System.out.println(<span class="jxr_string">"toPattern(): "</span> + toPattern);
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> 			fail(<span class="jxr_string">"Pattern: "</span> + pattern + <span class="jxr_string">", toPattern(): "</span> + toPattern + <span class="jxr_string">", expected: &lt;"</span> + expected + <span class="jxr_string">"&gt; but was: &lt;"</span> + actual + <span class="jxr_string">"&gt;"</span>);
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> 		}
-<a class="jxr_linenumber" name="L120" href="#L120">120</a> 	}
-<a class="jxr_linenumber" name="L121" href="#L121">121</a> 
-<a class="jxr_linenumber" name="L122" href="#L122">122</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> assertMixedFormat(String expected, String pattern, Locale locale, Object... args) {
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> 		<strong class="jxr_keyword">var</strong> actual = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L124" href="#L124">124</a> 		<strong class="jxr_keyword">var</strong> fmt = (StringFormat)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L125" href="#L125">125</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L126" href="#L126">126</a> 			<strong class="jxr_keyword">var</strong> fmt2 = fs(pattern);
-<a class="jxr_linenumber" name="L127" href="#L127">127</a> 			fmt = fmt2;
-<a class="jxr_linenumber" name="L128" href="#L128">128</a> 			actual = stringify(()-&gt;fmt2.format(locale, args));
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> 		} <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="L130" href="#L130">130</a> 			actual = t.getClass().getSimpleName() + <span class="jxr_string">": "</span> + t.getLocalizedMessage();
-<a class="jxr_linenumber" name="L131" href="#L131">131</a> 		}
-<a class="jxr_linenumber" name="L132" href="#L132">132</a> 		<strong class="jxr_keyword">if</strong> (!expected.equals(actual)) {
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> 			System.out.println(<span class="jxr_string">"Pattern: "</span> + pattern);
-<a class="jxr_linenumber" name="L134" href="#L134">134</a> 			<strong class="jxr_keyword">var</strong> toPattern = opt(fmt).map(x -&gt; x.toPattern()).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> 			System.out.println(<span class="jxr_string">"toPattern(): "</span> + toPattern);
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> 			fail(<span class="jxr_string">"Pattern: "</span> + pattern + <span class="jxr_string">", toPattern(): "</span> + toPattern + <span class="jxr_string">", expected: &lt;"</span> + expected + <span class="jxr_string">"&gt; but was: &lt;"</span> + actual + <span class="jxr_string">"&gt;"</span>);
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> 		}
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> 	}
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> assertMixedFormat(String expected, String pattern, Object... args) {
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> 		<strong class="jxr_keyword">var</strong> actual = <span class="jxr_string">""</span>;
-<a class="jxr_linenumber" name="L142" href="#L142">142</a> 		<strong class="jxr_keyword">var</strong> fmt = (StringFormat)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L143" href="#L143">143</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> 			<strong class="jxr_keyword">var</strong> fmt2 = fs(pattern);
-<a class="jxr_linenumber" name="L145" href="#L145">145</a> 			fmt = fmt2;
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> 			actual = stringify(()-&gt;fmt2.format(args));
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> 		} <strong class="jxr_keyword">catch</strong> (Throwable t) {
-<a class="jxr_linenumber" name="L148" href="#L148">148</a> 			actual = t.getClass().getSimpleName() + <span class="jxr_string">": "</span> + t.getLocalizedMessage();
-<a class="jxr_linenumber" name="L149" href="#L149">149</a> 		}
-<a class="jxr_linenumber" name="L150" href="#L150">150</a> 		<strong class="jxr_keyword">if</strong> (!expected.equals(actual)) {
-<a class="jxr_linenumber" name="L151" href="#L151">151</a> 			System.out.println(<span class="jxr_string">"Pattern: "</span> + pattern);
-<a class="jxr_linenumber" name="L152" href="#L152">152</a> 			<strong class="jxr_keyword">var</strong> toPattern = opt(fmt).map(x -&gt; x.toPattern()).orElse(<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L153" href="#L153">153</a> 			System.out.println(<span class="jxr_string">"toPattern(): "</span> + toPattern);
-<a class="jxr_linenumber" name="L154" href="#L154">154</a> 			fail(<span class="jxr_string">"Pattern: "</span> + pattern + <span class="jxr_string">", toPattern(): "</span> + toPattern + <span class="jxr_string">", expected: &lt;"</span> + expected + <span class="jxr_string">"&gt; but was: &lt;"</span> + actual + <span class="jxr_string">"&gt;"</span>);
-<a class="jxr_linenumber" name="L155" href="#L155">155</a> 		}
-<a class="jxr_linenumber" name="L156" href="#L156">156</a> 	}
-<a class="jxr_linenumber" name="L157" href="#L157">157</a> 
-<a class="jxr_linenumber" name="L158" href="#L158">158</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L159" href="#L159">159</a> 	<em class="jxr_comment">// MessageFormat tests</em>
-<a class="jxr_linenumber" name="L160" href="#L160">160</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L161" href="#L161">161</a> 	@Test <strong class="jxr_keyword">void</strong> a01_messageFormat() {
-<a class="jxr_linenumber" name="L162" href="#L162">162</a> 		assertMessageFormat(<span class="jxr_string">"Hello {0}"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L163" href="#L163">163</a> 		assertMessageFormat(<span class="jxr_string">"Price: {0,number,currency}"</span>, 19.99);
-<a class="jxr_linenumber" name="L164" href="#L164">164</a> 		assertMessageFormat(<span class="jxr_string">"{0} has {1} items and {2} friends"</span>, <span class="jxr_string">"John"</span>, 5, 3);
-<a class="jxr_linenumber" name="L165" href="#L165">165</a> 		assertMessageFormat(<span class="jxr_string">"Hello {0} world"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L166" href="#L166">166</a> 		assertMessageFormat(<span class="jxr_string">"Count: {0,number,integer}"</span>, 1234);
-<a class="jxr_linenumber" name="L167" href="#L167">167</a> 		assertMessageFormat(<span class="jxr_string">"Date: {0,date,short}"</span>, <strong class="jxr_keyword">new</strong> Date(0));
-<a class="jxr_linenumber" name="L168" href="#L168">168</a> 		assertMessageFormat(<span class="jxr_string">"Time: {0,time,short}"</span>, <strong class="jxr_keyword">new</strong> Date(0));
-<a class="jxr_linenumber" name="L169" href="#L169">169</a> 		<em class="jxr_comment">// Simple {0} with Date - uses DATE_FORMAT_CACHE for formatting</em>
-<a class="jxr_linenumber" name="L170" href="#L170">170</a> 		assertMessageFormat(<span class="jxr_string">"Date: {0}"</span>, <strong class="jxr_keyword">new</strong> Date(0));
-<a class="jxr_linenumber" name="L171" href="#L171">171</a> 		assertMessageFormat(<span class="jxr_string">"Value: {0}"</span>, (String)<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L172" href="#L172">172</a> 		assertMessageFormat(<span class="jxr_string">"Name: {0}"</span>, <span class="jxr_string">""</span>);
-<a class="jxr_linenumber" name="L173" href="#L173">173</a> 		assertMessageFormat(<span class="jxr_string">"Text: {0}\nNewline\tTab"</span>, <span class="jxr_string">"Hello"</span>);
-<a class="jxr_linenumber" name="L174" href="#L174">174</a> 		assertMessageFormat(<span class="jxr_string">"Unicode: {0} 中文"</span>, <span class="jxr_string">"Test"</span>);
-<a class="jxr_linenumber" name="L175" href="#L175">175</a> 		assertMessageFormat(<span class="jxr_string">"{0}{1}"</span>, <span class="jxr_string">"A"</span>, <span class="jxr_string">"B"</span>);
-<a class="jxr_linenumber" name="L176" href="#L176">176</a> 		assertMessageFormat(<span class="jxr_string">"{0} and {0} again"</span>, <span class="jxr_string">"Hello"</span>);
-<a class="jxr_linenumber" name="L177" href="#L177">177</a> 		assertMessageFormat(<span class="jxr_string">"Price: {0,number,currency}, Count: {1,number,integer}, Date: {2,date,short}"</span>, 19.99, 42, <strong class="jxr_keyword">new</strong> java.util.Date());
-<a class="jxr_linenumber" name="L178" href="#L178">178</a> 		assertMessageFormat(<span class="jxr_string">"Price: {0,number,currency}"</span>, Locale.US, 19.99);
-<a class="jxr_linenumber" name="L179" href="#L179">179</a> 		assertMessageFormat(<span class="jxr_string">"Price: {0,number,currency}"</span>, Locale.FRANCE, 19.99);
-<a class="jxr_linenumber" name="L180" href="#L180">180</a> 		assertMessageFormat(<span class="jxr_string">"a '{0}' b"</span>);
-<a class="jxr_linenumber" name="L181" href="#L181">181</a> 		assertMessageFormat(<span class="jxr_string">"a ''{0}'' b"</span>, 1);
-<a class="jxr_linenumber" name="L182" href="#L182">182</a> 		assertMessageFormat(<span class="jxr_string">"'{0}'"</span>);
-<a class="jxr_linenumber" name="L183" href="#L183">183</a> 		assertMessageFormat(<span class="jxr_string">"''{0}''"</span>, 1);
-<a class="jxr_linenumber" name="L184" href="#L184">184</a> 
-<a class="jxr_linenumber" name="L185" href="#L185">185</a> 		<em class="jxr_comment">// Errors</em>
-<a class="jxr_linenumber" name="L186" href="#L186">186</a> 		assertMessageFormat(<span class="jxr_string">"Set: {{0}}"</span>, 50);
-<a class="jxr_linenumber" name="L187" href="#L187">187</a> 		assertMessageFormat(<span class="jxr_string">"Set: {{0}} and {{1}}"</span>, <span class="jxr_string">"A"</span>, <span class="jxr_string">"B"</span>);
-<a class="jxr_linenumber" name="L188" href="#L188">188</a> 		assertMessageFormat(<span class="jxr_string">"Hello {0}"</span>);
-<a class="jxr_linenumber" name="L189" href="#L189">189</a> 		assertMessageFormat(<span class="jxr_string">"{0} has {1} items and {2} friends"</span>, <span class="jxr_string">"John"</span>, 5);
-<a class="jxr_linenumber" name="L190" href="#L190">190</a> 		assertMessageFormat(<span class="jxr_string">"Hello {"</span>);
-<a class="jxr_linenumber" name="L191" href="#L191">191</a> 		assertMessageFormat(<span class="jxr_string">"Hello {0"</span>);
-<a class="jxr_linenumber" name="L192" href="#L192">192</a> 		assertMessageFormat(<span class="jxr_string">"Hello '"</span>);
-<a class="jxr_linenumber" name="L193" href="#L193">193</a> 		assertMessageFormat(<span class="jxr_string">"Hello 'x"</span>);
-<a class="jxr_linenumber" name="L194" href="#L194">194</a> 	}
-<a class="jxr_linenumber" name="L195" href="#L195">195</a> 
-<a class="jxr_linenumber" name="L196" href="#L196">196</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L197" href="#L197">197</a> 	<em class="jxr_comment">// StringFormat (printf) tests</em>
-<a class="jxr_linenumber" name="L198" href="#L198">198</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L199" href="#L199">199</a> 	@Test <strong class="jxr_keyword">void</strong> a02_stringFormat() {
-<a class="jxr_linenumber" name="L200" href="#L200">200</a> 		assertStringFormat(<span class="jxr_string">"Hello %s"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L201" href="#L201">201</a> 		assertStringFormat(<span class="jxr_string">"Price: $%.2f"</span>, 19.99);
-<a class="jxr_linenumber" name="L202" href="#L202">202</a> 		assertStringFormat(<span class="jxr_string">"Name: %-10s Age: %3d"</span>, <span class="jxr_string">"John"</span>, 25);
-<a class="jxr_linenumber" name="L203" href="#L203">203</a> 		assertStringFormat(<span class="jxr_string">"Color: #%06X"</span>, 0xFF5733);
-<a class="jxr_linenumber" name="L204" href="#L204">204</a> 		assertStringFormat(<span class="jxr_string">"Hello world"</span>);
-<a class="jxr_linenumber" name="L205" href="#L205">205</a> 		assertStringFormat(<span class="jxr_string">"Progress: %d%%"</span>, 50);
-<a class="jxr_linenumber" name="L206" href="#L206">206</a> 		assertStringFormat(<span class="jxr_string">""</span>);
-<a class="jxr_linenumber" name="L207" href="#L207">207</a> 		assertStringFormat(<span class="jxr_string">"%1$s loves %2$s, and %1$s also loves %3$s"</span>, <span class="jxr_string">"Alice"</span>, <span class="jxr_string">"Bob"</span>, <span class="jxr_string">"Charlie"</span>);
-<a class="jxr_linenumber" name="L208" href="#L208">208</a> 		assertStringFormat(<span class="jxr_string">"Hello %1$s"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L209" href="#L209">209</a> 		assertStringFormat(<span class="jxr_string">"Price: %1$.2f"</span>, 19.99);
-<a class="jxr_linenumber" name="L210" href="#L210">210</a> 		assertStringFormat(<span class="jxr_string">"Octal: %o"</span>, 64);
-<a class="jxr_linenumber" name="L211" href="#L211">211</a> 		assertStringFormat(<span class="jxr_string">"Octal: %o"</span>, 255);
-<a class="jxr_linenumber" name="L212" href="#L212">212</a> 		assertStringFormat(<span class="jxr_string">"Octal: %o"</span>, (Number)<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L213" href="#L213">213</a> 		assertStringFormat(<span class="jxr_string">"Flag: %b"</span>, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L214" href="#L214">214</a> 		assertStringFormat(<span class="jxr_string">"Flag: %b"</span>, false);
-<a class="jxr_linenumber" name="L215" href="#L215">215</a> 		assertStringFormat(<span class="jxr_string">"Flag: %b"</span>, (Boolean)<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L216" href="#L216">216</a> 		<em class="jxr_comment">// %B uppercase boolean formatting</em>
-<a class="jxr_linenumber" name="L217" href="#L217">217</a> 		assertStringFormat(<span class="jxr_string">"Flag: %B"</span>, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L218" href="#L218">218</a> 		assertStringFormat(<span class="jxr_string">"Flag: %B"</span>, false);
-<a class="jxr_linenumber" name="L219" href="#L219">219</a> 		assertStringFormat(<span class="jxr_string">"Flag: %B"</span>, (Boolean)<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Line 281: null -&gt; "FALSE"</em>
-<a class="jxr_linenumber" name="L220" href="#L220">220</a> 		assertStringFormat(<span class="jxr_string">"Flag: %B"</span>, <span class="jxr_string">"hello"</span>);  <em class="jxr_comment">// Line 285: non-Boolean -&gt; "TRUE"</em>
-<a class="jxr_linenumber" name="L221" href="#L221">221</a> 		assertStringFormat(<span class="jxr_string">"Flag: %B"</span>, 42);  <em class="jxr_comment">// Line 285: non-Boolean -&gt; "TRUE"</em>
-<a class="jxr_linenumber" name="L222" href="#L222">222</a> 		assertStringFormat(<span class="jxr_string">"Char: %c"</span>, 'A');
-<a class="jxr_linenumber" name="L223" href="#L223">223</a> 		assertStringFormat(<span class="jxr_string">"Char: %c"</span>, <span class="jxr_string">"A"</span>);
-<a class="jxr_linenumber" name="L224" href="#L224">224</a> 		assertStringFormat(<span class="jxr_string">"Char: %c"</span>, (String)<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L225" href="#L225">225</a> 		assertStringFormat(<span class="jxr_string">"Value: %.2e"</span>, 1234567.0);
-<a class="jxr_linenumber" name="L226" href="#L226">226</a> 		assertStringFormat(<span class="jxr_string">"Value: %.2e"</span>, (Number)<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L227" href="#L227">227</a> 		assertStringFormat(<span class="jxr_string">"Number: %+10.2f"</span>, 19.99);
-<a class="jxr_linenumber" name="L228" href="#L228">228</a> 		assertStringFormat(<span class="jxr_string">"ID: %05d"</span>, 42);
-<a class="jxr_linenumber" name="L229" href="#L229">229</a> 		assertStringFormat(<span class="jxr_string">"Value: %d"</span>, (Number)<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Line 304: null -&gt; "null"</em>
-<a class="jxr_linenumber" name="L230" href="#L230">230</a> 		assertStringFormat(<span class="jxr_string">"Value: %s"</span>, (String)<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L231" href="#L231">231</a> 		assertStringFormat(<span class="jxr_string">"Name: %s"</span>, <span class="jxr_string">""</span>);
-<a class="jxr_linenumber" name="L232" href="#L232">232</a> 		assertStringFormat(<span class="jxr_string">"%s%s"</span>, <span class="jxr_string">"A"</span>, <span class="jxr_string">"B"</span>);
-<a class="jxr_linenumber" name="L233" href="#L233">233</a> 		assertStringFormat(<span class="jxr_string">"Progress: %d%% Complete: %d%%"</span>, 50, 75);
-<a class="jxr_linenumber" name="L234" href="#L234">234</a> 		assertStringFormat(<span class="jxr_string">"%1$s and %1$s again"</span>, <span class="jxr_string">"Hello"</span>);
-<a class="jxr_linenumber" name="L235" href="#L235">235</a> 		assertStringFormat(<span class="jxr_string">"Hex: 0x%08X, Decimal: %+d, Float: %10.3f"</span>, 255, 42, 3.14159);
-<a class="jxr_linenumber" name="L236" href="#L236">236</a> 		assertStringFormat(<span class="jxr_string">"Price: %.2f"</span>, Locale.US, 19.99);
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> 		assertStringFormat(<span class="jxr_string">"Price: %.2f"</span>, Locale.FRANCE, 19.99);
-<a class="jxr_linenumber" name="L238" href="#L238">238</a> 		assertStringFormat(<span class="jxr_string">"Value: %s"</span>, (Object)<strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L239" href="#L239">239</a> 		assertStringFormat(<span class="jxr_string">"Int: %d"</span>, 42);
-<a class="jxr_linenumber" name="L240" href="#L240">240</a> 		assertStringFormat(<span class="jxr_string">"Long: %d"</span>, 1234567890L);
-<a class="jxr_linenumber" name="L241" href="#L241">241</a> 		assertStringFormat(<span class="jxr_string">"Byte: %d"</span>, (byte)127);
-<a class="jxr_linenumber" name="L242" href="#L242">242</a> 		assertStringFormat(<span class="jxr_string">"Short: %d"</span>, (<strong class="jxr_keyword">short</strong>)32767);
-<a class="jxr_linenumber" name="L243" href="#L243">243</a> 		assertStringFormat(<span class="jxr_string">"Int: %d"</span>, Locale.FRANCE, 1234);
-<a class="jxr_linenumber" name="L244" href="#L244">244</a> 		assertStringFormat(<span class="jxr_string">"Long: %d"</span>, Locale.GERMANY, 1234567L);
-<a class="jxr_linenumber" name="L245" href="#L245">245</a> 		assertStringFormat(<span class="jxr_string">"Value: %d"</span>, <span class="jxr_string">"not-a-number"</span>);
-<a class="jxr_linenumber" name="L246" href="#L246">246</a> 		assertStringFormat(<span class="jxr_string">"Hex: %x"</span>, 255);  <em class="jxr_comment">// Line 328: Integer -&gt; Integer.toHexString()</em>
-<a class="jxr_linenumber" name="L247" href="#L247">247</a> 		assertStringFormat(<span class="jxr_string">"Hex: %x"</span>, 255L);
-<a class="jxr_linenumber" name="L248" href="#L248">248</a> 		assertStringFormat(<span class="jxr_string">"Hex: %x"</span>, (byte)255);
-<a class="jxr_linenumber" name="L249" href="#L249">249</a> 		assertStringFormat(<span class="jxr_string">"Hex: %x"</span>, (Number)<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Line 324: null -&gt; "null"</em>
-<a class="jxr_linenumber" name="L250" href="#L250">250</a> 		assertStringFormat(<span class="jxr_string">"Hex: %X"</span>, 255);
-<a class="jxr_linenumber" name="L251" href="#L251">251</a> 		assertStringFormat(<span class="jxr_string">"Hex: %X"</span>, 0xABCL);
-<a class="jxr_linenumber" name="L252" href="#L252">252</a> 		assertStringFormat(<span class="jxr_string">"Hex: %X"</span>, (<strong class="jxr_keyword">short</strong>)255);
-<a class="jxr_linenumber" name="L253" href="#L253">253</a> 		assertStringFormat(<span class="jxr_string">"Hex: %X"</span>, (Number)<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Line 337: null -&gt; "null"</em>
-<a class="jxr_linenumber" name="L254" href="#L254">254</a> 		assertStringFormat(<span class="jxr_string">"Octal: %o"</span>, 255L);
-<a class="jxr_linenumber" name="L255" href="#L255">255</a> 		assertStringFormat(<span class="jxr_string">"Octal: %o"</span>, (byte)64);
-<a class="jxr_linenumber" name="L256" href="#L256">256</a> 		assertStringFormat(<span class="jxr_string">"Value: %b"</span>, <span class="jxr_string">"hello"</span>);
-<a class="jxr_linenumber" name="L257" href="#L257">257</a> 		assertStringFormat(<span class="jxr_string">"Value: %b"</span>, 42);
-<a class="jxr_linenumber" name="L258" href="#L258">258</a> 		assertStringFormat(<span class="jxr_string">"Char: %c"</span>, 65);
-<a class="jxr_linenumber" name="L259" href="#L259">259</a> 		assertStringFormat(<span class="jxr_string">"Char: %c"</span>, 65L);
-<a class="jxr_linenumber" name="L260" href="#L260">260</a> 		assertStringFormat(<span class="jxr_string">"Char: %c"</span>, <span class="jxr_string">"X"</span>);
-<a class="jxr_linenumber" name="L261" href="#L261">261</a> 		assertStringFormat(<span class="jxr_string">"Char: %C"</span>, (Character)<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Line 376: null -&gt; "null"</em>
-<a class="jxr_linenumber" name="L262" href="#L262">262</a> 		assertStringFormat(<span class="jxr_string">"Char: %C"</span>, 66);  <em class="jxr_comment">// Line 382-383: Number (Integer) -&gt; Character.toUpperCase((char)o2.intValue())</em>
-<a class="jxr_linenumber" name="L263" href="#L263">263</a> 		assertStringFormat(<span class="jxr_string">"Char: %C"</span>, 66L);  <em class="jxr_comment">// Line 382-383: Number (Long) -&gt; Character.toUpperCase((char)o2.intValue())</em>
-<a class="jxr_linenumber" name="L264" href="#L264">264</a> 		assertStringFormat(<span class="jxr_string">"Float: %f"</span>, 3.14f);
-<a class="jxr_linenumber" name="L265" href="#L265">265</a> 		assertStringFormat(<span class="jxr_string">"Double: %f"</span>, 3.14159);
-<a class="jxr_linenumber" name="L266" href="#L266">266</a> 		assertStringFormat(<span class="jxr_string">"Float: %f"</span>, Locale.FRANCE, 3.14f);
-<a class="jxr_linenumber" name="L267" href="#L267">267</a> 		assertStringFormat(<span class="jxr_string">"Double: %f"</span>, Locale.GERMANY, 1234.56);
-<a class="jxr_linenumber" name="L268" href="#L268">268</a> 		assertStringFormat(<span class="jxr_string">"Value: %f"</span>, (Number)<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Line 389: null -&gt; "null"</em>
-<a class="jxr_linenumber" name="L269" href="#L269">269</a> 		assertStringFormat(<span class="jxr_string">"Value: %f"</span>, <span class="jxr_string">"not-a-number"</span>);
-<a class="jxr_linenumber" name="L270" href="#L270">270</a> 		assertStringFormat(<span class="jxr_string">"Value: %.2e"</span>, 1234.56);
-<a class="jxr_linenumber" name="L271" href="#L271">271</a> 		assertStringFormat(<span class="jxr_string">"Value: %S"</span>, <span class="jxr_string">"hello"</span>);
-<a class="jxr_linenumber" name="L272" href="#L272">272</a> 		assertStringFormat(<span class="jxr_string">"Value: %S"</span>, (String)<strong class="jxr_keyword">null</strong>);  <em class="jxr_comment">// Line 297: null -&gt; "null"</em>
-<a class="jxr_linenumber" name="L273" href="#L273">273</a> 		assertStringFormat(<span class="jxr_string">"Value: %B"</span>, <strong class="jxr_keyword">true</strong>);
-<a class="jxr_linenumber" name="L274" href="#L274">274</a> 		assertStringFormat(<span class="jxr_string">"Char: %C"</span>, 'a');
-<a class="jxr_linenumber" name="L275" href="#L275">275</a> 		assertStringFormat(<span class="jxr_string">"Float: %F"</span>, 3.14);
-<a class="jxr_linenumber" name="L276" href="#L276">276</a> 
-<a class="jxr_linenumber" name="L277" href="#L277">277</a> 		<em class="jxr_comment">// Errors</em>
-<a class="jxr_linenumber" name="L278" href="#L278">278</a> 		assertStringFormat(<span class="jxr_string">"Hello %s"</span>);
-<a class="jxr_linenumber" name="L279" href="#L279">279</a> 		assertStringFormat(<span class="jxr_string">"Hello %s and %s"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L280" href="#L280">280</a> 		assertStringFormat(<span class="jxr_string">"Hello %"</span>);
-<a class="jxr_linenumber" name="L281" href="#L281">281</a> 		assertStringFormat(<span class="jxr_string">"Hello %s and %"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L282" href="#L282">282</a> 		assertStringFormat(<span class="jxr_string">"Hello %x$s"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L283" href="#L283">283</a> 	}
-<a class="jxr_linenumber" name="L284" href="#L284">284</a> 
-<a class="jxr_linenumber" name="L285" href="#L285">285</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L286" href="#L286">286</a> 	<em class="jxr_comment">// Mixed format tests</em>
-<a class="jxr_linenumber" name="L287" href="#L287">287</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L288" href="#L288">288</a> 	@Test <strong class="jxr_keyword">void</strong> a03_mixedFormat() {
-<a class="jxr_linenumber" name="L289" href="#L289">289</a> 		assertMixedFormat(<span class="jxr_string">"Hello John, you have 5 items"</span>, <span class="jxr_string">"Hello {0}, you have %d items"</span>, <span class="jxr_string">"John"</span>, 5);
-<a class="jxr_linenumber" name="L290" href="#L290">290</a> 		assertMixedFormat(<span class="jxr_string">"User Alice has admin and 10 items"</span>, <span class="jxr_string">"User {0} has %s and {2} items"</span>, <span class="jxr_string">"Alice"</span>, <span class="jxr_string">"admin"</span>, 10);
-<a class="jxr_linenumber" name="L291" href="#L291">291</a> 		assertMixedFormat(<span class="jxr_string">"Alice loves Bob, and Alice also loves Charlie"</span>, <span class="jxr_string">"%1$s loves %2$s, and {0} also loves %3$s"</span>, <span class="jxr_string">"Alice"</span>, <span class="jxr_string">"Bob"</span>, <span class="jxr_string">"Charlie"</span>);
-<a class="jxr_linenumber" name="L292" href="#L292">292</a> 		assertMixedFormat(<span class="jxr_string">"Alice has 5 items, Bob has 3 items, total: 8"</span>, <span class="jxr_string">"{0} has %d items, {2} has %d items, total: %d"</span>, <span class="jxr_string">"Alice"</span>, 5, <span class="jxr_string">"Bob"</span>, 3, 8);
-<a class="jxr_linenumber" name="L293" href="#L293">293</a> 		assertMixedFormat(<span class="jxr_string">"Alice Bob Charlie"</span>, <span class="jxr_string">"{0} %2$s {2}"</span>, <span class="jxr_string">"Alice"</span>, <span class="jxr_string">"Bob"</span>, <span class="jxr_string">"Charlie"</span>);
-<a class="jxr_linenumber" name="L294" href="#L294">294</a> 		assertMixedFormat(<span class="jxr_string">"Hello John, you have 5 items"</span>, <span class="jxr_string">"Hello {0}, you have %d items"</span>, <span class="jxr_string">"John"</span>, 5);
-<a class="jxr_linenumber" name="L295" href="#L295">295</a> 		assertMixedFormat(<span class="jxr_string">"A B B D C"</span>, <span class="jxr_string">"{0} %s {1} %s {2}"</span>, <span class="jxr_string">"A"</span>, <span class="jxr_string">"B"</span>, <span class="jxr_string">"C"</span>, <span class="jxr_string">"D"</span>);
-<a class="jxr_linenumber" name="L296" href="#L296">296</a> 		assertMixedFormat(<span class="jxr_string">"ABB"</span>, <span class="jxr_string">"{0}%s{1}"</span>, <span class="jxr_string">"A"</span>, <span class="jxr_string">"B"</span>, <span class="jxr_string">"C"</span>);
-<a class="jxr_linenumber" name="L297" href="#L297">297</a> 		assertMixedFormat(<span class="jxr_string">"Hello and Hello are the same"</span>, <span class="jxr_string">"{0} and %1$s are the same"</span>, <span class="jxr_string">"Hello"</span>);
-<a class="jxr_linenumber" name="L298" href="#L298">298</a> 
-<a class="jxr_linenumber" name="L299" href="#L299">299</a> 		<em class="jxr_comment">// Errors</em>
-<a class="jxr_linenumber" name="L300" href="#L300">300</a> 		assertMixedFormat(<span class="jxr_string">"MissingFormatArgumentException: Format specifier '%s'"</span>, <span class="jxr_string">"Hello {0} and %s"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L301" href="#L301">301</a> 		assertMixedFormat(<span class="jxr_string">"John has 5 items and {2} friends"</span>, <span class="jxr_string">"{0} has %d items and {2} friends"</span>, <span class="jxr_string">"John"</span>, 5);
-<a class="jxr_linenumber" name="L302" href="#L302">302</a> 		assertMixedFormat(<span class="jxr_string">"MissingFormatArgumentException: Format specifier '%s'"</span>, <span class="jxr_string">"%1$s loves %2$s, and {0} also loves %3$s"</span>, <span class="jxr_string">"Alice"</span>, <span class="jxr_string">"Bob"</span>);
-<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_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L306" href="#L306">306</a> 	<em class="jxr_comment">// Supported but deviates from MessageFormat/String.format</em>
-<a class="jxr_linenumber" name="L307" href="#L307">307</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L308" href="#L308">308</a> 	@Test <strong class="jxr_keyword">void</strong> a04_supportedButDeviatesFromMessageFormat() {
-<a class="jxr_linenumber" name="L309" href="#L309">309</a> 		<em class="jxr_comment">// {} is not supported by MessageFormat, only by StringFormat as an extension</em>
-<a class="jxr_linenumber" name="L310" href="#L310">310</a> 		assertMixedFormat(<span class="jxr_string">"Hello John world"</span>, <span class="jxr_string">"Hello {} world"</span>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L311" href="#L311">311</a> 		assertMixedFormat(<span class="jxr_string">"A B C"</span>, <span class="jxr_string">"{} {} {}"</span>, <span class="jxr_string">"A"</span>, <span class="jxr_string">"B"</span>, <span class="jxr_string">"C"</span>);
-<a class="jxr_linenumber" name="L312" href="#L312">312</a> 		<em class="jxr_comment">// BigDecimal with %d - String.format throws exception, but our optimized code handles it</em>
-<a class="jxr_linenumber" name="L313" href="#L313">313</a> 		assertMixedFormat(<span class="jxr_string">"Number: 42"</span>, <span class="jxr_string">"Number: %d"</span>, <strong class="jxr_keyword">new</strong> BigDecimal(<span class="jxr_string">"42"</span>));
-<a class="jxr_linenumber" name="L314" href="#L314">314</a> 		<em class="jxr_comment">// MessageFormat throws NullPointerException when locale is null, but StringFormat handles it</em>
-<a class="jxr_linenumber" name="L315" href="#L315">315</a> 		<em class="jxr_comment">// So we test StringFormat's behavior directly instead of comparing with MessageFormat</em>
-<a class="jxr_linenumber" name="L316" href="#L316">316</a> 		assertMixedFormat(<span class="jxr_string">"Price: $19.99"</span>, <span class="jxr_string">"Price: {0,number,currency}"</span>, (Locale)<strong class="jxr_keyword">null</strong>, 19.99);
-<a class="jxr_linenumber" name="L317" href="#L317">317</a> 	}
-<a class="jxr_linenumber" name="L318" href="#L318">318</a> 
-<a class="jxr_linenumber" name="L319" href="#L319">319</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L320" href="#L320">320</a> 	<em class="jxr_comment">// Error handling</em>
-<a class="jxr_linenumber" name="L321" href="#L321">321</a> 	<em class="jxr_comment">//====================================================================================================</em>
-<a class="jxr_linenumber" name="L322" href="#L322">322</a> 	@Test <strong class="jxr_keyword">void</strong> a05_errors() {
-<a class="jxr_linenumber" name="L323" href="#L323">323</a> 		assertThrows(IllegalArgumentException.<strong class="jxr_keyword">class</strong>, () -&gt; <strong class="jxr_keyword">new</strong> StringFormat(<strong class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="L324" href="#L324">324</a> 		assertThrows(IllegalArgumentException.<strong class="jxr_keyword">class</strong>, () -&gt; fs(<strong class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="L325" href="#L325">325</a> 	}
-<a class="jxr_linenumber" name="L326" href="#L326">326</a> 
-<a class="jxr_linenumber" name="L327" href="#L327">327</a> 	@Test <strong class="jxr_keyword">void</strong> a06_caching() {
-<a class="jxr_linenumber" name="L328" href="#L328">328</a> 		<em class="jxr_comment">// Should return the same instance due to caching</em>
-<a class="jxr_linenumber" name="L329" href="#L329">329</a> 		assertSame(fs(<span class="jxr_string">"Hello {0}"</span>), fs(<span class="jxr_string">"Hello {0}"</span>));
-<a class="jxr_linenumber" name="L330" href="#L330">330</a> 
-<a class="jxr_linenumber" name="L331" href="#L331">331</a> 		<em class="jxr_comment">// Different patterns should return different instances</em>
-<a class="jxr_linenumber" name="L332" href="#L332">332</a> 		assertNotSame(fs(<span class="jxr_string">"Hello {0}"</span>), fs(<span class="jxr_string">"Hello %s"</span>));
-<a class="jxr_linenumber" name="L333" href="#L333">333</a> 
-<a class="jxr_linenumber" name="L334" href="#L334">334</a> 		<em class="jxr_comment">// Constructor doesn't use cache, so instances should be different</em>
-<a class="jxr_linenumber" name="L335" href="#L335">335</a> 		<strong class="jxr_keyword">var</strong> fmt1 = <strong class="jxr_keyword">new</strong> StringFormat(<span class="jxr_string">"Hello {0}"</span>);
-<a class="jxr_linenumber" name="L336" href="#L336">336</a> 		<strong class="jxr_keyword">var</strong> fmt2 = <strong class="jxr_keyword">new</strong> StringFormat(<span class="jxr_string">"Hello {0}"</span>);
-<a class="jxr_linenumber" name="L337" href="#L337">337</a> 		assertNotSame(fmt1, fmt2);
-<a class="jxr_linenumber" name="L338" href="#L338">338</a> 		assertEquals(fmt1, fmt2); <em class="jxr_comment">// But they should be equal</em>
-<a class="jxr_linenumber" name="L339" href="#L339">339</a> 	}
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> 
-<a class="jxr_linenumber" name="L341" href="#L341">341</a> 	@Test <strong class="jxr_keyword">void</strong> a07_equalsAndHashCode() {
-<a class="jxr_linenumber" name="L342" href="#L342">342</a> 		<strong class="jxr_keyword">var</strong> fmt1 = StringFormat.of(<span class="jxr_string">"Hello {0}"</span>);
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> 		<strong class="jxr_keyword">var</strong> fmt2 = StringFormat.of(<span class="jxr_string">"Hello {0}"</span>);
-<a class="jxr_linenumber" name="L344" href="#L344">344</a> 		<strong class="jxr_keyword">var</strong> fmt3 = StringFormat.of(<span class="jxr_string">"Hello %s"</span>);
-<a class="jxr_linenumber" name="L345" href="#L345">345</a> 
-<a class="jxr_linenumber" name="L346" href="#L346">346</a> 		assertEquals(fmt1, fmt2);
-<a class="jxr_linenumber" name="L347" href="#L347">347</a> 		assertNotEquals(fmt1, fmt3);
-<a class="jxr_linenumber" name="L348" href="#L348">348</a> 		assertEquals(fmt1.hashCode(), fmt2.hashCode());
-<a class="jxr_linenumber" name="L349" href="#L349">349</a> 	}
-<a class="jxr_linenumber" name="L350" href="#L350">350</a> 
-<a class="jxr_linenumber" name="L351" href="#L351">351</a> 	@Test <strong class="jxr_keyword">void</strong> a08_toString() {
-<a class="jxr_linenumber" name="L352" href="#L352">352</a> 		assertEquals(<span class="jxr_string">"Hello {0}"</span>, fs(<span class="jxr_string">"Hello {0}"</span>).toString());
-<a class="jxr_linenumber" name="L353" href="#L353">353</a> 	}
-<a class="jxr_linenumber" name="L354" href="#L354">354</a> 
-<a class="jxr_linenumber" name="L355" href="#L355">355</a> 	@Test <strong class="jxr_keyword">void</strong> a09_toPattern() {
-<a class="jxr_linenumber" name="L356" href="#L356">356</a> 		<em class="jxr_comment">// Literal tokens</em>
-<a class="jxr_linenumber" name="L357" href="#L357">357</a> 		assertEquals(<span class="jxr_string">"[L:Hello ]"</span>, fs(<span class="jxr_string">"Hello "</span>).toPattern());
-<a class="jxr_linenumber" name="L358" href="#L358">358</a> 		assertEquals(<span class="jxr_string">"[L:a ][L:{0}][L: b]"</span>, fs(<span class="jxr_string">"a '{0}' b"</span>).toPattern());  <em class="jxr_comment">// Single quotes don't escape MessageFormat</em>
-<a class="jxr_linenumber" name="L359" href="#L359">359</a> 
-<a class="jxr_linenumber" name="L360" href="#L360">360</a> 		<em class="jxr_comment">// MessageFormat tokens - simple (content == null) - Line 228: content == null branch</em>
-<a class="jxr_linenumber" name="L361" href="#L361">361</a> 		assertEquals(<span class="jxr_string">"[L:Hello ][M:s0]"</span>, fs(<span class="jxr_string">"Hello {0}"</span>).toPattern());
-<a class="jxr_linenumber" name="L362" href="#L362">362</a> 		assertEquals(<span class="jxr_string">"[L:Hello ][M:s0][L: ][M:s1]"</span>, fs(<span class="jxr_string">"Hello {0} {1}"</span>).toPattern());
-<a class="jxr_linenumber" name="L363" href="#L363">363</a> 
-<a class="jxr_linenumber" name="L364" href="#L364">364</a> 		<em class="jxr_comment">// MessageFormat tokens - complex (content != null) - Line 228: content != null branch</em>
-<a class="jxr_linenumber" name="L365" href="#L365">365</a> 		assertEquals(<span class="jxr_string">"[L:Price: ][M:o0:{0,number,currency}]"</span>, fs(<span class="jxr_string">"Price: {0,number,currency}"</span>).toPattern());
-<a class="jxr_linenumber" name="L366" href="#L366">366</a> 		assertEquals(<span class="jxr_string">"[L:Count: ][M:o0:{0,number,integer}]"</span>, fs(<span class="jxr_string">"Count: {0,number,integer}"</span>).toPattern());
-<a class="jxr_linenumber" name="L367" href="#L367">367</a> 		assertEquals(<span class="jxr_string">"[L:Date: ][M:o0:{0,date,short}]"</span>, fs(<span class="jxr_string">"Date: {0,date,short}"</span>).toPattern());
-<a class="jxr_linenumber" name="L368" href="#L368">368</a> 
-<a class="jxr_linenumber" name="L369" href="#L369">369</a> 		<em class="jxr_comment">// StringFormat tokens - Line 406: StringFormatToken.toString()</em>
-<a class="jxr_linenumber" name="L370" href="#L370">370</a> 		assertEquals(<span class="jxr_string">"[L:Hello ][S:s0:%s]"</span>, fs(<span class="jxr_string">"Hello %s"</span>).toPattern());  <em class="jxr_comment">// Simple format: 's'</em>
-<a class="jxr_linenumber" name="L371" href="#L371">371</a> 		assertEquals(<span class="jxr_string">"[L:Number: ][S:d0:%d]"</span>, fs(<span class="jxr_string">"Number: %d"</span>).toPattern());  <em class="jxr_comment">// Simple format: 'd'</em>
-<a class="jxr_linenumber" name="L372" href="#L372">372</a> 		assertEquals(<span class="jxr_string">"[L:Hex: ][S:x0:%x]"</span>, fs(<span class="jxr_string">"Hex: %x"</span>).toPattern());  <em class="jxr_comment">// Simple format: 'x'</em>
-<a class="jxr_linenumber" name="L373" href="#L373">373</a> 		assertEquals(<span class="jxr_string">"[L:Float: ][S:z0:%.2f]"</span>, fs(<span class="jxr_string">"Float: %.2f"</span>).toPattern());  <em class="jxr_comment">// Complex format: 'z' (other)</em>
-<a class="jxr_linenumber" name="L374" href="#L374">374</a> 		assertEquals(<span class="jxr_string">"[L:ID: ][S:z0:%05d]"</span>, fs(<span class="jxr_string">"ID: %05d"</span>).toPattern());  <em class="jxr_comment">// Complex format: 'z' (other)</em>
-<a class="jxr_linenumber" name="L375" href="#L375">375</a> 
-<a class="jxr_linenumber" name="L376" href="#L376">376</a> 		<em class="jxr_comment">// Mixed formats</em>
-<a class="jxr_linenumber" name="L377" href="#L377">377</a> 		assertEquals(<span class="jxr_string">"[L:Hello ][M:s0][L:, you have ][S:d1:%d][L: items]"</span>, fs(<span class="jxr_string">"Hello {0}, you have %d items"</span>).toPattern());
-<a class="jxr_linenumber" name="L378" href="#L378">378</a> 		assertEquals(<span class="jxr_string">"[L:Price: ][M:o0:{0,number,currency}][L: and ][S:s1:%s]"</span>, fs(<span class="jxr_string">"Price: {0,number,currency} and %s"</span>).toPattern());
-<a class="jxr_linenumber" name="L379" href="#L379">379</a> 
-<a class="jxr_linenumber" name="L380" href="#L380">380</a> 		<em class="jxr_comment">// Time conversions (2-character) - Line 529: 't' or 'T' handling</em>
-<a class="jxr_linenumber" name="L381" href="#L381">381</a> 		assertEquals(<span class="jxr_string">"[L:Month: ][S:z0:%tm]"</span>, fs(<span class="jxr_string">"Month: %tm"</span>).toPattern());  <em class="jxr_comment">// %tm is 2-character time conversion</em>
-<a class="jxr_linenumber" name="L382" href="#L382">382</a> 		assertEquals(<span class="jxr_string">"[L:Year: ][S:z0:%tY]"</span>, fs(<span class="jxr_string">"Year: %tY"</span>).toPattern());  <em class="jxr_comment">// %tY is 2-character time conversion</em>
-<a class="jxr_linenumber" name="L383" href="#L383">383</a> 		assertEquals(<span class="jxr_string">"[L:Date: ][S:z0:%TD]"</span>, fs(<span class="jxr_string">"Date: %TD"</span>).toPattern());  <em class="jxr_comment">// %TD is 2-character time conversion</em>
-<a class="jxr_linenumber" name="L384" href="#L384">384</a> 	}
-<a class="jxr_linenumber" name="L385" href="#L385">385</a> 
-<a class="jxr_linenumber" name="L386" href="#L386">386</a> 	@Test <strong class="jxr_keyword">void</strong> a10_veryLongPattern() {
-<a class="jxr_linenumber" name="L387" href="#L387">387</a> 		<strong class="jxr_keyword">var</strong> pattern = <span class="jxr_string">"Start: "</span> + IntStream.range(0, 10).mapToObj(i -&gt; <span class="jxr_string">"{"</span> + i + <span class="jxr_string">"}"</span>).collect(joining(<span class="jxr_string">" "</span>)) + <span class="jxr_string">" "</span>;
-<a class="jxr_linenumber" name="L388" href="#L388">388</a> 		<strong class="jxr_keyword">var</strong> args = IntStream.range(0, 10).boxed().toArray();
-<a class="jxr_linenumber" name="L389" href="#L389">389</a> 		assertMessageFormat(pattern, args);
-<a class="jxr_linenumber" name="L390" href="#L390">390</a> 	}
-<a class="jxr_linenumber" name="L391" href="#L391">391</a> 
-<a class="jxr_linenumber" name="L392" href="#L392">392</a> 	@Test <strong class="jxr_keyword">void</strong> a11_parseIndexErrors() {
-<a class="jxr_linenumber" name="L393" href="#L393">393</a> 		assertThrows(IllegalArgumentException.<strong class="jxr_keyword">class</strong>, () -&gt; fs(<span class="jxr_string">"Hello {abc}"</span>));
-<a class="jxr_linenumber" name="L394" href="#L394">394</a> 	}
-<a class="jxr_linenumber" name="L395" href="#L395">395</a> 
-<a class="jxr_linenumber" name="L396" href="#L396">396</a> 	@Test <strong class="jxr_keyword">void</strong> a12_localeHandling() {
-<a class="jxr_linenumber" name="L397" href="#L397">397</a> 		<em class="jxr_comment">// Lines 259-260: Test locale null checks and default locale detection in StringFormatToken</em>
-<a class="jxr_linenumber" name="L398" href="#L398">398</a> 		<em class="jxr_comment">// Line 259: var l = locale == null ? Locale.getDefault() : locale;</em>
-<a class="jxr_linenumber" name="L399" href="#L399">399</a> 		<em class="jxr_comment">// Line 260: var dl = locale == null || locale.equals(Locale.getDefault());</em>
-<a class="jxr_linenumber" name="L400" href="#L400">400</a> 
-<a class="jxr_linenumber" name="L401" href="#L401">401</a> 		<em class="jxr_comment">// Test with null locale (covers locale == null on both lines)</em>
-<a class="jxr_linenumber" name="L402" href="#L402">402</a> 		assertStringFormat(<span class="jxr_string">"Hello %s"</span>, (Locale)<strong class="jxr_keyword">null</strong>, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L403" href="#L403">403</a> 		assertStringFormat(<span class="jxr_string">"Number: %d"</span>, (Locale)<strong class="jxr_keyword">null</strong>, 42);
-<a class="jxr_linenumber" name="L404" href="#L404">404</a> 		assertStringFormat(<span class="jxr_string">"Float: %.2f"</span>, (Locale)<strong class="jxr_keyword">null</strong>, 3.14);  <em class="jxr_comment">// Use .2f for consistent formatting</em>
-<a class="jxr_linenumber" name="L405" href="#L405">405</a> 
-<a class="jxr_linenumber" name="L406" href="#L406">406</a> 		<em class="jxr_comment">// Test with default locale (covers locale.equals(Locale.getDefault()) on line 260)</em>
-<a class="jxr_linenumber" name="L407" href="#L407">407</a> 		assertStringFormat(<span class="jxr_string">"Hello %s"</span>, Locale.getDefault(), <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> 		assertStringFormat(<span class="jxr_string">"Number: %d"</span>, Locale.getDefault(), 42);
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> 		assertStringFormat(<span class="jxr_string">"Float: %.2f"</span>, Locale.getDefault(), 3.14);  <em class="jxr_comment">// Use .2f for consistent formatting</em>
-<a class="jxr_linenumber" name="L410" href="#L410">410</a> 
-<a class="jxr_linenumber" name="L411" href="#L411">411</a> 		<em class="jxr_comment">// Test with non-default locale (covers else branch on line 259 and false case on line 260)</em>
-<a class="jxr_linenumber" name="L412" href="#L412">412</a> 		assertStringFormat(<span class="jxr_string">"Hello %s"</span>, Locale.FRANCE, <span class="jxr_string">"John"</span>);
-<a class="jxr_linenumber" name="L413" href="#L413">413</a> 		assertStringFormat(<span class="jxr_string">"Number: %d"</span>, Locale.GERMANY, 42);
-<a class="jxr_linenumber" name="L414" href="#L414">414</a> 		assertStringFormat(<span class="jxr_string">"Float: %.2f"</span>, Locale.JAPAN, 3.14);  <em class="jxr_comment">// Use .2f for consistent formatting</em>
-<a class="jxr_linenumber" name="L415" href="#L415">415</a> 	}
-<a class="jxr_linenumber" name="L416" href="#L416">416</a> }
-</pre>
-<hr/>
-<div id="footer">© 2016–2025 <a href="https://www.apache.org/">The Apache Software Foundation</a></div>
-</body>
-</html>
diff --git a/site/xref-test/org/apache/juneau/common/utils/Utils_Test.html b/site/xref-test/org/apache/juneau/common/utils/Utils_Test.html
index 7be24cbf06..8703df9c7b 100644
--- a/site/xref-test/org/apache/juneau/common/utils/Utils_Test.html
+++ b/site/xref-test/org/apache/juneau/common/utils/Utils_Test.html
@@ -66,7 +66,7 @@
 <a class="jxr_linenumber" name="L58" href="#L58">58</a>  
 <a class="jxr_linenumber" name="L59" href="#L59">59</a>  		<em class="jxr_comment">// Null handling</em>
 <a class="jxr_linenumber" name="L60" href="#L60">60</a>  		assertEquals(<span class="jxr_string">"Value: null"</span>, f(<span class="jxr_string">"Value: %s"</span>, (String)<strong class="jxr_keyword">null</strong>));
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  		assertNull(f(<strong class="jxr_keyword">null</strong>, <span class="jxr_string">"test"</span>));
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  		assertThrows(IllegalArgumentException.<strong class="jxr_keyword">class</strong>, ()-&gt;f(<strong class="jxr_keyword">null</strong>, <span class="jxr_string">"test"</span>));
 <a class="jxr_linenumber" name="L62" href="#L62">62</a>  		assertEquals(<span class="jxr_string">"test"</span>, f(<span class="jxr_string">"test"</span>));
 <a class="jxr_linenumber" name="L63" href="#L63">63</a>  	}
 <a class="jxr_linenumber" name="L64" href="#L64">64</a>  
@@ -91,7 +91,7 @@
 <a class="jxr_linenumber" name="L83" href="#L83">83</a>  
 <a class="jxr_linenumber" name="L84" href="#L84">84</a>  		<em class="jxr_comment">// Null handling</em>
 <a class="jxr_linenumber" name="L85" href="#L85">85</a>  		<strong class="jxr_keyword">var</strong> nullSupplier = fs(<strong class="jxr_keyword">null</strong>, <span class="jxr_string">"test"</span>);
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>  		assertNull(nullSupplier.get());
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  		assertThrows(IllegalArgumentException.<strong class="jxr_keyword">class</strong>, ()-&gt;nullSupplier.get());
 <a class="jxr_linenumber" name="L87" href="#L87">87</a>  
 <a class="jxr_linenumber" name="L88" href="#L88">88</a>  		<em class="jxr_comment">// Empty pattern</em>
 <a class="jxr_linenumber" name="L89" href="#L89">89</a>  		<strong class="jxr_keyword">var</strong> emptySupplier = fs(<span class="jxr_string">""</span>);
diff --git a/site/xref-test/org/apache/juneau/common/utils/package-frame.html b/site/xref-test/org/apache/juneau/common/utils/package-frame.html
index a82d2138be..97af376b8e 100644
--- a/site/xref-test/org/apache/juneau/common/utils/package-frame.html
+++ b/site/xref-test/org/apache/juneau/common/utils/package-frame.html
@@ -126,9 +126,6 @@
                 <li>
                     <a href="FileUtils_Test.html#FileUtils_Test" target="classFrame">FileUtils_Test</a>
                 </li>
-                <li>
-                    <a href="FormatString_Test.html#FormatString_Test" target="classFrame">FormatString_Test</a>
-                </li>
                 <li>
                     <a href="GranularZonedDateTime_Test.html#GranularZonedDateTime_Test" target="classFrame">GranularZonedDateTime_Test</a>
                 </li>
diff --git a/site/xref-test/org/apache/juneau/common/utils/package-summary.html b/site/xref-test/org/apache/juneau/common/utils/package-summary.html
index ad8bab065d..3b414465af 100644
--- a/site/xref-test/org/apache/juneau/common/utils/package-summary.html
+++ b/site/xref-test/org/apache/juneau/common/utils/package-summary.html
@@ -247,136 +247,131 @@
                                 </td>
                             </tr>
                             <tr class="altColor">
-                                <td class="colFirst colLast">
-                                    <a href="FormatString_Test.html#FormatString_Test" target="classFrame" title="class in org.apache.juneau.common.utils">FormatString_Test</a>
-                                </td>
-                            </tr>
-                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="GranularZonedDateTime_Test.html#GranularZonedDateTime_Test" target="classFrame" title="class in org.apache.juneau.common.utils">GranularZonedDateTime_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="HashCode_Test.html#HashCode_Test" target="classFrame" title="class in org.apache.juneau.common.utils">HashCode_Test</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="HashCode_Test.html#HashCode_Test.TestObject" target="classFrame" title="class in org.apache.juneau.common.utils">HashCode_Test.TestObject</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="IOUtils_Test.html#IOUtils_Test" target="classFrame" title="class in org.apache.juneau.common.utils">IOUtils_Test</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="IOUtils_Test.html#IOUtils_Test.TestInputStream" target="classFrame" title="class in org.apache.juneau.common.utils">IOUtils_Test.TestInputStream</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="IOUtils_Test.html#IOUtils_Test.TestOutputStream" target="classFrame" title="class in org.apache.juneau.common.utils">IOUtils_Test.TestOutputStream</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="IOUtils_Test.html#IOUtils_Test.TestReader" target="classFrame" title="class in org.apache.juneau.common.utils">IOUtils_Test.TestReader</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="IOUtils_Test.html#IOUtils_Test.TestWriter" target="classFrame" title="class in org.apache.juneau.common.utils">IOUtils_Test.TestWriter</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="MimeTypeDetector_Test.html#MimeTypeDetector_Test" target="classFrame" title="class in org.apache.juneau.common.utils">MimeTypeDetector_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="PredicateUtils_Test.html#PredicateUtils_Test" target="classFrame" title="class in org.apache.juneau.common.utils">PredicateUtils_Test</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="PredicateUtils_Test.html#PredicateUtils_Test.DeprecatedPublicClass" target="classFrame" title="class in org.apache.juneau.common.utils">PredicateUtils_Test.DeprecatedPublicClass</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="PredicateUtils_Test.html#PredicateUtils_Test.PrivateClass" target="classFrame" title="class in org.apache.juneau.common.utils">PredicateUtils_Test.PrivateClass</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="PredicateUtils_Test.html#PredicateUtils_Test.PublicClass" target="classFrame" title="class in org.apache.juneau.common.utils">PredicateUtils_Test.PublicClass</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="PredicateUtils_Test.html#PredicateUtils_Test.PublicFinalClass" target="classFrame" title="class in org.apache.juneau.common.utils">PredicateUtils_Test.PublicFinalClass</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="ResourceBundleUtils_Test.html#ResourceBundleUtils_Test" target="classFrame" title="class in org.apache.juneau.common.utils">ResourceBundleUtils_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="SimpleReadWriteLock_Test.html#SimpleReadWriteLock_Test" target="classFrame" title="class in org.apache.juneau.common.utils">SimpleReadWriteLock_Test</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="StateEnum_Test.html#StateEnum_Test" target="classFrame" title="class in org.apache.juneau.common.utils">StateEnum_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="StringFormat_Test.html#StringFormat_Test" target="classFrame" title="class in org.apache.juneau.common.utils">StringFormat_Test</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="StringUtils_Test.html#StringUtils_Test" target="classFrame" title="class in org.apache.juneau.common.utils">StringUtils_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="StringUtils_Test.html#StringUtils_Test.BadNumber" target="classFrame" title="class in org.apache.juneau.common.utils">StringUtils_Test.BadNumber</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="ThrowableUtils_Test.html#ThrowableUtils_Test" target="classFrame" title="class in org.apache.juneau.common.utils">ThrowableUtils_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="Utils_Test.html#Utils_Test" target="classFrame" title="class in org.apache.juneau.common.utils">Utils_Test</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="VersionRange_Test.html#VersionRange_Test" target="classFrame" title="class in org.apache.juneau.common.utils">VersionRange_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="VersionRange_Test.html#VersionRange_Test.Input" target="classFrame" title="class in org.apache.juneau.common.utils">VersionRange_Test.Input</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="Version_Test.html#Version_Test" target="classFrame" title="class in org.apache.juneau.common.utils">Version_Test</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="WeightedAverage_Test.html#WeightedAverage_Test" target="classFrame" title="class in org.apache.juneau.common.utils">WeightedAverage_Test</a>
                                 </td>
diff --git a/site/xref-test/org/apache/juneau/rest/annotation/Path_Test.html b/site/xref-test/org/apache/juneau/rest/annotation/Path_Test.html
index 3b51100769..e814986995 100644
--- a/site/xref-test/org/apache/juneau/rest/annotation/Path_Test.html
+++ b/site/xref-test/org/apache/juneau/rest/annotation/Path_Test.html
@@ -391,501 +391,498 @@
 <a class="jxr_linenumber" name="L383" href="#L383">383</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> F  {
 <a class="jxr_linenumber" name="L384" href="#L384">384</a> 		@RestGet(path=<span class="jxr_string">"/"</span>)
 <a class="jxr_linenumber" name="L385" href="#L385">385</a> 		<strong class="jxr_keyword">public</strong> String a(RequestPathParams path) {
-<a class="jxr_linenumber" name="L386" href="#L386">386</a> 			<strong class="jxr_keyword">return</strong> format(<span class="jxr_string">"a: {0}"</span>, path.toString());
+<a class="jxr_linenumber" name="L386" href="#L386">386</a> 			<strong class="jxr_keyword">return</strong> Utils.f(<span class="jxr_string">"a: {0}"</span>, path.toString());
 <a class="jxr_linenumber" name="L387" href="#L387">387</a> 		}
 <a class="jxr_linenumber" name="L388" href="#L388">388</a> 		@RestGet(path=<span class="jxr_string">"/*"</span>)
 <a class="jxr_linenumber" name="L389" href="#L389">389</a> 		<strong class="jxr_keyword">public</strong> String b(RequestPathParams path) {
-<a class="jxr_linenumber" name="L390" href="#L390">390</a> 			<strong class="jxr_keyword">return</strong> format(<span class="jxr_string">"b: {0}"</span>, path.toString());
+<a class="jxr_linenumber" name="L390" href="#L390">390</a> 			<strong class="jxr_keyword">return</strong> Utils.f(<span class="jxr_string">"b: {0}"</span>, path.toString());
 <a class="jxr_linenumber" name="L391" href="#L391">391</a> 		}
 <a class="jxr_linenumber" name="L392" href="#L392">392</a> 		@RestGet(path=<span class="jxr_string">"/fc"</span>)
 <a class="jxr_linenumber" name="L393" href="#L393">393</a> 		<strong class="jxr_keyword">public</strong> String c(RequestPathParams path) {
-<a class="jxr_linenumber" name="L394" href="#L394">394</a> 			<strong class="jxr_keyword">return</strong> format(<span class="jxr_string">"c: {0}"</span>, path.toString());
+<a class="jxr_linenumber" name="L394" href="#L394">394</a> 			<strong class="jxr_keyword">return</strong> Utils.f(<span class="jxr_string">"c: {0}"</span>, path.toString());
 <a class="jxr_linenumber" name="L395" href="#L395">395</a> 		}
 <a class="jxr_linenumber" name="L396" href="#L396">396</a> 		@RestGet(path=<span class="jxr_string">"/fd/{c}/{d}"</span>)
 <a class="jxr_linenumber" name="L397" href="#L397">397</a> 		<strong class="jxr_keyword">public</strong> String d(RequestPathParams path) {
-<a class="jxr_linenumber" name="L398" href="#L398">398</a> 			<strong class="jxr_keyword">return</strong> format(<span class="jxr_string">"d: {0}"</span>, path.toString());
+<a class="jxr_linenumber" name="L398" href="#L398">398</a> 			<strong class="jxr_keyword">return</strong> Utils.f(<span class="jxr_string">"d: {0}"</span>, path.toString());
 <a class="jxr_linenumber" name="L399" href="#L399">399</a> 		}
 <a class="jxr_linenumber" name="L400" href="#L400">400</a> 		@RestGet(path=<span class="jxr_string">"/fe/{a}/{b}"</span>)
 <a class="jxr_linenumber" name="L401" href="#L401">401</a> 		<strong class="jxr_keyword">public</strong> String e(RequestPathParams path) {
-<a class="jxr_linenumber" name="L402" href="#L402">402</a> 			<strong class="jxr_keyword">return</strong> format(<span class="jxr_string">"e: {0}"</span>, path.toString());
+<a class="jxr_linenumber" name="L402" href="#L402">402</a> 			<strong class="jxr_keyword">return</strong> Utils.f(<span class="jxr_string">"e: {0}"</span>, path.toString());
 <a class="jxr_linenumber" name="L403" href="#L403">403</a> 		}
 <a class="jxr_linenumber" name="L404" href="#L404">404</a> 		@RestGet(path=<span class="jxr_string">"/ff/{c}/{d}/*"</span>)
 <a class="jxr_linenumber" name="L405" href="#L405">405</a> 		<strong class="jxr_keyword">public</strong> String f(RequestPathParams path) {
-<a class="jxr_linenumber" name="L406" href="#L406">406</a> 			<strong class="jxr_keyword">return</strong> format(<span class="jxr_string">"f: {0}"</span>, path.toString());
+<a class="jxr_linenumber" name="L406" href="#L406">406</a> 			<strong class="jxr_keyword">return</strong> Utils.f(<span class="jxr_string">"f: {0}"</span>, path.toString());
 <a class="jxr_linenumber" name="L407" href="#L407">407</a> 		}
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String format(String msg, Object...args) {
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> 		<strong class="jxr_keyword">return</strong> StringUtils.mformat(msg, args);
-<a class="jxr_linenumber" name="L410" href="#L410">410</a> 	}
-<a class="jxr_linenumber" name="L411" href="#L411">411</a> 	}
-<a class="jxr_linenumber" name="L412" href="#L412">412</a> 
-<a class="jxr_linenumber" name="L413" href="#L413">413</a> 	@Test <strong class="jxr_keyword">void</strong> f01_pathVariablesOnClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L414" href="#L414">414</a> 		<strong class="jxr_keyword">var</strong> f = MockRestClient.createLax(F.<strong class="jxr_keyword">class</strong>).servletPath(<span class="jxr_string">"/f"</span>).defaultRequestConfig(RequestConfig.custom().setNormalizeUri(false).build()).build();
-<a class="jxr_linenumber" name="L415" href="#L415">415</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L408" href="#L408">408</a> 	}
+<a class="jxr_linenumber" name="L409" href="#L409">409</a> 
+<a class="jxr_linenumber" name="L410" href="#L410">410</a> 	@Test <strong class="jxr_keyword">void</strong> f01_pathVariablesOnClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L411" href="#L411">411</a> 		<strong class="jxr_keyword">var</strong> f = MockRestClient.createLax(F.<strong class="jxr_keyword">class</strong>).servletPath(<span class="jxr_string">"/f"</span>).defaultRequestConfig(RequestConfig.custom().setNormalizeUri(false).build()).build();
+<a class="jxr_linenumber" name="L412" href="#L412">412</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L413" href="#L413">413</a> 			.run()
+<a class="jxr_linenumber" name="L414" href="#L414">414</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2'}"</span>);
+<a class="jxr_linenumber" name="L415" href="#L415">415</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1"</span>)
 <a class="jxr_linenumber" name="L416" href="#L416">416</a> 			.run()
-<a class="jxr_linenumber" name="L417" href="#L417">417</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2'}"</span>);
-<a class="jxr_linenumber" name="L418" href="#L418">418</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1"</span>)
+<a class="jxr_linenumber" name="L417" href="#L417">417</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L418" href="#L418">418</a> 		f.get(<span class="jxr_string">"http://localhost/f"</span>)
 <a class="jxr_linenumber" name="L419" href="#L419">419</a> 			.run()
 <a class="jxr_linenumber" name="L420" href="#L420">420</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L421" href="#L421">421</a> 		f.get(<span class="jxr_string">"http://localhost/f"</span>)
+<a class="jxr_linenumber" name="L421" href="#L421">421</a> 		f.get(<span class="jxr_string">"http://localhost/f//"</span>)
 <a class="jxr_linenumber" name="L422" href="#L422">422</a> 			.run()
 <a class="jxr_linenumber" name="L423" href="#L423">423</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L424" href="#L424">424</a> 		f.get(<span class="jxr_string">"http://localhost/f//"</span>)
+<a class="jxr_linenumber" name="L424" href="#L424">424</a> 		f.get(<span class="jxr_string">"http://localhost/f/x/"</span>)
 <a class="jxr_linenumber" name="L425" href="#L425">425</a> 			.run()
 <a class="jxr_linenumber" name="L426" href="#L426">426</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L427" href="#L427">427</a> 		f.get(<span class="jxr_string">"http://localhost/f/x/"</span>)
+<a class="jxr_linenumber" name="L427" href="#L427">427</a> 		f.get(<span class="jxr_string">"http://localhost/f//x"</span>)
 <a class="jxr_linenumber" name="L428" href="#L428">428</a> 			.run()
 <a class="jxr_linenumber" name="L429" href="#L429">429</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L430" href="#L430">430</a> 		f.get(<span class="jxr_string">"http://localhost/f//x"</span>)
+<a class="jxr_linenumber" name="L430" href="#L430">430</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/foo"</span>)
 <a class="jxr_linenumber" name="L431" href="#L431">431</a> 			.run()
-<a class="jxr_linenumber" name="L432" href="#L432">432</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L433" href="#L433">433</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/foo"</span>)
+<a class="jxr_linenumber" name="L432" href="#L432">432</a> 			.assertContent(<span class="jxr_string">"b: {a:'x1',b:'x2','/**':'foo','/*':'foo'}"</span>);
+<a class="jxr_linenumber" name="L433" href="#L433">433</a> 		f.get(<span class="jxr_string">"http://localhost/f///foo"</span>)
 <a class="jxr_linenumber" name="L434" href="#L434">434</a> 			.run()
-<a class="jxr_linenumber" name="L435" href="#L435">435</a> 			.assertContent(<span class="jxr_string">"b: {a:'x1',b:'x2','/**':'foo','/*':'foo'}"</span>);
-<a class="jxr_linenumber" name="L436" href="#L436">436</a> 		f.get(<span class="jxr_string">"http://localhost/f///foo"</span>)
+<a class="jxr_linenumber" name="L435" href="#L435">435</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L436" href="#L436">436</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1//foo"</span>)
 <a class="jxr_linenumber" name="L437" href="#L437">437</a> 			.run()
 <a class="jxr_linenumber" name="L438" href="#L438">438</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L439" href="#L439">439</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1//foo"</span>)
+<a class="jxr_linenumber" name="L439" href="#L439">439</a> 		f.get(<span class="jxr_string">"http://localhost/f//x2/foo"</span>)
 <a class="jxr_linenumber" name="L440" href="#L440">440</a> 			.run()
 <a class="jxr_linenumber" name="L441" href="#L441">441</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L442" href="#L442">442</a> 		f.get(<span class="jxr_string">"http://localhost/f//x2/foo"</span>)
+<a class="jxr_linenumber" name="L442" href="#L442">442</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/fc"</span>)
 <a class="jxr_linenumber" name="L443" href="#L443">443</a> 			.run()
-<a class="jxr_linenumber" name="L444" href="#L444">444</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L445" href="#L445">445</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/fc"</span>)
+<a class="jxr_linenumber" name="L444" href="#L444">444</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2'}"</span>);
+<a class="jxr_linenumber" name="L445" href="#L445">445</a> 		f.get(<span class="jxr_string">"http://localhost/f///a"</span>)
 <a class="jxr_linenumber" name="L446" href="#L446">446</a> 			.run()
-<a class="jxr_linenumber" name="L447" href="#L447">447</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2'}"</span>);
-<a class="jxr_linenumber" name="L448" href="#L448">448</a> 		f.get(<span class="jxr_string">"http://localhost/f///a"</span>)
+<a class="jxr_linenumber" name="L447" href="#L447">447</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L448" href="#L448">448</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1//a"</span>)
 <a class="jxr_linenumber" name="L449" href="#L449">449</a> 			.run()
 <a class="jxr_linenumber" name="L450" href="#L450">450</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L451" href="#L451">451</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1//a"</span>)
+<a class="jxr_linenumber" name="L451" href="#L451">451</a> 		f.get(<span class="jxr_string">"http://localhost/f//x2/a"</span>)
 <a class="jxr_linenumber" name="L452" href="#L452">452</a> 			.run()
 <a class="jxr_linenumber" name="L453" href="#L453">453</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L454" href="#L454">454</a> 		f.get(<span class="jxr_string">"http://localhost/f//x2/a"</span>)
+<a class="jxr_linenumber" name="L454" href="#L454">454</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/fd/x3/x4"</span>)
 <a class="jxr_linenumber" name="L455" href="#L455">455</a> 			.run()
-<a class="jxr_linenumber" name="L456" href="#L456">456</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L457" href="#L457">457</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/fd/x3/x4"</span>)
+<a class="jxr_linenumber" name="L456" href="#L456">456</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L457" href="#L457">457</a> 		f.get(<span class="jxr_string">"http://localhost/f//x2/b/x3/x4"</span>)
 <a class="jxr_linenumber" name="L458" href="#L458">458</a> 			.run()
-<a class="jxr_linenumber" name="L459" href="#L459">459</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L460" href="#L460">460</a> 		f.get(<span class="jxr_string">"http://localhost/f//x2/b/x3/x4"</span>)
+<a class="jxr_linenumber" name="L459" href="#L459">459</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L460" href="#L460">460</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1//b/x3/x4"</span>)
 <a class="jxr_linenumber" name="L461" href="#L461">461</a> 			.run()
 <a class="jxr_linenumber" name="L462" href="#L462">462</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L463" href="#L463">463</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1//b/x3/x4"</span>)
+<a class="jxr_linenumber" name="L463" href="#L463">463</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/b//x4"</span>)
 <a class="jxr_linenumber" name="L464" href="#L464">464</a> 			.run()
-<a class="jxr_linenumber" name="L465" href="#L465">465</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L466" href="#L466">466</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/b//x4"</span>)
+<a class="jxr_linenumber" name="L465" href="#L465">465</a> 			.assertStatus(200);
+<a class="jxr_linenumber" name="L466" href="#L466">466</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/b/x3/"</span>)
 <a class="jxr_linenumber" name="L467" href="#L467">467</a> 			.run()
 <a class="jxr_linenumber" name="L468" href="#L468">468</a> 			.assertStatus(200);
-<a class="jxr_linenumber" name="L469" href="#L469">469</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/b/x3/"</span>)
+<a class="jxr_linenumber" name="L469" href="#L469">469</a> 		f.get(<span class="jxr_string">"http://localhost/f///b//"</span>)
 <a class="jxr_linenumber" name="L470" href="#L470">470</a> 			.run()
-<a class="jxr_linenumber" name="L471" href="#L471">471</a> 			.assertStatus(200);
-<a class="jxr_linenumber" name="L472" href="#L472">472</a> 		f.get(<span class="jxr_string">"http://localhost/f///b//"</span>)
+<a class="jxr_linenumber" name="L471" href="#L471">471</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L472" href="#L472">472</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/fe/x3/x4"</span>)
 <a class="jxr_linenumber" name="L473" href="#L473">473</a> 			.run()
-<a class="jxr_linenumber" name="L474" href="#L474">474</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L475" href="#L475">475</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/fe/x3/x4"</span>)
+<a class="jxr_linenumber" name="L474" href="#L474">474</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4'}"</span>);
+<a class="jxr_linenumber" name="L475" href="#L475">475</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4"</span>)
 <a class="jxr_linenumber" name="L476" href="#L476">476</a> 			.run()
-<a class="jxr_linenumber" name="L477" href="#L477">477</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4'}"</span>);
-<a class="jxr_linenumber" name="L478" href="#L478">478</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4"</span>)
+<a class="jxr_linenumber" name="L477" href="#L477">477</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L478" href="#L478">478</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/"</span>)
 <a class="jxr_linenumber" name="L479" href="#L479">479</a> 			.run()
-<a class="jxr_linenumber" name="L480" href="#L480">480</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L481" href="#L481">481</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/"</span>)
+<a class="jxr_linenumber" name="L480" href="#L480">480</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'','/*':''}"</span>);
+<a class="jxr_linenumber" name="L481" href="#L481">481</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/foo/bar"</span>)
 <a class="jxr_linenumber" name="L482" href="#L482">482</a> 			.run()
-<a class="jxr_linenumber" name="L483" href="#L483">483</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'','/*':''}"</span>);
-<a class="jxr_linenumber" name="L484" href="#L484">484</a> 		f.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/foo/bar"</span>)
-<a class="jxr_linenumber" name="L485" href="#L485">485</a> 			.run()
-<a class="jxr_linenumber" name="L486" href="#L486">486</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
-<a class="jxr_linenumber" name="L487" href="#L487">487</a> 	}
-<a class="jxr_linenumber" name="L488" href="#L488">488</a> 
-<a class="jxr_linenumber" name="L489" href="#L489">489</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L490" href="#L490">490</a> 	<em class="jxr_comment">// Path variables on child class.</em>
-<a class="jxr_linenumber" name="L491" href="#L491">491</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L483" href="#L483">483</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
+<a class="jxr_linenumber" name="L484" href="#L484">484</a> 	}
+<a class="jxr_linenumber" name="L485" href="#L485">485</a> 
+<a class="jxr_linenumber" name="L486" href="#L486">486</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L487" href="#L487">487</a> 	<em class="jxr_comment">// Path variables on child class.</em>
+<a class="jxr_linenumber" name="L488" href="#L488">488</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L489" href="#L489">489</a> 
+<a class="jxr_linenumber" name="L490" href="#L490">490</a> 	@Rest(children={F.<strong class="jxr_keyword">class</strong>})
+<a class="jxr_linenumber" name="L491" href="#L491">491</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> G {}
 <a class="jxr_linenumber" name="L492" href="#L492">492</a> 
-<a class="jxr_linenumber" name="L493" href="#L493">493</a> 	@Rest(children={F.<strong class="jxr_keyword">class</strong>})
-<a class="jxr_linenumber" name="L494" href="#L494">494</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> G {}
-<a class="jxr_linenumber" name="L495" href="#L495">495</a> 
-<a class="jxr_linenumber" name="L496" href="#L496">496</a> 	@Test <strong class="jxr_keyword">void</strong> g01_pathVariablesOnChildClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L497" href="#L497">497</a> 		<strong class="jxr_keyword">var</strong> g = MockRestClient.createLax(G.<strong class="jxr_keyword">class</strong>).defaultRequestConfig(RequestConfig.custom().setNormalizeUri(false).build()).build();
-<a class="jxr_linenumber" name="L498" href="#L498">498</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L493" href="#L493">493</a> 	@Test <strong class="jxr_keyword">void</strong> g01_pathVariablesOnChildClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L494" href="#L494">494</a> 		<strong class="jxr_keyword">var</strong> g = MockRestClient.createLax(G.<strong class="jxr_keyword">class</strong>).defaultRequestConfig(RequestConfig.custom().setNormalizeUri(false).build()).build();
+<a class="jxr_linenumber" name="L495" href="#L495">495</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L496" href="#L496">496</a> 			.run()
+<a class="jxr_linenumber" name="L497" href="#L497">497</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2'}"</span>);
+<a class="jxr_linenumber" name="L498" href="#L498">498</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1"</span>)
 <a class="jxr_linenumber" name="L499" href="#L499">499</a> 			.run()
-<a class="jxr_linenumber" name="L500" href="#L500">500</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2'}"</span>);
-<a class="jxr_linenumber" name="L501" href="#L501">501</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1"</span>)
+<a class="jxr_linenumber" name="L500" href="#L500">500</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L501" href="#L501">501</a> 		g.get(<span class="jxr_string">"http://localhost/f"</span>)
 <a class="jxr_linenumber" name="L502" href="#L502">502</a> 			.run()
 <a class="jxr_linenumber" name="L503" href="#L503">503</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L504" href="#L504">504</a> 		g.get(<span class="jxr_string">"http://localhost/f"</span>)
+<a class="jxr_linenumber" name="L504" href="#L504">504</a> 		g.get(<span class="jxr_string">"http://localhost/f//"</span>)
 <a class="jxr_linenumber" name="L505" href="#L505">505</a> 			.run()
 <a class="jxr_linenumber" name="L506" href="#L506">506</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L507" href="#L507">507</a> 		g.get(<span class="jxr_string">"http://localhost/f//"</span>)
+<a class="jxr_linenumber" name="L507" href="#L507">507</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/"</span>)
 <a class="jxr_linenumber" name="L508" href="#L508">508</a> 			.run()
 <a class="jxr_linenumber" name="L509" href="#L509">509</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L510" href="#L510">510</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/"</span>)
+<a class="jxr_linenumber" name="L510" href="#L510">510</a> 		g.get(<span class="jxr_string">"http://localhost/f//x2"</span>)
 <a class="jxr_linenumber" name="L511" href="#L511">511</a> 			.run()
 <a class="jxr_linenumber" name="L512" href="#L512">512</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L513" href="#L513">513</a> 		g.get(<span class="jxr_string">"http://localhost/f//x2"</span>)
+<a class="jxr_linenumber" name="L513" href="#L513">513</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/fc"</span>)
 <a class="jxr_linenumber" name="L514" href="#L514">514</a> 			.run()
-<a class="jxr_linenumber" name="L515" href="#L515">515</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L516" href="#L516">516</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/fc"</span>)
+<a class="jxr_linenumber" name="L515" href="#L515">515</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2'}"</span>);
+<a class="jxr_linenumber" name="L516" href="#L516">516</a> 		g.get(<span class="jxr_string">"http://localhost/f///a"</span>)
 <a class="jxr_linenumber" name="L517" href="#L517">517</a> 			.run()
-<a class="jxr_linenumber" name="L518" href="#L518">518</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2'}"</span>);
-<a class="jxr_linenumber" name="L519" href="#L519">519</a> 		g.get(<span class="jxr_string">"http://localhost/f///a"</span>)
+<a class="jxr_linenumber" name="L518" href="#L518">518</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L519" href="#L519">519</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1//a"</span>)
 <a class="jxr_linenumber" name="L520" href="#L520">520</a> 			.run()
 <a class="jxr_linenumber" name="L521" href="#L521">521</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L522" href="#L522">522</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1//a"</span>)
+<a class="jxr_linenumber" name="L522" href="#L522">522</a> 		g.get(<span class="jxr_string">"http://localhost/f//x2/a"</span>)
 <a class="jxr_linenumber" name="L523" href="#L523">523</a> 			.run()
 <a class="jxr_linenumber" name="L524" href="#L524">524</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L525" href="#L525">525</a> 		g.get(<span class="jxr_string">"http://localhost/f//x2/a"</span>)
+<a class="jxr_linenumber" name="L525" href="#L525">525</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/fd/x3/x4"</span>)
 <a class="jxr_linenumber" name="L526" href="#L526">526</a> 			.run()
-<a class="jxr_linenumber" name="L527" href="#L527">527</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L528" href="#L528">528</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/fd/x3/x4"</span>)
+<a class="jxr_linenumber" name="L527" href="#L527">527</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L528" href="#L528">528</a> 		g.get(<span class="jxr_string">"http://localhost/f//x2/b/x3/x4"</span>)
 <a class="jxr_linenumber" name="L529" href="#L529">529</a> 			.run()
-<a class="jxr_linenumber" name="L530" href="#L530">530</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L531" href="#L531">531</a> 		g.get(<span class="jxr_string">"http://localhost/f//x2/b/x3/x4"</span>)
+<a class="jxr_linenumber" name="L530" href="#L530">530</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L531" href="#L531">531</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1//b/x3/x4"</span>)
 <a class="jxr_linenumber" name="L532" href="#L532">532</a> 			.run()
 <a class="jxr_linenumber" name="L533" href="#L533">533</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L534" href="#L534">534</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1//b/x3/x4"</span>)
+<a class="jxr_linenumber" name="L534" href="#L534">534</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/b//x4"</span>)
 <a class="jxr_linenumber" name="L535" href="#L535">535</a> 			.run()
-<a class="jxr_linenumber" name="L536" href="#L536">536</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L537" href="#L537">537</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/b//x4"</span>)
+<a class="jxr_linenumber" name="L536" href="#L536">536</a> 			.assertStatus(200);
+<a class="jxr_linenumber" name="L537" href="#L537">537</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/b/x3/"</span>)
 <a class="jxr_linenumber" name="L538" href="#L538">538</a> 			.run()
 <a class="jxr_linenumber" name="L539" href="#L539">539</a> 			.assertStatus(200);
-<a class="jxr_linenumber" name="L540" href="#L540">540</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/b/x3/"</span>)
+<a class="jxr_linenumber" name="L540" href="#L540">540</a> 		g.get(<span class="jxr_string">"http://localhost/f///b//"</span>)
 <a class="jxr_linenumber" name="L541" href="#L541">541</a> 			.run()
-<a class="jxr_linenumber" name="L542" href="#L542">542</a> 			.assertStatus(200);
-<a class="jxr_linenumber" name="L543" href="#L543">543</a> 		g.get(<span class="jxr_string">"http://localhost/f///b//"</span>)
+<a class="jxr_linenumber" name="L542" href="#L542">542</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L543" href="#L543">543</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/fe/x3/x4"</span>)
 <a class="jxr_linenumber" name="L544" href="#L544">544</a> 			.run()
-<a class="jxr_linenumber" name="L545" href="#L545">545</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L546" href="#L546">546</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/fe/x3/x4"</span>)
+<a class="jxr_linenumber" name="L545" href="#L545">545</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4'}"</span>);
+<a class="jxr_linenumber" name="L546" href="#L546">546</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4"</span>)
 <a class="jxr_linenumber" name="L547" href="#L547">547</a> 			.run()
-<a class="jxr_linenumber" name="L548" href="#L548">548</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4'}"</span>);
-<a class="jxr_linenumber" name="L549" href="#L549">549</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4"</span>)
+<a class="jxr_linenumber" name="L548" href="#L548">548</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L549" href="#L549">549</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/"</span>)
 <a class="jxr_linenumber" name="L550" href="#L550">550</a> 			.run()
-<a class="jxr_linenumber" name="L551" href="#L551">551</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L552" href="#L552">552</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/"</span>)
+<a class="jxr_linenumber" name="L551" href="#L551">551</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'','/*':''}"</span>);
+<a class="jxr_linenumber" name="L552" href="#L552">552</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/foo/bar"</span>)
 <a class="jxr_linenumber" name="L553" href="#L553">553</a> 			.run()
-<a class="jxr_linenumber" name="L554" href="#L554">554</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'','/*':''}"</span>);
-<a class="jxr_linenumber" name="L555" href="#L555">555</a> 		g.get(<span class="jxr_string">"http://localhost/f/x1/x2/ff/x3/x4/foo/bar"</span>)
-<a class="jxr_linenumber" name="L556" href="#L556">556</a> 			.run()
-<a class="jxr_linenumber" name="L557" href="#L557">557</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
-<a class="jxr_linenumber" name="L558" href="#L558">558</a> 	}
-<a class="jxr_linenumber" name="L559" href="#L559">559</a> 
-<a class="jxr_linenumber" name="L560" href="#L560">560</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L561" href="#L561">561</a> 	<em class="jxr_comment">// Path variables on parent and child class.</em>
-<a class="jxr_linenumber" name="L562" href="#L562">562</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L554" href="#L554">554</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
+<a class="jxr_linenumber" name="L555" href="#L555">555</a> 	}
+<a class="jxr_linenumber" name="L556" href="#L556">556</a> 
+<a class="jxr_linenumber" name="L557" href="#L557">557</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L558" href="#L558">558</a> 	<em class="jxr_comment">// Path variables on parent and child class.</em>
+<a class="jxr_linenumber" name="L559" href="#L559">559</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L560" href="#L560">560</a> 
+<a class="jxr_linenumber" name="L561" href="#L561">561</a> 	@Rest(path=<span class="jxr_string">"/h/{ha}/{hb}"</span>, children={F.<strong class="jxr_keyword">class</strong>})
+<a class="jxr_linenumber" name="L562" href="#L562">562</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> H {}
 <a class="jxr_linenumber" name="L563" href="#L563">563</a> 
-<a class="jxr_linenumber" name="L564" href="#L564">564</a> 	@Rest(path=<span class="jxr_string">"/h/{ha}/{hb}"</span>, children={F.<strong class="jxr_keyword">class</strong>})
-<a class="jxr_linenumber" name="L565" href="#L565">565</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> H {}
-<a class="jxr_linenumber" name="L566" href="#L566">566</a> 
-<a class="jxr_linenumber" name="L567" href="#L567">567</a> 	@Test <strong class="jxr_keyword">void</strong> h01_pathVariablesOnParentAndChildClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L568" href="#L568">568</a> 		<strong class="jxr_keyword">var</strong> h = MockRestClient.createLax(H.<strong class="jxr_keyword">class</strong>).servletPath(<span class="jxr_string">"/h"</span>).defaultRequestConfig(RequestConfig.custom().setNormalizeUri(false).build()).build();
-<a class="jxr_linenumber" name="L569" href="#L569">569</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2"</span>)
-<a class="jxr_linenumber" name="L570" href="#L570">570</a> 			.run()
-<a class="jxr_linenumber" name="L571" href="#L571">571</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2',ha:'ha1',hb:'hb1'}"</span>);
-<a class="jxr_linenumber" name="L572" href="#L572">572</a> 		<em class="jxr_comment">// These are 405 instead of 404 because when children don't match, we try to find a matching Java method.</em>
-<a class="jxr_linenumber" name="L573" href="#L573">573</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1"</span>)
+<a class="jxr_linenumber" name="L564" href="#L564">564</a> 	@Test <strong class="jxr_keyword">void</strong> h01_pathVariablesOnParentAndChildClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L565" href="#L565">565</a> 		<strong class="jxr_keyword">var</strong> h = MockRestClient.createLax(H.<strong class="jxr_keyword">class</strong>).servletPath(<span class="jxr_string">"/h"</span>).defaultRequestConfig(RequestConfig.custom().setNormalizeUri(false).build()).build();
+<a class="jxr_linenumber" name="L566" href="#L566">566</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L567" href="#L567">567</a> 			.run()
+<a class="jxr_linenumber" name="L568" href="#L568">568</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2',ha:'ha1',hb:'hb1'}"</span>);
+<a class="jxr_linenumber" name="L569" href="#L569">569</a> 		<em class="jxr_comment">// These are 405 instead of 404 because when children don't match, we try to find a matching Java method.</em>
+<a class="jxr_linenumber" name="L570" href="#L570">570</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1"</span>)
+<a class="jxr_linenumber" name="L571" href="#L571">571</a> 			.run()
+<a class="jxr_linenumber" name="L572" href="#L572">572</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L573" href="#L573">573</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f"</span>)
 <a class="jxr_linenumber" name="L574" href="#L574">574</a> 			.run()
 <a class="jxr_linenumber" name="L575" href="#L575">575</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L576" href="#L576">576</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f"</span>)
+<a class="jxr_linenumber" name="L576" href="#L576">576</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1"</span>)
 <a class="jxr_linenumber" name="L577" href="#L577">577</a> 			.run()
 <a class="jxr_linenumber" name="L578" href="#L578">578</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L579" href="#L579">579</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1"</span>)
+<a class="jxr_linenumber" name="L579" href="#L579">579</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1"</span>)
 <a class="jxr_linenumber" name="L580" href="#L580">580</a> 			.run()
 <a class="jxr_linenumber" name="L581" href="#L581">581</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L582" href="#L582">582</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1"</span>)
+<a class="jxr_linenumber" name="L582" href="#L582">582</a> 		h.get(<span class="jxr_string">"http://localhost/h"</span>)
 <a class="jxr_linenumber" name="L583" href="#L583">583</a> 			.run()
 <a class="jxr_linenumber" name="L584" href="#L584">584</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L585" href="#L585">585</a> 		h.get(<span class="jxr_string">"http://localhost/h"</span>)
+<a class="jxr_linenumber" name="L585" href="#L585">585</a> 		h.get(<span class="jxr_string">"http://localhost/h//hb1/f/x1/x2"</span>)
 <a class="jxr_linenumber" name="L586" href="#L586">586</a> 			.run()
 <a class="jxr_linenumber" name="L587" href="#L587">587</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L588" href="#L588">588</a> 		h.get(<span class="jxr_string">"http://localhost/h//hb1/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L588" href="#L588">588</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1//f/x1/x2"</span>)
 <a class="jxr_linenumber" name="L589" href="#L589">589</a> 			.run()
 <a class="jxr_linenumber" name="L590" href="#L590">590</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L591" href="#L591">591</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1//f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L591" href="#L591">591</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f//x2"</span>)
 <a class="jxr_linenumber" name="L592" href="#L592">592</a> 			.run()
 <a class="jxr_linenumber" name="L593" href="#L593">593</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L594" href="#L594">594</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f//x2"</span>)
+<a class="jxr_linenumber" name="L594" href="#L594">594</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/"</span>)
 <a class="jxr_linenumber" name="L595" href="#L595">595</a> 			.run()
 <a class="jxr_linenumber" name="L596" href="#L596">596</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L597" href="#L597">597</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/"</span>)
+<a class="jxr_linenumber" name="L597" href="#L597">597</a> 		h.get(<span class="jxr_string">"http://localhost/h///f//"</span>)
 <a class="jxr_linenumber" name="L598" href="#L598">598</a> 			.run()
 <a class="jxr_linenumber" name="L599" href="#L599">599</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L600" href="#L600">600</a> 		h.get(<span class="jxr_string">"http://localhost/h///f//"</span>)
+<a class="jxr_linenumber" name="L600" href="#L600">600</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/foo"</span>)
 <a class="jxr_linenumber" name="L601" href="#L601">601</a> 			.run()
-<a class="jxr_linenumber" name="L602" href="#L602">602</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L603" href="#L603">603</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/foo"</span>)
+<a class="jxr_linenumber" name="L602" href="#L602">602</a> 			.assertContent(<span class="jxr_string">"b: {a:'x1',b:'x2',ha:'ha1',hb:'hb1','/**':'foo','/*':'foo'}"</span>);
+<a class="jxr_linenumber" name="L603" href="#L603">603</a> 		h.get(<span class="jxr_string">"http://localhost/h//hb1/f/x1/x2/foo"</span>)
 <a class="jxr_linenumber" name="L604" href="#L604">604</a> 			.run()
-<a class="jxr_linenumber" name="L605" href="#L605">605</a> 			.assertContent(<span class="jxr_string">"b: {a:'x1',b:'x2',ha:'ha1',hb:'hb1','/**':'foo','/*':'foo'}"</span>);
-<a class="jxr_linenumber" name="L606" href="#L606">606</a> 		h.get(<span class="jxr_string">"http://localhost/h//hb1/f/x1/x2/foo"</span>)
+<a class="jxr_linenumber" name="L605" href="#L605">605</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L606" href="#L606">606</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1//f/x1/x2/foo"</span>)
 <a class="jxr_linenumber" name="L607" href="#L607">607</a> 			.run()
 <a class="jxr_linenumber" name="L608" href="#L608">608</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L609" href="#L609">609</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1//f/x1/x2/foo"</span>)
+<a class="jxr_linenumber" name="L609" href="#L609">609</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f//x2/foo"</span>)
 <a class="jxr_linenumber" name="L610" href="#L610">610</a> 			.run()
 <a class="jxr_linenumber" name="L611" href="#L611">611</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L612" href="#L612">612</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f//x2/foo"</span>)
+<a class="jxr_linenumber" name="L612" href="#L612">612</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1//foo"</span>)
 <a class="jxr_linenumber" name="L613" href="#L613">613</a> 			.run()
 <a class="jxr_linenumber" name="L614" href="#L614">614</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L615" href="#L615">615</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1//foo"</span>)
+<a class="jxr_linenumber" name="L615" href="#L615">615</a> 		h.get(<span class="jxr_string">"http://localhost/h///f///foo"</span>)
 <a class="jxr_linenumber" name="L616" href="#L616">616</a> 			.run()
 <a class="jxr_linenumber" name="L617" href="#L617">617</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L618" href="#L618">618</a> 		h.get(<span class="jxr_string">"http://localhost/h///f///foo"</span>)
+<a class="jxr_linenumber" name="L618" href="#L618">618</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/fc"</span>)
 <a class="jxr_linenumber" name="L619" href="#L619">619</a> 			.run()
-<a class="jxr_linenumber" name="L620" href="#L620">620</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L621" href="#L621">621</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/fc"</span>)
+<a class="jxr_linenumber" name="L620" href="#L620">620</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2',ha:'ha1',hb:'hb1'}"</span>);
+<a class="jxr_linenumber" name="L621" href="#L621">621</a> 		h.get(<span class="jxr_string">"http://localhost/h//hb1/f/x1/x2/a"</span>)
 <a class="jxr_linenumber" name="L622" href="#L622">622</a> 			.run()
-<a class="jxr_linenumber" name="L623" href="#L623">623</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2',ha:'ha1',hb:'hb1'}"</span>);
-<a class="jxr_linenumber" name="L624" href="#L624">624</a> 		h.get(<span class="jxr_string">"http://localhost/h//hb1/f/x1/x2/a"</span>)
+<a class="jxr_linenumber" name="L623" href="#L623">623</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L624" href="#L624">624</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1//f/x1/x2/a"</span>)
 <a class="jxr_linenumber" name="L625" href="#L625">625</a> 			.run()
 <a class="jxr_linenumber" name="L626" href="#L626">626</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L627" href="#L627">627</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1//f/x1/x2/a"</span>)
+<a class="jxr_linenumber" name="L627" href="#L627">627</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f//x2/a"</span>)
 <a class="jxr_linenumber" name="L628" href="#L628">628</a> 			.run()
 <a class="jxr_linenumber" name="L629" href="#L629">629</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L630" href="#L630">630</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f//x2/a"</span>)
+<a class="jxr_linenumber" name="L630" href="#L630">630</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1//a"</span>)
 <a class="jxr_linenumber" name="L631" href="#L631">631</a> 			.run()
 <a class="jxr_linenumber" name="L632" href="#L632">632</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L633" href="#L633">633</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1//a"</span>)
+<a class="jxr_linenumber" name="L633" href="#L633">633</a> 		h.get(<span class="jxr_string">"http://localhost/h///f///a"</span>)
 <a class="jxr_linenumber" name="L634" href="#L634">634</a> 			.run()
 <a class="jxr_linenumber" name="L635" href="#L635">635</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L636" href="#L636">636</a> 		h.get(<span class="jxr_string">"http://localhost/h///f///a"</span>)
+<a class="jxr_linenumber" name="L636" href="#L636">636</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/fd/x3/x4"</span>)
 <a class="jxr_linenumber" name="L637" href="#L637">637</a> 			.run()
-<a class="jxr_linenumber" name="L638" href="#L638">638</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L639" href="#L639">639</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/fd/x3/x4"</span>)
+<a class="jxr_linenumber" name="L638" href="#L638">638</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L639" href="#L639">639</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/fe/x3/x4"</span>)
 <a class="jxr_linenumber" name="L640" href="#L640">640</a> 			.run()
-<a class="jxr_linenumber" name="L641" href="#L641">641</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L642" href="#L642">642</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/fe/x3/x4"</span>)
+<a class="jxr_linenumber" name="L641" href="#L641">641</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4',ha:'ha1',hb:'hb1'}"</span>);
+<a class="jxr_linenumber" name="L642" href="#L642">642</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/ff/x3/x4"</span>)
 <a class="jxr_linenumber" name="L643" href="#L643">643</a> 			.run()
-<a class="jxr_linenumber" name="L644" href="#L644">644</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4',ha:'ha1',hb:'hb1'}"</span>);
-<a class="jxr_linenumber" name="L645" href="#L645">645</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/ff/x3/x4"</span>)
+<a class="jxr_linenumber" name="L644" href="#L644">644</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L645" href="#L645">645</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/ff/x3/x4/"</span>)
 <a class="jxr_linenumber" name="L646" href="#L646">646</a> 			.run()
-<a class="jxr_linenumber" name="L647" href="#L647">647</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L648" href="#L648">648</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/ff/x3/x4/"</span>)
+<a class="jxr_linenumber" name="L647" href="#L647">647</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4','/**':'','/*':''}"</span>);
+<a class="jxr_linenumber" name="L648" href="#L648">648</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/ff/x3/x4/foo/bar"</span>)
 <a class="jxr_linenumber" name="L649" href="#L649">649</a> 			.run()
-<a class="jxr_linenumber" name="L650" href="#L650">650</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4','/**':'','/*':''}"</span>);
-<a class="jxr_linenumber" name="L651" href="#L651">651</a> 		h.get(<span class="jxr_string">"http://localhost/h/ha1/hb1/f/x1/x2/ff/x3/x4/foo/bar"</span>)
-<a class="jxr_linenumber" name="L652" href="#L652">652</a> 			.run()
-<a class="jxr_linenumber" name="L653" href="#L653">653</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
-<a class="jxr_linenumber" name="L654" href="#L654">654</a> 	}
-<a class="jxr_linenumber" name="L655" href="#L655">655</a> 
-<a class="jxr_linenumber" name="L656" href="#L656">656</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L657" href="#L657">657</a> 	<em class="jxr_comment">// Path variables on parents and child class.</em>
-<a class="jxr_linenumber" name="L658" href="#L658">658</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L650" href="#L650">650</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
+<a class="jxr_linenumber" name="L651" href="#L651">651</a> 	}
+<a class="jxr_linenumber" name="L652" href="#L652">652</a> 
+<a class="jxr_linenumber" name="L653" href="#L653">653</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L654" href="#L654">654</a> 	<em class="jxr_comment">// Path variables on parents and child class.</em>
+<a class="jxr_linenumber" name="L655" href="#L655">655</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L656" href="#L656">656</a> 
+<a class="jxr_linenumber" name="L657" href="#L657">657</a> 	@Rest(path=<span class="jxr_string">"/i/{ia}/{ib}"</span>, children={H.<strong class="jxr_keyword">class</strong>})
+<a class="jxr_linenumber" name="L658" href="#L658">658</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> I {}
 <a class="jxr_linenumber" name="L659" href="#L659">659</a> 
-<a class="jxr_linenumber" name="L660" href="#L660">660</a> 	@Rest(path=<span class="jxr_string">"/i/{ia}/{ib}"</span>, children={H.<strong class="jxr_keyword">class</strong>})
-<a class="jxr_linenumber" name="L661" href="#L661">661</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> I {}
-<a class="jxr_linenumber" name="L662" href="#L662">662</a> 
-<a class="jxr_linenumber" name="L663" href="#L663">663</a> 	@Test <strong class="jxr_keyword">void</strong> i01_pathVariablesOnParentAndChildClass() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L664" href="#L664">664</a> 		<strong class="jxr_keyword">var</strong> i = MockRestClient.createLax(I.<strong class="jxr_keyword">class</strong>).servletPath(<span class="jxr_string">"/i"</span>).build();
-<a class="jxr_linenumber" name="L665" href="#L665">665</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L660" href="#L660">660</a> 	@Test <strong class="jxr_keyword">void</strong> i01_pathVariablesOnParentAndChildClass() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L661" href="#L661">661</a> 		<strong class="jxr_keyword">var</strong> i = MockRestClient.createLax(I.<strong class="jxr_keyword">class</strong>).servletPath(<span class="jxr_string">"/i"</span>).build();
+<a class="jxr_linenumber" name="L662" href="#L662">662</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L663" href="#L663">663</a> 			.run()
+<a class="jxr_linenumber" name="L664" href="#L664">664</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1'}"</span>);
+<a class="jxr_linenumber" name="L665" href="#L665">665</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1"</span>)
 <a class="jxr_linenumber" name="L666" href="#L666">666</a> 			.run()
-<a class="jxr_linenumber" name="L667" href="#L667">667</a> 			.assertContent(<span class="jxr_string">"a: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1'}"</span>);
-<a class="jxr_linenumber" name="L668" href="#L668">668</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1"</span>)
+<a class="jxr_linenumber" name="L667" href="#L667">667</a> 			.assertStatus(404);
+<a class="jxr_linenumber" name="L668" href="#L668">668</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f"</span>)
 <a class="jxr_linenumber" name="L669" href="#L669">669</a> 			.run()
 <a class="jxr_linenumber" name="L670" href="#L670">670</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L671" href="#L671">671</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f"</span>)
+<a class="jxr_linenumber" name="L671" href="#L671">671</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1"</span>)
 <a class="jxr_linenumber" name="L672" href="#L672">672</a> 			.run()
 <a class="jxr_linenumber" name="L673" href="#L673">673</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L674" href="#L674">674</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1"</span>)
+<a class="jxr_linenumber" name="L674" href="#L674">674</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1"</span>)
 <a class="jxr_linenumber" name="L675" href="#L675">675</a> 			.run()
 <a class="jxr_linenumber" name="L676" href="#L676">676</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L677" href="#L677">677</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1"</span>)
+<a class="jxr_linenumber" name="L677" href="#L677">677</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h"</span>)
 <a class="jxr_linenumber" name="L678" href="#L678">678</a> 			.run()
 <a class="jxr_linenumber" name="L679" href="#L679">679</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L680" href="#L680">680</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h"</span>)
+<a class="jxr_linenumber" name="L680" href="#L680">680</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1"</span>)
 <a class="jxr_linenumber" name="L681" href="#L681">681</a> 			.run()
 <a class="jxr_linenumber" name="L682" href="#L682">682</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L683" href="#L683">683</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1"</span>)
+<a class="jxr_linenumber" name="L683" href="#L683">683</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1"</span>)
 <a class="jxr_linenumber" name="L684" href="#L684">684</a> 			.run()
 <a class="jxr_linenumber" name="L685" href="#L685">685</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L686" href="#L686">686</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1"</span>)
+<a class="jxr_linenumber" name="L686" href="#L686">686</a> 		i.get(<span class="jxr_string">"http://localhost/i"</span>)
 <a class="jxr_linenumber" name="L687" href="#L687">687</a> 			.run()
 <a class="jxr_linenumber" name="L688" href="#L688">688</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L689" href="#L689">689</a> 		i.get(<span class="jxr_string">"http://localhost/i"</span>)
+<a class="jxr_linenumber" name="L689" href="#L689">689</a> 		i.get(<span class="jxr_string">"http://localhost/i//ib1/h/ha1/hb1/f/x1/x2"</span>)
 <a class="jxr_linenumber" name="L690" href="#L690">690</a> 			.run()
 <a class="jxr_linenumber" name="L691" href="#L691">691</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L692" href="#L692">692</a> 		i.get(<span class="jxr_string">"http://localhost/i//ib1/h/ha1/hb1/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L692" href="#L692">692</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1//h/ha1/hb1/f/x1/x2"</span>)
 <a class="jxr_linenumber" name="L693" href="#L693">693</a> 			.run()
 <a class="jxr_linenumber" name="L694" href="#L694">694</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L695" href="#L695">695</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1//h/ha1/hb1/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L695" href="#L695">695</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h//hb1/f/x1/x2"</span>)
 <a class="jxr_linenumber" name="L696" href="#L696">696</a> 			.run()
 <a class="jxr_linenumber" name="L697" href="#L697">697</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L698" href="#L698">698</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h//hb1/f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L698" href="#L698">698</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1//f/x1/x2"</span>)
 <a class="jxr_linenumber" name="L699" href="#L699">699</a> 			.run()
 <a class="jxr_linenumber" name="L700" href="#L700">700</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L701" href="#L701">701</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1//f/x1/x2"</span>)
+<a class="jxr_linenumber" name="L701" href="#L701">701</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f//x2"</span>)
 <a class="jxr_linenumber" name="L702" href="#L702">702</a> 			.run()
 <a class="jxr_linenumber" name="L703" href="#L703">703</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L704" href="#L704">704</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f//x2"</span>)
+<a class="jxr_linenumber" name="L704" href="#L704">704</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/"</span>)
 <a class="jxr_linenumber" name="L705" href="#L705">705</a> 			.run()
 <a class="jxr_linenumber" name="L706" href="#L706">706</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L707" href="#L707">707</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/"</span>)
+<a class="jxr_linenumber" name="L707" href="#L707">707</a> 		i.get(<span class="jxr_string">"http://localhost/i///h///f//"</span>)
 <a class="jxr_linenumber" name="L708" href="#L708">708</a> 			.run()
 <a class="jxr_linenumber" name="L709" href="#L709">709</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L710" href="#L710">710</a> 		i.get(<span class="jxr_string">"http://localhost/i///h///f//"</span>)
+<a class="jxr_linenumber" name="L710" href="#L710">710</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/foo"</span>)
 <a class="jxr_linenumber" name="L711" href="#L711">711</a> 			.run()
-<a class="jxr_linenumber" name="L712" href="#L712">712</a> 			.assertStatus(404);
-<a class="jxr_linenumber" name="L713" href="#L713">713</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/foo"</span>)
+<a class="jxr_linenumber" name="L712" href="#L712">712</a> 			.assertContent(<span class="jxr_string">"b: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1','/**':'foo','/*':'foo'}"</span>);
+<a class="jxr_linenumber" name="L713" href="#L713">713</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/fc"</span>)
 <a class="jxr_linenumber" name="L714" href="#L714">714</a> 			.run()
-<a class="jxr_linenumber" name="L715" href="#L715">715</a> 			.assertContent(<span class="jxr_string">"b: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1','/**':'foo','/*':'foo'}"</span>);
-<a class="jxr_linenumber" name="L716" href="#L716">716</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/fc"</span>)
+<a class="jxr_linenumber" name="L715" href="#L715">715</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1'}"</span>);
+<a class="jxr_linenumber" name="L716" href="#L716">716</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/fd/x3/x4"</span>)
 <a class="jxr_linenumber" name="L717" href="#L717">717</a> 			.run()
-<a class="jxr_linenumber" name="L718" href="#L718">718</a> 			.assertContent(<span class="jxr_string">"c: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1'}"</span>);
-<a class="jxr_linenumber" name="L719" href="#L719">719</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/fd/x3/x4"</span>)
+<a class="jxr_linenumber" name="L718" href="#L718">718</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L719" href="#L719">719</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/fe/x3/x4"</span>)
 <a class="jxr_linenumber" name="L720" href="#L720">720</a> 			.run()
-<a class="jxr_linenumber" name="L721" href="#L721">721</a> 			.assertContent(<span class="jxr_string">"d: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L722" href="#L722">722</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/fe/x3/x4"</span>)
+<a class="jxr_linenumber" name="L721" href="#L721">721</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1'}"</span>);
+<a class="jxr_linenumber" name="L722" href="#L722">722</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/ff/x3/x4"</span>)
 <a class="jxr_linenumber" name="L723" href="#L723">723</a> 			.run()
-<a class="jxr_linenumber" name="L724" href="#L724">724</a> 			.assertContent(<span class="jxr_string">"e: {a:'x1, x3',b:'x2, x4',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1'}"</span>);
-<a class="jxr_linenumber" name="L725" href="#L725">725</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/ff/x3/x4"</span>)
+<a class="jxr_linenumber" name="L724" href="#L724">724</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4'}"</span>);
+<a class="jxr_linenumber" name="L725" href="#L725">725</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/ff/x3/x4/"</span>)
 <a class="jxr_linenumber" name="L726" href="#L726">726</a> 			.run()
-<a class="jxr_linenumber" name="L727" href="#L727">727</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4'}"</span>);
-<a class="jxr_linenumber" name="L728" href="#L728">728</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/ff/x3/x4/"</span>)
+<a class="jxr_linenumber" name="L727" href="#L727">727</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4','/**':'','/*':''}"</span>);
+<a class="jxr_linenumber" name="L728" href="#L728">728</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/ff/x3/x4/foo/bar"</span>)
 <a class="jxr_linenumber" name="L729" href="#L729">729</a> 			.run()
-<a class="jxr_linenumber" name="L730" href="#L730">730</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4','/**':'','/*':''}"</span>);
-<a class="jxr_linenumber" name="L731" href="#L731">731</a> 		i.get(<span class="jxr_string">"http://localhost/i/ia1/ib1/h/ha1/hb1/f/x1/x2/ff/x3/x4/foo/bar"</span>)
-<a class="jxr_linenumber" name="L732" href="#L732">732</a> 			.run()
-<a class="jxr_linenumber" name="L733" href="#L733">733</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
-<a class="jxr_linenumber" name="L734" href="#L734">734</a> 	}
-<a class="jxr_linenumber" name="L735" href="#L735">735</a> 
-<a class="jxr_linenumber" name="L736" href="#L736">736</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L737" href="#L737">737</a> 	<em class="jxr_comment">// Optional path parameter.</em>
-<a class="jxr_linenumber" name="L738" href="#L738">738</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L739" href="#L739">739</a> 
-<a class="jxr_linenumber" name="L740" href="#L740">740</a> 	@Rest(serializers=Json5Serializer.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L741" href="#L741">741</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> J {
-<a class="jxr_linenumber" name="L742" href="#L742">742</a> 		@RestGet(path=<span class="jxr_string">"/a/{f1}"</span>)
-<a class="jxr_linenumber" name="L743" href="#L743">743</a> 		<strong class="jxr_keyword">public</strong> Object a(@Path(<span class="jxr_string">"f1"</span>) Optional&lt;Integer&gt; f1) {
-<a class="jxr_linenumber" name="L744" href="#L744">744</a> 			assertNotNull(f1);
-<a class="jxr_linenumber" name="L745" href="#L745">745</a> 			<strong class="jxr_keyword">return</strong> f1;
-<a class="jxr_linenumber" name="L746" href="#L746">746</a> 		}
-<a class="jxr_linenumber" name="L747" href="#L747">747</a> 		@RestGet(path=<span class="jxr_string">"/b/{f1}"</span>)
-<a class="jxr_linenumber" name="L748" href="#L748">748</a> 		<strong class="jxr_keyword">public</strong> Object b(@Path(<span class="jxr_string">"f1"</span>) Optional&lt;ABean&gt; f1) {
-<a class="jxr_linenumber" name="L749" href="#L749">749</a> 			assertNotNull(f1);
-<a class="jxr_linenumber" name="L750" href="#L750">750</a> 			<strong class="jxr_keyword">return</strong> f1;
-<a class="jxr_linenumber" name="L751" href="#L751">751</a> 		}
-<a class="jxr_linenumber" name="L752" href="#L752">752</a> 		@RestGet(path=<span class="jxr_string">"/c/{f1}"</span>)
-<a class="jxr_linenumber" name="L753" href="#L753">753</a> 		<strong class="jxr_keyword">public</strong> Object c(@Path(<span class="jxr_string">"f1"</span>) Optional&lt;List&lt;ABean&gt;&gt; f1) {
-<a class="jxr_linenumber" name="L754" href="#L754">754</a> 			assertNotNull(f1);
-<a class="jxr_linenumber" name="L755" href="#L755">755</a> 			<strong class="jxr_keyword">return</strong> f1;
-<a class="jxr_linenumber" name="L756" href="#L756">756</a> 		}
-<a class="jxr_linenumber" name="L757" href="#L757">757</a> 		@RestGet(path=<span class="jxr_string">"/d/{f1}"</span>)
-<a class="jxr_linenumber" name="L758" href="#L758">758</a> 		<strong class="jxr_keyword">public</strong> Object d(@Path(<span class="jxr_string">"f1"</span>) List&lt;Optional&lt;ABean&gt;&gt; f1) {
-<a class="jxr_linenumber" name="L759" href="#L759">759</a> 			<strong class="jxr_keyword">return</strong> f1;
-<a class="jxr_linenumber" name="L760" href="#L760">760</a> 		}
-<a class="jxr_linenumber" name="L761" href="#L761">761</a> 	}
-<a class="jxr_linenumber" name="L762" href="#L762">762</a> 
-<a class="jxr_linenumber" name="L763" href="#L763">763</a> 	@Test <strong class="jxr_keyword">void</strong> j01_optionalParam() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L764" href="#L764">764</a> 		<strong class="jxr_keyword">var</strong> j = MockRestClient.buildJson(J.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L765" href="#L765">765</a> 		j.get(<span class="jxr_string">"/a/123"</span>)
-<a class="jxr_linenumber" name="L766" href="#L766">766</a> 			.run()
-<a class="jxr_linenumber" name="L767" href="#L767">767</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L768" href="#L768">768</a> 			.assertContent(<span class="jxr_string">"123"</span>);
-<a class="jxr_linenumber" name="L769" href="#L769">769</a> 		j.get(<span class="jxr_string">"/b/a=1,b=foo"</span>)
-<a class="jxr_linenumber" name="L770" href="#L770">770</a> 			.run()
-<a class="jxr_linenumber" name="L771" href="#L771">771</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L772" href="#L772">772</a> 			.assertContent(<span class="jxr_string">"{a:1,b:'foo'}"</span>);
-<a class="jxr_linenumber" name="L773" href="#L773">773</a> 		j.get(<span class="jxr_string">"/c/@((a=1,b=foo))"</span>)
-<a class="jxr_linenumber" name="L774" href="#L774">774</a> 			.run()
-<a class="jxr_linenumber" name="L775" href="#L775">775</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L776" href="#L776">776</a> 			.assertContent(<span class="jxr_string">"[{a:1,b:'foo'}]"</span>);
-<a class="jxr_linenumber" name="L777" href="#L777">777</a> 		j.get(<span class="jxr_string">"/d/@((a=1,b=foo))"</span>)
-<a class="jxr_linenumber" name="L778" href="#L778">778</a> 			.run()
-<a class="jxr_linenumber" name="L779" href="#L779">779</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L780" href="#L780">780</a> 			.assertContent(<span class="jxr_string">"[{a:1,b:'foo'}]"</span>);
-<a class="jxr_linenumber" name="L781" href="#L781">781</a> 	}
-<a class="jxr_linenumber" name="L782" href="#L782">782</a> 
-<a class="jxr_linenumber" name="L783" href="#L783">783</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L784" href="#L784">784</a> 	<em class="jxr_comment">// Basic tests</em>
-<a class="jxr_linenumber" name="L785" href="#L785">785</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L730" href="#L730">730</a> 			.assertContent(<span class="jxr_string">"f: {a:'x1',b:'x2',ha:'ha1',hb:'hb1',ia:'ia1',ib:'ib1',c:'x3',d:'x4','/**':'foo/bar','/*':'foo/bar'}"</span>);
+<a class="jxr_linenumber" name="L731" href="#L731">731</a> 	}
+<a class="jxr_linenumber" name="L732" href="#L732">732</a> 
+<a class="jxr_linenumber" name="L733" href="#L733">733</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L734" href="#L734">734</a> 	<em class="jxr_comment">// Optional path parameter.</em>
+<a class="jxr_linenumber" name="L735" href="#L735">735</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L736" href="#L736">736</a> 
+<a class="jxr_linenumber" name="L737" href="#L737">737</a> 	@Rest(serializers=Json5Serializer.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L738" href="#L738">738</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> J {
+<a class="jxr_linenumber" name="L739" href="#L739">739</a> 		@RestGet(path=<span class="jxr_string">"/a/{f1}"</span>)
+<a class="jxr_linenumber" name="L740" href="#L740">740</a> 		<strong class="jxr_keyword">public</strong> Object a(@Path(<span class="jxr_string">"f1"</span>) Optional&lt;Integer&gt; f1) {
+<a class="jxr_linenumber" name="L741" href="#L741">741</a> 			assertNotNull(f1);
+<a class="jxr_linenumber" name="L742" href="#L742">742</a> 			<strong class="jxr_keyword">return</strong> f1;
+<a class="jxr_linenumber" name="L743" href="#L743">743</a> 		}
+<a class="jxr_linenumber" name="L744" href="#L744">744</a> 		@RestGet(path=<span class="jxr_string">"/b/{f1}"</span>)
+<a class="jxr_linenumber" name="L745" href="#L745">745</a> 		<strong class="jxr_keyword">public</strong> Object b(@Path(<span class="jxr_string">"f1"</span>) Optional&lt;ABean&gt; f1) {
+<a class="jxr_linenumber" name="L746" href="#L746">746</a> 			assertNotNull(f1);
+<a class="jxr_linenumber" name="L747" href="#L747">747</a> 			<strong class="jxr_keyword">return</strong> f1;
+<a class="jxr_linenumber" name="L748" href="#L748">748</a> 		}
+<a class="jxr_linenumber" name="L749" href="#L749">749</a> 		@RestGet(path=<span class="jxr_string">"/c/{f1}"</span>)
+<a class="jxr_linenumber" name="L750" href="#L750">750</a> 		<strong class="jxr_keyword">public</strong> Object c(@Path(<span class="jxr_string">"f1"</span>) Optional&lt;List&lt;ABean&gt;&gt; f1) {
+<a class="jxr_linenumber" name="L751" href="#L751">751</a> 			assertNotNull(f1);
+<a class="jxr_linenumber" name="L752" href="#L752">752</a> 			<strong class="jxr_keyword">return</strong> f1;
+<a class="jxr_linenumber" name="L753" href="#L753">753</a> 		}
+<a class="jxr_linenumber" name="L754" href="#L754">754</a> 		@RestGet(path=<span class="jxr_string">"/d/{f1}"</span>)
+<a class="jxr_linenumber" name="L755" href="#L755">755</a> 		<strong class="jxr_keyword">public</strong> Object d(@Path(<span class="jxr_string">"f1"</span>) List&lt;Optional&lt;ABean&gt;&gt; f1) {
+<a class="jxr_linenumber" name="L756" href="#L756">756</a> 			<strong class="jxr_keyword">return</strong> f1;
+<a class="jxr_linenumber" name="L757" href="#L757">757</a> 		}
+<a class="jxr_linenumber" name="L758" href="#L758">758</a> 	}
+<a class="jxr_linenumber" name="L759" href="#L759">759</a> 
+<a class="jxr_linenumber" name="L760" href="#L760">760</a> 	@Test <strong class="jxr_keyword">void</strong> j01_optionalParam() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L761" href="#L761">761</a> 		<strong class="jxr_keyword">var</strong> j = MockRestClient.buildJson(J.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L762" href="#L762">762</a> 		j.get(<span class="jxr_string">"/a/123"</span>)
+<a class="jxr_linenumber" name="L763" href="#L763">763</a> 			.run()
+<a class="jxr_linenumber" name="L764" href="#L764">764</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L765" href="#L765">765</a> 			.assertContent(<span class="jxr_string">"123"</span>);
+<a class="jxr_linenumber" name="L766" href="#L766">766</a> 		j.get(<span class="jxr_string">"/b/a=1,b=foo"</span>)
+<a class="jxr_linenumber" name="L767" href="#L767">767</a> 			.run()
+<a class="jxr_linenumber" name="L768" href="#L768">768</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L769" href="#L769">769</a> 			.assertContent(<span class="jxr_string">"{a:1,b:'foo'}"</span>);
+<a class="jxr_linenumber" name="L770" href="#L770">770</a> 		j.get(<span class="jxr_string">"/c/@((a=1,b=foo))"</span>)
+<a class="jxr_linenumber" name="L771" href="#L771">771</a> 			.run()
+<a class="jxr_linenumber" name="L772" href="#L772">772</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L773" href="#L773">773</a> 			.assertContent(<span class="jxr_string">"[{a:1,b:'foo'}]"</span>);
+<a class="jxr_linenumber" name="L774" href="#L774">774</a> 		j.get(<span class="jxr_string">"/d/@((a=1,b=foo))"</span>)
+<a class="jxr_linenumber" name="L775" href="#L775">775</a> 			.run()
+<a class="jxr_linenumber" name="L776" href="#L776">776</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L777" href="#L777">777</a> 			.assertContent(<span class="jxr_string">"[{a:1,b:'foo'}]"</span>);
+<a class="jxr_linenumber" name="L778" href="#L778">778</a> 	}
+<a class="jxr_linenumber" name="L779" href="#L779">779</a> 
+<a class="jxr_linenumber" name="L780" href="#L780">780</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L781" href="#L781">781</a> 	<em class="jxr_comment">// Basic tests</em>
+<a class="jxr_linenumber" name="L782" href="#L782">782</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L783" href="#L783">783</a> 
+<a class="jxr_linenumber" name="L784" href="#L784">784</a> 	@Rest(path=<span class="jxr_string">"/k1/{k1}"</span>,children=K2.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L785" href="#L785">785</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> K1 {}
 <a class="jxr_linenumber" name="L786" href="#L786">786</a> 
-<a class="jxr_linenumber" name="L787" href="#L787">787</a> 	@Rest(path=<span class="jxr_string">"/k1/{k1}"</span>,children=K2.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L788" href="#L788">788</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> K1 {}
-<a class="jxr_linenumber" name="L789" href="#L789">789</a> 
-<a class="jxr_linenumber" name="L790" href="#L790">790</a> 	@Rest(path=<span class="jxr_string">"/k2"</span>)
-<a class="jxr_linenumber" name="L791" href="#L791">791</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> K2 {
-<a class="jxr_linenumber" name="L792" href="#L792">792</a> 		@RestGet(path=<span class="jxr_string">"/"</span>)
-<a class="jxr_linenumber" name="L793" href="#L793">793</a> 		<strong class="jxr_keyword">public</strong> String a(@Path(<span class="jxr_string">"k1"</span>) @Schema(r=false) String k1) {
-<a class="jxr_linenumber" name="L794" href="#L794">794</a> 			<strong class="jxr_keyword">return</strong> k1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : k1;
-<a class="jxr_linenumber" name="L795" href="#L795">795</a> 		}
-<a class="jxr_linenumber" name="L796" href="#L796">796</a> 		@RestGet(path=<span class="jxr_string">"/foo/{bar}"</span>)
-<a class="jxr_linenumber" name="L797" href="#L797">797</a> 		<strong class="jxr_keyword">public</strong> String b(@Path(<span class="jxr_string">"k1"</span>) @Schema(r=false) String k1, @Path(<span class="jxr_string">"bar"</span>) @Schema(r=false) String bar) {
-<a class="jxr_linenumber" name="L798" href="#L798">798</a> 			<strong class="jxr_keyword">return</strong> (k1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : k1) + <span class="jxr_string">","</span> + (bar == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : bar);
-<a class="jxr_linenumber" name="L799" href="#L799">799</a> 		}
-<a class="jxr_linenumber" name="L800" href="#L800">800</a> 	}
-<a class="jxr_linenumber" name="L801" href="#L801">801</a> 
-<a class="jxr_linenumber" name="L802" href="#L802">802</a> 	@Test <strong class="jxr_keyword">void</strong> k01_basic() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L803" href="#L803">803</a> 		<strong class="jxr_keyword">var</strong> k1 = MockRestClient.build(K1.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L804" href="#L804">804</a> 		<strong class="jxr_keyword">var</strong> k2 = MockRestClient.build(K2.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L805" href="#L805">805</a> 
-<a class="jxr_linenumber" name="L806" href="#L806">806</a> 		k1.get(<span class="jxr_string">"http://localhost/k1/foo/k2"</span>)
-<a class="jxr_linenumber" name="L807" href="#L807">807</a> 			.run()
-<a class="jxr_linenumber" name="L808" href="#L808">808</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L809" href="#L809">809</a> 			.assertContent(<span class="jxr_string">"foo"</span>);
-<a class="jxr_linenumber" name="L810" href="#L810">810</a> 		k1.get(<span class="jxr_string">"http://localhost/k1/foo/k2/foo/xxx"</span>)
-<a class="jxr_linenumber" name="L811" href="#L811">811</a> 			.run()
-<a class="jxr_linenumber" name="L812" href="#L812">812</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L813" href="#L813">813</a> 			.assertContent(<span class="jxr_string">"foo,xxx"</span>);
-<a class="jxr_linenumber" name="L814" href="#L814">814</a> 		k2.get(<span class="jxr_string">"/"</span>)
-<a class="jxr_linenumber" name="L815" href="#L815">815</a> 			.run()
-<a class="jxr_linenumber" name="L816" href="#L816">816</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L817" href="#L817">817</a> 			.assertContent(<span class="jxr_string">"nil"</span>);
-<a class="jxr_linenumber" name="L818" href="#L818">818</a> 		k2.get(<span class="jxr_string">"/foo/xxx"</span>)
-<a class="jxr_linenumber" name="L819" href="#L819">819</a> 			.run()
-<a class="jxr_linenumber" name="L820" href="#L820">820</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L821" href="#L821">821</a> 			.assertContent(<span class="jxr_string">"nil,xxx"</span>);
-<a class="jxr_linenumber" name="L822" href="#L822">822</a> 	}
-<a class="jxr_linenumber" name="L823" href="#L823">823</a> 
-<a class="jxr_linenumber" name="L824" href="#L824">824</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
-<a class="jxr_linenumber" name="L825" href="#L825">825</a> 	<em class="jxr_comment">// Multiple paths</em>
-<a class="jxr_linenumber" name="L826" href="#L826">826</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L787" href="#L787">787</a> 	@Rest(path=<span class="jxr_string">"/k2"</span>)
+<a class="jxr_linenumber" name="L788" href="#L788">788</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> K2 {
+<a class="jxr_linenumber" name="L789" href="#L789">789</a> 		@RestGet(path=<span class="jxr_string">"/"</span>)
+<a class="jxr_linenumber" name="L790" href="#L790">790</a> 		<strong class="jxr_keyword">public</strong> String a(@Path(<span class="jxr_string">"k1"</span>) @Schema(r=false) String k1) {
+<a class="jxr_linenumber" name="L791" href="#L791">791</a> 			<strong class="jxr_keyword">return</strong> k1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : k1;
+<a class="jxr_linenumber" name="L792" href="#L792">792</a> 		}
+<a class="jxr_linenumber" name="L793" href="#L793">793</a> 		@RestGet(path=<span class="jxr_string">"/foo/{bar}"</span>)
+<a class="jxr_linenumber" name="L794" href="#L794">794</a> 		<strong class="jxr_keyword">public</strong> String b(@Path(<span class="jxr_string">"k1"</span>) @Schema(r=false) String k1, @Path(<span class="jxr_string">"bar"</span>) @Schema(r=false) String bar) {
+<a class="jxr_linenumber" name="L795" href="#L795">795</a> 			<strong class="jxr_keyword">return</strong> (k1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : k1) + <span class="jxr_string">","</span> + (bar == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : bar);
+<a class="jxr_linenumber" name="L796" href="#L796">796</a> 		}
+<a class="jxr_linenumber" name="L797" href="#L797">797</a> 	}
+<a class="jxr_linenumber" name="L798" href="#L798">798</a> 
+<a class="jxr_linenumber" name="L799" href="#L799">799</a> 	@Test <strong class="jxr_keyword">void</strong> k01_basic() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L800" href="#L800">800</a> 		<strong class="jxr_keyword">var</strong> k1 = MockRestClient.build(K1.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L801" href="#L801">801</a> 		<strong class="jxr_keyword">var</strong> k2 = MockRestClient.build(K2.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L802" href="#L802">802</a> 
+<a class="jxr_linenumber" name="L803" href="#L803">803</a> 		k1.get(<span class="jxr_string">"http://localhost/k1/foo/k2"</span>)
+<a class="jxr_linenumber" name="L804" href="#L804">804</a> 			.run()
+<a class="jxr_linenumber" name="L805" href="#L805">805</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L806" href="#L806">806</a> 			.assertContent(<span class="jxr_string">"foo"</span>);
+<a class="jxr_linenumber" name="L807" href="#L807">807</a> 		k1.get(<span class="jxr_string">"http://localhost/k1/foo/k2/foo/xxx"</span>)
+<a class="jxr_linenumber" name="L808" href="#L808">808</a> 			.run()
+<a class="jxr_linenumber" name="L809" href="#L809">809</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L810" href="#L810">810</a> 			.assertContent(<span class="jxr_string">"foo,xxx"</span>);
+<a class="jxr_linenumber" name="L811" href="#L811">811</a> 		k2.get(<span class="jxr_string">"/"</span>)
+<a class="jxr_linenumber" name="L812" href="#L812">812</a> 			.run()
+<a class="jxr_linenumber" name="L813" href="#L813">813</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L814" href="#L814">814</a> 			.assertContent(<span class="jxr_string">"nil"</span>);
+<a class="jxr_linenumber" name="L815" href="#L815">815</a> 		k2.get(<span class="jxr_string">"/foo/xxx"</span>)
+<a class="jxr_linenumber" name="L816" href="#L816">816</a> 			.run()
+<a class="jxr_linenumber" name="L817" href="#L817">817</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L818" href="#L818">818</a> 			.assertContent(<span class="jxr_string">"nil,xxx"</span>);
+<a class="jxr_linenumber" name="L819" href="#L819">819</a> 	}
+<a class="jxr_linenumber" name="L820" href="#L820">820</a> 
+<a class="jxr_linenumber" name="L821" href="#L821">821</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L822" href="#L822">822</a> 	<em class="jxr_comment">// Multiple paths</em>
+<a class="jxr_linenumber" name="L823" href="#L823">823</a> 	<em class="jxr_comment">//------------------------------------------------------------------------------------------------------------------</em>
+<a class="jxr_linenumber" name="L824" href="#L824">824</a> 
+<a class="jxr_linenumber" name="L825" href="#L825">825</a> 	@Rest(path=<span class="jxr_string">"/l1/{l1}"</span>,children=L2.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L826" href="#L826">826</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> L1 {}
 <a class="jxr_linenumber" name="L827" href="#L827">827</a> 
-<a class="jxr_linenumber" name="L828" href="#L828">828</a> 	@Rest(path=<span class="jxr_string">"/l1/{l1}"</span>,children=L2.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L829" href="#L829">829</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> L1 {}
-<a class="jxr_linenumber" name="L830" href="#L830">830</a> 
-<a class="jxr_linenumber" name="L831" href="#L831">831</a> 	@Rest(path=<span class="jxr_string">"/l2"</span>)
-<a class="jxr_linenumber" name="L832" href="#L832">832</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> L2 {
-<a class="jxr_linenumber" name="L833" href="#L833">833</a> 		@RestGet(path={<span class="jxr_string">"/"</span>,<span class="jxr_string">"/{foo}"</span>})
-<a class="jxr_linenumber" name="L834" href="#L834">834</a> 		<strong class="jxr_keyword">public</strong> String a(@Path(<span class="jxr_string">"l1"</span>) @Schema(r=false) String l1, @Path(<span class="jxr_string">"foo"</span>) @Schema(r=false) String foo) {
-<a class="jxr_linenumber" name="L835" href="#L835">835</a> 			<strong class="jxr_keyword">return</strong> <span class="jxr_string">"1,"</span> + (l1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : l1) + <span class="jxr_string">","</span> + (foo == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : foo);
-<a class="jxr_linenumber" name="L836" href="#L836">836</a> 		}
-<a class="jxr_linenumber" name="L837" href="#L837">837</a> 		@RestGet(path={<span class="jxr_string">"/foo"</span>,<span class="jxr_string">"/foo/{foo}"</span>})
-<a class="jxr_linenumber" name="L838" href="#L838">838</a> 		<strong class="jxr_keyword">public</strong> String b(@Path(<span class="jxr_string">"l1"</span>) @Schema(r=false) String l1, @Path(<span class="jxr_string">"foo"</span>) @Schema(r=false) String foo) {
-<a class="jxr_linenumber" name="L839" href="#L839">839</a> 			<strong class="jxr_keyword">return</strong> <span class="jxr_string">"2,"</span> + (l1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : l1) + <span class="jxr_string">","</span> + (foo == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : foo);
-<a class="jxr_linenumber" name="L840" href="#L840">840</a> 		}
-<a class="jxr_linenumber" name="L841" href="#L841">841</a> 	}
-<a class="jxr_linenumber" name="L842" href="#L842">842</a> 
-<a class="jxr_linenumber" name="L843" href="#L843">843</a> 	@Test <strong class="jxr_keyword">void</strong> l01_multiplePaths() <strong class="jxr_keyword">throws</strong> Exception {
-<a class="jxr_linenumber" name="L844" href="#L844">844</a> 		<strong class="jxr_keyword">var</strong> l1 = MockRestClient.build(L1.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L845" href="#L845">845</a> 		<strong class="jxr_keyword">var</strong> l2 = MockRestClient.build(L2.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L846" href="#L846">846</a> 
-<a class="jxr_linenumber" name="L847" href="#L847">847</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2"</span>)
-<a class="jxr_linenumber" name="L848" href="#L848">848</a> 			.run()
-<a class="jxr_linenumber" name="L849" href="#L849">849</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L850" href="#L850">850</a> 			.assertContent(<span class="jxr_string">"1,l1foo,nil"</span>);
-<a class="jxr_linenumber" name="L851" href="#L851">851</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2/l2foo"</span>)
-<a class="jxr_linenumber" name="L852" href="#L852">852</a> 			.run()
-<a class="jxr_linenumber" name="L853" href="#L853">853</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L854" href="#L854">854</a> 			.assertContent(<span class="jxr_string">"1,l1foo,l2foo"</span>);
-<a class="jxr_linenumber" name="L855" href="#L855">855</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2/foo"</span>)
-<a class="jxr_linenumber" name="L856" href="#L856">856</a> 			.run()
-<a class="jxr_linenumber" name="L857" href="#L857">857</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L858" href="#L858">858</a> 			.assertContent(<span class="jxr_string">"2,l1foo,nil"</span>);
-<a class="jxr_linenumber" name="L859" href="#L859">859</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2/foo/l2foo"</span>)
-<a class="jxr_linenumber" name="L860" href="#L860">860</a> 			.run()
-<a class="jxr_linenumber" name="L861" href="#L861">861</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L862" href="#L862">862</a> 			.assertContent(<span class="jxr_string">"2,l1foo,l2foo"</span>);
-<a class="jxr_linenumber" name="L863" href="#L863">863</a> 		l2.get(<span class="jxr_string">"http://localhost/l2"</span>)
-<a class="jxr_linenumber" name="L864" href="#L864">864</a> 			.run()
-<a class="jxr_linenumber" name="L865" href="#L865">865</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L866" href="#L866">866</a> 			.assertContent(<span class="jxr_string">"1,nil,nil"</span>);
-<a class="jxr_linenumber" name="L867" href="#L867">867</a> 		l2.get(<span class="jxr_string">"http://localhost/l2/l2foo"</span>)
-<a class="jxr_linenumber" name="L868" href="#L868">868</a> 			.run()
-<a class="jxr_linenumber" name="L869" href="#L869">869</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L870" href="#L870">870</a> 			.assertContent(<span class="jxr_string">"1,nil,l2foo"</span>);
-<a class="jxr_linenumber" name="L871" href="#L871">871</a> 		l2.get(<span class="jxr_string">"http://localhost/l2/foo"</span>)
-<a class="jxr_linenumber" name="L872" href="#L872">872</a> 			.run()
-<a class="jxr_linenumber" name="L873" href="#L873">873</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L874" href="#L874">874</a> 			.assertContent(<span class="jxr_string">"2,nil,nil"</span>);
-<a class="jxr_linenumber" name="L875" href="#L875">875</a> 		l2.get(<span class="jxr_string">"http://localhost/l2/foo/l2foo"</span>)
-<a class="jxr_linenumber" name="L876" href="#L876">876</a> 			.run()
-<a class="jxr_linenumber" name="L877" href="#L877">877</a> 			.assertStatus(200)
-<a class="jxr_linenumber" name="L878" href="#L878">878</a> 			.assertContent(<span class="jxr_string">"2,nil,l2foo"</span>);
-<a class="jxr_linenumber" name="L879" href="#L879">879</a> 	}
-<a class="jxr_linenumber" name="L880" href="#L880">880</a> }
+<a class="jxr_linenumber" name="L828" href="#L828">828</a> 	@Rest(path=<span class="jxr_string">"/l2"</span>)
+<a class="jxr_linenumber" name="L829" href="#L829">829</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> L2 {
+<a class="jxr_linenumber" name="L830" href="#L830">830</a> 		@RestGet(path={<span class="jxr_string">"/"</span>,<span class="jxr_string">"/{foo}"</span>})
+<a class="jxr_linenumber" name="L831" href="#L831">831</a> 		<strong class="jxr_keyword">public</strong> String a(@Path(<span class="jxr_string">"l1"</span>) @Schema(r=false) String l1, @Path(<span class="jxr_string">"foo"</span>) @Schema(r=false) String foo) {
+<a class="jxr_linenumber" name="L832" href="#L832">832</a> 			<strong class="jxr_keyword">return</strong> <span class="jxr_string">"1,"</span> + (l1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : l1) + <span class="jxr_string">","</span> + (foo == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : foo);
+<a class="jxr_linenumber" name="L833" href="#L833">833</a> 		}
+<a class="jxr_linenumber" name="L834" href="#L834">834</a> 		@RestGet(path={<span class="jxr_string">"/foo"</span>,<span class="jxr_string">"/foo/{foo}"</span>})
+<a class="jxr_linenumber" name="L835" href="#L835">835</a> 		<strong class="jxr_keyword">public</strong> String b(@Path(<span class="jxr_string">"l1"</span>) @Schema(r=false) String l1, @Path(<span class="jxr_string">"foo"</span>) @Schema(r=false) String foo) {
+<a class="jxr_linenumber" name="L836" href="#L836">836</a> 			<strong class="jxr_keyword">return</strong> <span class="jxr_string">"2,"</span> + (l1 == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : l1) + <span class="jxr_string">","</span> + (foo == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">"nil"</span> : foo);
+<a class="jxr_linenumber" name="L837" href="#L837">837</a> 		}
+<a class="jxr_linenumber" name="L838" href="#L838">838</a> 	}
+<a class="jxr_linenumber" name="L839" href="#L839">839</a> 
+<a class="jxr_linenumber" name="L840" href="#L840">840</a> 	@Test <strong class="jxr_keyword">void</strong> l01_multiplePaths() <strong class="jxr_keyword">throws</strong> Exception {
+<a class="jxr_linenumber" name="L841" href="#L841">841</a> 		<strong class="jxr_keyword">var</strong> l1 = MockRestClient.build(L1.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L842" href="#L842">842</a> 		<strong class="jxr_keyword">var</strong> l2 = MockRestClient.build(L2.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L843" href="#L843">843</a> 
+<a class="jxr_linenumber" name="L844" href="#L844">844</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2"</span>)
+<a class="jxr_linenumber" name="L845" href="#L845">845</a> 			.run()
+<a class="jxr_linenumber" name="L846" href="#L846">846</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L847" href="#L847">847</a> 			.assertContent(<span class="jxr_string">"1,l1foo,nil"</span>);
+<a class="jxr_linenumber" name="L848" href="#L848">848</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2/l2foo"</span>)
+<a class="jxr_linenumber" name="L849" href="#L849">849</a> 			.run()
+<a class="jxr_linenumber" name="L850" href="#L850">850</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L851" href="#L851">851</a> 			.assertContent(<span class="jxr_string">"1,l1foo,l2foo"</span>);
+<a class="jxr_linenumber" name="L852" href="#L852">852</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2/foo"</span>)
+<a class="jxr_linenumber" name="L853" href="#L853">853</a> 			.run()
+<a class="jxr_linenumber" name="L854" href="#L854">854</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L855" href="#L855">855</a> 			.assertContent(<span class="jxr_string">"2,l1foo,nil"</span>);
+<a class="jxr_linenumber" name="L856" href="#L856">856</a> 		l1.get(<span class="jxr_string">"http://localhost/l1/l1foo/l2/foo/l2foo"</span>)
+<a class="jxr_linenumber" name="L857" href="#L857">857</a> 			.run()
+<a class="jxr_linenumber" name="L858" href="#L858">858</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L859" href="#L859">859</a> 			.assertContent(<span class="jxr_string">"2,l1foo,l2foo"</span>);
+<a class="jxr_linenumber" name="L860" href="#L860">860</a> 		l2.get(<span class="jxr_string">"http://localhost/l2"</span>)
+<a class="jxr_linenumber" name="L861" href="#L861">861</a> 			.run()
+<a class="jxr_linenumber" name="L862" href="#L862">862</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L863" href="#L863">863</a> 			.assertContent(<span class="jxr_string">"1,nil,nil"</span>);
+<a class="jxr_linenumber" name="L864" href="#L864">864</a> 		l2.get(<span class="jxr_string">"http://localhost/l2/l2foo"</span>)
+<a class="jxr_linenumber" name="L865" href="#L865">865</a> 			.run()
+<a class="jxr_linenumber" name="L866" href="#L866">866</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L867" href="#L867">867</a> 			.assertContent(<span class="jxr_string">"1,nil,l2foo"</span>);
+<a class="jxr_linenumber" name="L868" href="#L868">868</a> 		l2.get(<span class="jxr_string">"http://localhost/l2/foo"</span>)
+<a class="jxr_linenumber" name="L869" href="#L869">869</a> 			.run()
+<a class="jxr_linenumber" name="L870" href="#L870">870</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L871" href="#L871">871</a> 			.assertContent(<span class="jxr_string">"2,nil,nil"</span>);
+<a class="jxr_linenumber" name="L872" href="#L872">872</a> 		l2.get(<span class="jxr_string">"http://localhost/l2/foo/l2foo"</span>)
+<a class="jxr_linenumber" name="L873" href="#L873">873</a> 			.run()
+<a class="jxr_linenumber" name="L874" href="#L874">874</a> 			.assertStatus(200)
+<a class="jxr_linenumber" name="L875" href="#L875">875</a> 			.assertContent(<span class="jxr_string">"2,nil,l2foo"</span>);
+<a class="jxr_linenumber" name="L876" href="#L876">876</a> 	}
+<a class="jxr_linenumber" name="L877" href="#L877">877</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-test/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.html b/site/xref-test/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.html
index 460235b0f4..df80277d83 100644
--- a/site/xref-test/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.html
+++ b/site/xref-test/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.html
@@ -324,7 +324,7 @@
 <a class="jxr_linenumber" name="L316" href="#L316">316</a> 			<strong class="jxr_keyword">super</strong>(builder);
 <a class="jxr_linenumber" name="L317" href="#L317">317</a> 		}
 <a class="jxr_linenumber" name="L318" href="#L318">318</a> 		@Override
-<a class="jxr_linenumber" name="L319" href="#L319">319</a> 		<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level,String msg,Object...args) {
+<a class="jxr_linenumber" name="L319" href="#L319">319</a> 		<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level,String msg, Object...args) {
 <a class="jxr_linenumber" name="L320" href="#L320">320</a> 			lastMessage = msg;
 <a class="jxr_linenumber" name="L321" href="#L321">321</a> 		}
 <a class="jxr_linenumber" name="L322" href="#L322">322</a> 	}
diff --git a/site/xref/allclasses-frame.html b/site/xref/allclasses-frame.html
index c53643c232..92ce853acd 100644
--- a/site/xref/allclasses-frame.html
+++ b/site/xref/allclasses-frame.html
@@ -526,11 +526,6 @@
                 <li><a href="org/apache/juneau/http/annotation/FormDataAnnotation.html#FormDataAnnotation.Builder" target="classFrame">FormDataAnnotation.Builder</a></li>
                 <li><a href="org/apache/juneau/http/annotation/FormDataAnnotation.html#FormDataAnnotation.Object" target="classFrame">FormDataAnnotation.Object</a></li>
                 <li><a href="org/apache/juneau/rest/arg/FormDataArg.html#FormDataArg" target="classFrame">FormDataArg</a></li>
-                <li><a href="org/apache/juneau/common/utils/FormatString.html#FormatString" target="classFrame">FormatString</a></li>
-                <li><a href="org/apache/juneau/common/utils/FormatString.html#FormatString.LiteralToken" target="classFrame">FormatString.LiteralToken</a></li>
-                <li><a href="org/apache/juneau/common/utils/FormatString.html#FormatString.MessageFormatToken" target="classFrame">FormatString.MessageFormatToken</a></li>
-                <li><a href="org/apache/juneau/common/utils/FormatString.html#FormatString.StringFormatToken" target="classFrame">FormatString.StringFormatToken</a></li>
-                <li><a href="org/apache/juneau/common/utils/FormatString.html#FormatString.Token" target="classFrame">FormatString.Token</a></li>
                 <li><a href="org/apache/juneau/http/annotation/FormatType.html#FormatType" target="classFrame">FormatType</a></li>
                 <li><a href="org/apache/juneau/http/header/Forwarded.html#Forwarded" target="classFrame">Forwarded</a></li>
                 <li><a href="org/apache/juneau/http/response/Found.html#Found" target="classFrame">Found</a></li>
diff --git a/site/xref/org/apache/juneau/BasicException.html b/site/xref/org/apache/juneau/BasicException.html
index 61a31fe72d..f722c3dff8 100644
--- a/site/xref/org/apache/juneau/BasicException.html
+++ b/site/xref/org/apache/juneau/BasicException.html
@@ -26,71 +26,72 @@
 <a class="jxr_linenumber" name="L18" href="#L18">18</a>  
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StringUtils.*;
 <a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.ThrowableUtils.*;
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.text.*;
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment"> * Subclass of non-runtime exceptions that take in a message and zero or more arguments.</em>
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.text.*;
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> * Subclass of non-runtime exceptions that take in a message and zero or more arguments.</em>
 <a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * @serial exclude</em>
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a> <strong class="jxr_keyword">extends</strong> Exception {
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a>(String message, Object...args) {
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  		<strong class="jxr_keyword">super</strong>(mformat(message, args));
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  	}
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">	 * @param causedBy The cause of this exception.</em>
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a>(Throwable causedBy) {
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  		<strong class="jxr_keyword">this</strong>(causedBy, lm(causedBy));
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  	}
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 * @param causedBy The cause of this exception.</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a>(Throwable causedBy, String message, Object...args) {
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  		<strong class="jxr_keyword">this</strong>(message, args);
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  		initCause(causedBy);
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  	}
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <em class="jxr_javadoccomment">	 * Same as {@link #getCause()} but searches the throwable chain for an exception of the specified type.</em>
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">	 * @param c The throwable type to search for.</em>
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The throwable type to search for.</em>
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment">	 * @return The exception, or &lt;jk&gt;null&lt;/jk&gt; if not found.</em>
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  	<strong class="jxr_keyword">public</strong> &lt;T <strong class="jxr_keyword">extends</strong> Throwable&gt; T getCause(Class&lt;T&gt; c) {
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  		<strong class="jxr_keyword">return</strong> getThrowableCause(c, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  	}
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">	 * Returns the caused-by exception if there is one.</em>
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment">	 * @return The caused-by exception if there is one, or this exception if there isn't.</em>
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  	<strong class="jxr_keyword">public</strong> Throwable unwrap() {
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  		Throwable t = getCause();
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  		<strong class="jxr_keyword">return</strong> t == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">this</strong> : t;
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  	}
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  }
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * @serial exclude</em>
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">class</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a> <strong class="jxr_keyword">extends</strong> Exception {
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a>(String message, Object...args) {
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  		<strong class="jxr_keyword">super</strong>(f(message, args));
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  	}
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">	 * @param causedBy The cause of this exception.</em>
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a>(Throwable causedBy) {
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  		<strong class="jxr_keyword">this</strong>(causedBy, lm(causedBy));
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  	}
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 * @param causedBy The cause of this exception.</em>
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicException" href="../../../org/apache/juneau/BasicException.html#BasicException">BasicException</a>(Throwable causedBy, String message, Object...args) {
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>  		<strong class="jxr_keyword">this</strong>(message, args);
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  		initCause(causedBy);
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>  	}
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment">	 * Same as {@link #getCause()} but searches the throwable chain for an exception of the specified type.</em>
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">	 * @param c The throwable type to search for.</em>
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The throwable type to search for.</em>
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment">	 * @return The exception, or &lt;jk&gt;null&lt;/jk&gt; if not found.</em>
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>  	<strong class="jxr_keyword">public</strong> &lt;T <strong class="jxr_keyword">extends</strong> Throwable&gt; T getCause(Class&lt;T&gt; c) {
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>  		<strong class="jxr_keyword">return</strong> getThrowableCause(c, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>  	}
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>  
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">	 * Returns the caused-by exception if there is one.</em>
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment">	 * @return The caused-by exception if there is one, or this exception if there isn't.</em>
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>  	<strong class="jxr_keyword">public</strong> Throwable unwrap() {
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>  		Throwable t = getCause();
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>  		<strong class="jxr_keyword">return</strong> t == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">this</strong> : t;
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>  	}
+<a class="jxr_linenumber" name="L86" href="#L86">86</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/BasicRuntimeException.html b/site/xref/org/apache/juneau/BasicRuntimeException.html
index e08a0f2f83..3a131c19ff 100644
--- a/site/xref/org/apache/juneau/BasicRuntimeException.html
+++ b/site/xref/org/apache/juneau/BasicRuntimeException.html
@@ -24,142 +24,141 @@
 <a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> */</em>
 <a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.juneau;
 <a class="jxr_linenumber" name="L18" href="#L18">18</a>  
-<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StringUtils.*;
-<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.ThrowableUtils.*;
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> java.text.*;
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> * Subclass of runtime exceptions that take in a message and zero or more arguments.</em>
+<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.ThrowableUtils.*;
+<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
+<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.text.*;
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment"> * Subclass of runtime exceptions that take in a message and zero or more arguments.</em>
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> *</em>
 <a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * @serial exclude</em>
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a> <strong class="jxr_keyword">extends</strong> RuntimeException {
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  	<strong class="jxr_keyword">boolean</strong> unmodifiable;
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  	String message;
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a>(String message, Object...args) {
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  		<strong class="jxr_keyword">super</strong>(mformat(message, args));
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  	}
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment">	 * @param cause The cause of this exception.</em>
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a>(Throwable cause) {
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  		<strong class="jxr_keyword">super</strong>(cause);
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  	}
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">	 * @param cause The cause of this exception.</em>
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a>(Throwable cause, String message, Object...args) {
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  		<strong class="jxr_keyword">super</strong>(mformat(message, args), cause);
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  	}
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> Throwable fillInStackTrace() {
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  		assertModifiable();
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.fillInStackTrace();
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  	}
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <em class="jxr_javadoccomment">	 * Same as {@link #getCause()} but searches the throwable chain for an exception of the specified type.</em>
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_javadoccomment">	 * @param c The throwable type to search for.</em>
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The throwable type to search for.</em>
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">	 * @return The exception, or &lt;jk&gt;null&lt;/jk&gt; if not found.</em>
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  	<strong class="jxr_keyword">public</strong> &lt;T <strong class="jxr_keyword">extends</strong> Throwable&gt; T getCause(Class&lt;T&gt; c) {
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  		<strong class="jxr_keyword">return</strong> getThrowableCause(c, <strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  	}
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  	<strong class="jxr_keyword">public</strong> String getMessage() {
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  		<strong class="jxr_keyword">if</strong> (nn(message))
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>  			<strong class="jxr_keyword">return</strong> message;
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>  		String m = <strong class="jxr_keyword">super</strong>.getMessage();
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  		<strong class="jxr_keyword">if</strong> (m == <strong class="jxr_keyword">null</strong> &amp;&amp; nn(getCause()))
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>  			m = getCause().getMessage();
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>  		<strong class="jxr_keyword">return</strong> m;
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>  	}
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>  	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> Throwable initCause(Throwable cause) {
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>  		assertModifiable();
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.initCause(cause);
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>  	}
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean is unmodifiable.</em>
-<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this bean is unmodifiable.</em>
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L104" href="#L104">104</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isUnmodifiable() { <strong class="jxr_keyword">return</strong> unmodifiable; }
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 
-<a class="jxr_linenumber" name="L106" href="#L106">106</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L107" href="#L107">107</a> <em class="jxr_javadoccomment">	 * Sets the detail message on this exception.</em>
-<a class="jxr_linenumber" name="L108" href="#L108">108</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L109" href="#L109">109</a> <em class="jxr_javadoccomment">	 * @param message The message.</em>
-<a class="jxr_linenumber" name="L110" href="#L110">110</a> <em class="jxr_javadoccomment">	 * @param args The message args.</em>
-<a class="jxr_linenumber" name="L111" href="#L111">111</a> <em class="jxr_javadoccomment">	 * @return This object.</em>
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L113" href="#L113">113</a> 	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a> setMessage(String message, Object...args) {
-<a class="jxr_linenumber" name="L114" href="#L114">114</a> 		assertModifiable();
-<a class="jxr_linenumber" name="L115" href="#L115">115</a> 		<strong class="jxr_keyword">this</strong>.message = mformat(message, args);
-<a class="jxr_linenumber" name="L116" href="#L116">116</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> 	}
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> 
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> 	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
-<a class="jxr_linenumber" name="L120" href="#L120">120</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setStackTrace(StackTraceElement[] stackTrace) {
-<a class="jxr_linenumber" name="L121" href="#L121">121</a> 		assertModifiable();
-<a class="jxr_linenumber" name="L122" href="#L122">122</a> 		<strong class="jxr_keyword">super</strong>.setStackTrace(stackTrace);
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> 	}
-<a class="jxr_linenumber" name="L124" href="#L124">124</a> 
-<a class="jxr_linenumber" name="L125" href="#L125">125</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L126" href="#L126">126</a> <em class="jxr_javadoccomment">	 * Returns the caused-by exception if there is one.</em>
-<a class="jxr_linenumber" name="L127" href="#L127">127</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L128" href="#L128">128</a> <em class="jxr_javadoccomment">	 * @return The caused-by exception if there is one, or this exception if there isn't.</em>
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L130" href="#L130">130</a> 	<strong class="jxr_keyword">public</strong> Throwable unwrap() {
-<a class="jxr_linenumber" name="L131" href="#L131">131</a> 		Throwable t = getCause();
-<a class="jxr_linenumber" name="L132" href="#L132">132</a> 		<strong class="jxr_keyword">return</strong> t == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">this</strong> : t;
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> 	}
-<a class="jxr_linenumber" name="L134" href="#L134">134</a> 
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> <em class="jxr_javadoccomment">	 * Throws an {@link UnsupportedOperationException} if the unmodifiable flag is set on this bean.</em>
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> assertModifiable() {
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> 		<strong class="jxr_keyword">if</strong> (unmodifiable)
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> 			<strong class="jxr_keyword">throw</strong> unsupportedOp(<span class="jxr_string">"Bean is read-only"</span>);
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> 	}
-<a class="jxr_linenumber" name="L142" href="#L142">142</a> 
-<a class="jxr_linenumber" name="L143" href="#L143">143</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> <em class="jxr_javadoccomment">	 * Specifies whether this bean should be unmodifiable.</em>
-<a class="jxr_linenumber" name="L145" href="#L145">145</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> <em class="jxr_javadoccomment">	 * When enabled, attempting to set any properties on this bean will cause an {@link UnsupportedOperationException}.</em>
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L148" href="#L148">148</a> <em class="jxr_javadoccomment">	 * @return This object.</em>
-<a class="jxr_linenumber" name="L149" href="#L149">149</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L150" href="#L150">150</a> 	<strong class="jxr_keyword">protected</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a> setUnmodifiable() {
-<a class="jxr_linenumber" name="L151" href="#L151">151</a> 		unmodifiable = <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L152" href="#L152">152</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L153" href="#L153">153</a> 	}
-<a class="jxr_linenumber" name="L154" href="#L154">154</a> }
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * @serial exclude</em>
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a> <strong class="jxr_keyword">extends</strong> RuntimeException {
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  	<strong class="jxr_keyword">boolean</strong> unmodifiable;
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  	String message;
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a>(String message, Object...args) {
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  		<strong class="jxr_keyword">super</strong>(f(message, args));
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  	}
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">	 * @param cause The cause of this exception.</em>
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a>(Throwable cause) {
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  		<strong class="jxr_keyword">super</strong>(cause);
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  	}
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 * @param cause The cause of this exception.</em>
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">	 * @param message The {@link MessageFormat}-style message.</em>
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a>(Throwable cause, String message, Object...args) {
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>  		<strong class="jxr_keyword">super</strong>(f(message, args), cause);
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  	}
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>  
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> Throwable fillInStackTrace() {
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  		assertModifiable();
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.fillInStackTrace();
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>  	}
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>  
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_javadoccomment">	 * Same as {@link #getCause()} but searches the throwable chain for an exception of the specified type.</em>
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_javadoccomment">	 * @param c The throwable type to search for.</em>
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The throwable type to search for.</em>
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment">	 * @return The exception, or &lt;jk&gt;null&lt;/jk&gt; if not found.</em>
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  	<strong class="jxr_keyword">public</strong> &lt;T <strong class="jxr_keyword">extends</strong> Throwable&gt; T getCause(Class&lt;T&gt; c) {
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  		<strong class="jxr_keyword">return</strong> getThrowableCause(c, <strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>  	}
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>  
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>  	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>  	<strong class="jxr_keyword">public</strong> String getMessage() {
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>  		<strong class="jxr_keyword">if</strong> (nn(message))
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>  			<strong class="jxr_keyword">return</strong> message;
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  		String m = <strong class="jxr_keyword">super</strong>.getMessage();
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>  		<strong class="jxr_keyword">if</strong> (m == <strong class="jxr_keyword">null</strong> &amp;&amp; nn(getCause()))
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>  			m = getCause().getMessage();
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>  		<strong class="jxr_keyword">return</strong> m;
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>  	}
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>  
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>  	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">synchronized</strong> Throwable initCause(Throwable cause) {
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>  		assertModifiable();
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">super</strong>.initCause(cause);
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>  	}
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>  
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>  <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if this bean is unmodifiable.</em>
+<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if this bean is unmodifiable.</em>
+<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L103" href="#L103">103</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isUnmodifiable() { <strong class="jxr_keyword">return</strong> unmodifiable; }
+<a class="jxr_linenumber" name="L104" href="#L104">104</a> 
+<a class="jxr_linenumber" name="L105" href="#L105">105</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L106" href="#L106">106</a> <em class="jxr_javadoccomment">	 * Sets the detail message on this exception.</em>
+<a class="jxr_linenumber" name="L107" href="#L107">107</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L108" href="#L108">108</a> <em class="jxr_javadoccomment">	 * @param message The message.</em>
+<a class="jxr_linenumber" name="L109" href="#L109">109</a> <em class="jxr_javadoccomment">	 * @param args The message args.</em>
+<a class="jxr_linenumber" name="L110" href="#L110">110</a> <em class="jxr_javadoccomment">	 * @return This object.</em>
+<a class="jxr_linenumber" name="L111" href="#L111">111</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L112" href="#L112">112</a> 	<strong class="jxr_keyword">public</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a> setMessage(String message, Object...args) {
+<a class="jxr_linenumber" name="L113" href="#L113">113</a> 		assertModifiable();
+<a class="jxr_linenumber" name="L114" href="#L114">114</a> 		<strong class="jxr_keyword">this</strong>.message = f(message, args);
+<a class="jxr_linenumber" name="L115" href="#L115">115</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L116" href="#L116">116</a> 	}
+<a class="jxr_linenumber" name="L117" href="#L117">117</a> 
+<a class="jxr_linenumber" name="L118" href="#L118">118</a> 	@Override <em class="jxr_comment">/* Overridden from Throwable */</em>
+<a class="jxr_linenumber" name="L119" href="#L119">119</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setStackTrace(StackTraceElement[] stackTrace) {
+<a class="jxr_linenumber" name="L120" href="#L120">120</a> 		assertModifiable();
+<a class="jxr_linenumber" name="L121" href="#L121">121</a> 		<strong class="jxr_keyword">super</strong>.setStackTrace(stackTrace);
+<a class="jxr_linenumber" name="L122" href="#L122">122</a> 	}
+<a class="jxr_linenumber" name="L123" href="#L123">123</a> 
+<a class="jxr_linenumber" name="L124" href="#L124">124</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L125" href="#L125">125</a> <em class="jxr_javadoccomment">	 * Returns the caused-by exception if there is one.</em>
+<a class="jxr_linenumber" name="L126" href="#L126">126</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L127" href="#L127">127</a> <em class="jxr_javadoccomment">	 * @return The caused-by exception if there is one, or this exception if there isn't.</em>
+<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> 	<strong class="jxr_keyword">public</strong> Throwable unwrap() {
+<a class="jxr_linenumber" name="L130" href="#L130">130</a> 		Throwable t = getCause();
+<a class="jxr_linenumber" name="L131" href="#L131">131</a> 		<strong class="jxr_keyword">return</strong> t == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">this</strong> : t;
+<a class="jxr_linenumber" name="L132" href="#L132">132</a> 	}
+<a class="jxr_linenumber" name="L133" href="#L133">133</a> 
+<a class="jxr_linenumber" name="L134" href="#L134">134</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">	 * Throws an {@link UnsupportedOperationException} if the unmodifiable flag is set on this bean.</em>
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L137" href="#L137">137</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">void</strong> assertModifiable() {
+<a class="jxr_linenumber" name="L138" href="#L138">138</a> 		<strong class="jxr_keyword">if</strong> (unmodifiable)
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> 			<strong class="jxr_keyword">throw</strong> unsupportedOp(<span class="jxr_string">"Bean is read-only"</span>);
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> 	}
+<a class="jxr_linenumber" name="L141" href="#L141">141</a> 
+<a class="jxr_linenumber" name="L142" href="#L142">142</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L143" href="#L143">143</a> <em class="jxr_javadoccomment">	 * Specifies whether this bean should be unmodifiable.</em>
+<a class="jxr_linenumber" name="L144" href="#L144">144</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L145" href="#L145">145</a> <em class="jxr_javadoccomment">	 * When enabled, attempting to set any properties on this bean will cause an {@link UnsupportedOperationException}.</em>
+<a class="jxr_linenumber" name="L146" href="#L146">146</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L147" href="#L147">147</a> <em class="jxr_javadoccomment">	 * @return This object.</em>
+<a class="jxr_linenumber" name="L148" href="#L148">148</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L149" href="#L149">149</a> 	<strong class="jxr_keyword">protected</strong> <a name="BasicRuntimeException" href="../../../org/apache/juneau/BasicRuntimeException.html#BasicRuntimeException">BasicRuntimeException</a> setUnmodifiable() {
+<a class="jxr_linenumber" name="L150" href="#L150">150</a> 		unmodifiable = <strong class="jxr_keyword">true</strong>;
+<a class="jxr_linenumber" name="L151" href="#L151">151</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L152" href="#L152">152</a> 	}
+<a class="jxr_linenumber" name="L153" href="#L153">153</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/BeanSession.html b/site/xref/org/apache/juneau/BeanSession.html
index 3a438235c8..91a9293828 100644
--- a/site/xref/org/apache/juneau/BeanSession.html
+++ b/site/xref/org/apache/juneau/BeanSession.html
@@ -317,7 +317,7 @@
 <a class="jxr_linenumber" name="L309" href="#L309">309</a> 	@Override
 <a class="jxr_linenumber" name="L310" href="#L310">310</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> addWarning(String msg, Object...args) {
 <a class="jxr_linenumber" name="L311" href="#L311">311</a> 		<strong class="jxr_keyword">if</strong> (isDebug())
-<a class="jxr_linenumber" name="L312" href="#L312">312</a> 			LOG.log(Level.WARNING, () -&gt; args.length == 0 ? msg : MessageFormat.format(msg, args));
+<a class="jxr_linenumber" name="L312" href="#L312">312</a> 			LOG.log(Level.WARNING, () -&gt; args.length == 0 ? msg : f(msg, args));
 <a class="jxr_linenumber" name="L313" href="#L313">313</a> 		<strong class="jxr_keyword">super</strong>.addWarning(msg, args);
 <a class="jxr_linenumber" name="L314" href="#L314">314</a> 	}
 <a class="jxr_linenumber" name="L315" href="#L315">315</a> 
diff --git a/site/xref/org/apache/juneau/ContextSession.html b/site/xref/org/apache/juneau/ContextSession.html
index ae130366d8..8a76818189 100644
--- a/site/xref/org/apache/juneau/ContextSession.html
+++ b/site/xref/org/apache/juneau/ContextSession.html
@@ -197,7 +197,7 @@
 <a class="jxr_linenumber" name="L189" href="#L189">189</a> 			<strong class="jxr_keyword">return</strong>;
 <a class="jxr_linenumber" name="L190" href="#L190">190</a> 		<strong class="jxr_keyword">if</strong> (warnings == <strong class="jxr_keyword">null</strong>)
 <a class="jxr_linenumber" name="L191" href="#L191">191</a> 			warnings = <strong class="jxr_keyword">new</strong> LinkedList&lt;&gt;();
-<a class="jxr_linenumber" name="L192" href="#L192">192</a> 		warnings.add((warnings.size() + 1) + <span class="jxr_string">": "</span> + mformat(msg, args));
+<a class="jxr_linenumber" name="L192" href="#L192">192</a> 		warnings.add((warnings.size() + 1) + <span class="jxr_string">": "</span> + f(msg, args));
 <a class="jxr_linenumber" name="L193" href="#L193">193</a> 	}
 <a class="jxr_linenumber" name="L194" href="#L194">194</a> 
 <a class="jxr_linenumber" name="L195" href="#L195">195</a> 	<em class="jxr_javadoccomment">/**</em>
diff --git a/site/xref/org/apache/juneau/assertions/Assertion.html b/site/xref/org/apache/juneau/assertions/Assertion.html
index 07471ba431..12d5a107e1 100644
--- a/site/xref/org/apache/juneau/assertions/Assertion.html
+++ b/site/xref/org/apache/juneau/assertions/Assertion.html
@@ -223,7 +223,7 @@
 <a class="jxr_linenumber" name="L215" href="#L215">215</a> 	<strong class="jxr_keyword">protected</strong> <a name="BasicAssertionError" href="../../../../org/apache/juneau/BasicAssertionError.html#BasicAssertionError">BasicAssertionError</a> error(Throwable cause, String msg, Object...args) {
 <a class="jxr_linenumber" name="L216" href="#L216">216</a> 		msg = mformat(msg, args);
 <a class="jxr_linenumber" name="L217" href="#L217">217</a> 		<strong class="jxr_keyword">if</strong> (nn(<strong class="jxr_keyword">this</strong>.msg))
-<a class="jxr_linenumber" name="L218" href="#L218">218</a> 			msg = mformat(<strong class="jxr_keyword">this</strong>.msg, <strong class="jxr_keyword">this</strong>.msgArgs).replace(<span class="jxr_string">"&lt;&lt;&lt;MSG&gt;&gt;&gt;"</span>, msg);
+<a class="jxr_linenumber" name="L218" href="#L218">218</a> 			msg = f(<strong class="jxr_keyword">this</strong>.msg, <strong class="jxr_keyword">this</strong>.msgArgs).replace(<span class="jxr_string">"&lt;&lt;&lt;MSG&gt;&gt;&gt;"</span>, msg);
 <a class="jxr_linenumber" name="L219" href="#L219">219</a> 		<strong class="jxr_keyword">if</strong> (nn(out))
 <a class="jxr_linenumber" name="L220" href="#L220">220</a> 			out.println(msg);
 <a class="jxr_linenumber" name="L221" href="#L221">221</a> 		<strong class="jxr_keyword">if</strong> (nn(throwable)) {
diff --git a/site/xref/org/apache/juneau/bean/LinkString.html b/site/xref/org/apache/juneau/bean/LinkString.html
index 9937cf633c..0f2f95b043 100644
--- a/site/xref/org/apache/juneau/bean/LinkString.html
+++ b/site/xref/org/apache/juneau/bean/LinkString.html
@@ -160,7 +160,7 @@
 <a class="jxr_linenumber" name="L152" href="#L152">152</a> 			} <strong class="jxr_keyword">catch</strong> (<a name="SchemaValidationException" href="../../../../org/apache/juneau/httppart/SchemaValidationException.html#SchemaValidationException">SchemaValidationException</a> | <a name="SerializeException" href="../../../../org/apache/juneau/serializer/SerializeException.html#SerializeException">SerializeException</a> e) {
 <a class="jxr_linenumber" name="L153" href="#L153">153</a> 				<strong class="jxr_keyword">throw</strong> toRex(e);
 <a class="jxr_linenumber" name="L154" href="#L154">154</a> 			}
-<a class="jxr_linenumber" name="L155" href="#L155">155</a> 		<strong class="jxr_keyword">this</strong>.uri = java.net.URI.create(mformat(value, args));
+<a class="jxr_linenumber" name="L155" href="#L155">155</a> 		<strong class="jxr_keyword">this</strong>.uri = java.net.URI.create(f(value, args));
 <a class="jxr_linenumber" name="L156" href="#L156">156</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
 <a class="jxr_linenumber" name="L157" href="#L157">157</a> 	}
 <a class="jxr_linenumber" name="L158" href="#L158">158</a> 
diff --git a/site/xref/org/apache/juneau/common/reflect/ExecutableInfo.html b/site/xref/org/apache/juneau/common/reflect/ExecutableInfo.html
index 3f4780fdcc..4acc1518c4 100644
--- a/site/xref/org/apache/juneau/common/reflect/ExecutableInfo.html
+++ b/site/xref/org/apache/juneau/common/reflect/ExecutableInfo.html
@@ -761,9 +761,9 @@
 <a class="jxr_linenumber" name="L753" href="#L753">753</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> checkIndex(<strong class="jxr_keyword">int</strong> index) {
 <a class="jxr_linenumber" name="L754" href="#L754">754</a> 		<strong class="jxr_keyword">int</strong> pc = getParameterCount();
 <a class="jxr_linenumber" name="L755" href="#L755">755</a> 		<strong class="jxr_keyword">if</strong> (pc == 0)
-<a class="jxr_linenumber" name="L756" href="#L756">756</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IndexOutOfBoundsException(mformat(<span class="jxr_string">"Invalid index ''{0}''.  No parameters."</span>, index));
+<a class="jxr_linenumber" name="L756" href="#L756">756</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IndexOutOfBoundsException(f(<span class="jxr_string">"Invalid index ''{0}''.  No parameters."</span>, index));
 <a class="jxr_linenumber" name="L757" href="#L757">757</a> 		<strong class="jxr_keyword">if</strong> (index &lt; 0 || index &gt;= pc)
-<a class="jxr_linenumber" name="L758" href="#L758">758</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IndexOutOfBoundsException(mformat(<span class="jxr_string">"Invalid index ''{0}''.  Parameter count: {1}"</span>, index, pc));
+<a class="jxr_linenumber" name="L758" href="#L758">758</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IndexOutOfBoundsException(f(<span class="jxr_string">"Invalid index ''{0}''.  Parameter count: {1}"</span>, index, pc));
 <a class="jxr_linenumber" name="L759" href="#L759">759</a> 	}
 <a class="jxr_linenumber" name="L760" href="#L760">760</a> 
 <a class="jxr_linenumber" name="L761" href="#L761">761</a> 	<strong class="jxr_keyword">private</strong> List&lt;ParameterInfo&gt; findParameters() {
diff --git a/site/xref/org/apache/juneau/common/utils/FormatString.html b/site/xref/org/apache/juneau/common/utils/FormatString.html
deleted file mode 100644
index 1612d56cc5..0000000000
--- a/site/xref/org/apache/juneau/common/utils/FormatString.html
+++ /dev/null
@@ -1,737 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
-<head><meta http-equiv="content-type" content="text/html; charset=UTF-8" />
-<title>FormatString xref</title>
-<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
-</head>
-<body>
-<div id="overview"><a href="../../../../../../apidocs/org/apache/juneau/common/utils/FormatString.html">View Javadoc</a></div><pre>
-<a class="jxr_linenumber" name="L1" href="#L1">1</a>   <em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L2" href="#L2">2</a>   <em class="jxr_comment"> * Licensed to the Apache Software Foundation (ASF) under one or more</em>
-<a class="jxr_linenumber" name="L3" href="#L3">3</a>   <em class="jxr_comment"> * contributor license agreements.  See the NOTICE file distributed with</em>
-<a class="jxr_linenumber" name="L4" href="#L4">4</a>   <em class="jxr_comment"> * this work for additional information regarding copyright ownership.</em>
-<a class="jxr_linenumber" name="L5" href="#L5">5</a>   <em class="jxr_comment"> * The ASF licenses this file to You under the Apache License, Version 2.0</em>
-<a class="jxr_linenumber" name="L6" href="#L6">6</a>   <em class="jxr_comment"> * (the "License"); you may not use this file except in compliance with</em>
-<a class="jxr_linenumber" name="L7" href="#L7">7</a>   <em class="jxr_comment"> * the License.  You may obtain a copy of the License at</em>
-<a class="jxr_linenumber" name="L8" href="#L8">8</a>   <em class="jxr_comment"> *</em>
-<a class="jxr_linenumber" name="L9" href="#L9">9</a>   <em class="jxr_comment"> *      <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
-<a class="jxr_linenumber" name="L10" href="#L10">10</a>  <em class="jxr_comment"> *</em>
-<a class="jxr_linenumber" name="L11" href="#L11">11</a>  <em class="jxr_comment"> * Unless required by applicable law or agreed to in writing, software</em>
-<a class="jxr_linenumber" name="L12" href="#L12">12</a>  <em class="jxr_comment"> * distributed under the License is distributed on an "AS IS" BASIS,</em>
-<a class="jxr_linenumber" name="L13" href="#L13">13</a>  <em class="jxr_comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
-<a class="jxr_linenumber" name="L14" href="#L14">14</a>  <em class="jxr_comment"> * See the License for the specific language governing permissions and</em>
-<a class="jxr_linenumber" name="L15" href="#L15">15</a>  <em class="jxr_comment"> * limitations under the License.</em>
-<a class="jxr_linenumber" name="L16" href="#L16">16</a>  <em class="jxr_comment"> */</em>
-<a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.juneau.common.utils;
-<a class="jxr_linenumber" name="L18" href="#L18">18</a>  
-<a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.AssertionUtils.*;
-<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.CollectionUtils.*;
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StateEnum.*;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> java.text.*;
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> java.util.*;
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> java.util.stream.*;
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> java.util.MissingFormatArgumentException;
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.common.collections.*;
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> * Unified string formatter supporting both MessageFormat-style and printf-style formatting in the same pattern.</em>
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment"> * This class provides a thread-safe, cacheable formatter that can handle mixed format styles in a single pattern.</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> * It supports both MessageFormat syntax (&lt;js&gt;"{0}"&lt;/js&gt;, &lt;js&gt;"{1,number}"&lt;/js&gt;) and printf syntax (&lt;js&gt;"%s"&lt;/js&gt;, &lt;js&gt;"%d"&lt;/js&gt;)</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> * within the same string.</em>
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;Features:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment"> * &lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;Dual Format Support:&lt;/b&gt; Mix MessageFormat and printf-style placeholders in the same pattern&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;Thread-Safe:&lt;/b&gt; Immutable class, safe for concurrent use&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;Cacheable:&lt;/b&gt; Use {@link #of(String)} for cached instances&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;Argument Sharing:&lt;/b&gt; Both format styles share the same argument array&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;Format Style Detection:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  <em class="jxr_javadoccomment"> * The formatter automatically detects which style to use for each placeholder:</em>
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  <em class="jxr_javadoccomment"> * &lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;MessageFormat style:&lt;/b&gt; &lt;js&gt;"{0}"&lt;/js&gt;, &lt;js&gt;"{1,number}"&lt;/js&gt;, &lt;js&gt;"{2,date}"&lt;/js&gt;, etc.&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;Printf style:&lt;/b&gt; &lt;js&gt;"%s"&lt;/js&gt;, &lt;js&gt;"%d"&lt;/js&gt;, &lt;js&gt;"%.2f"&lt;/js&gt;, &lt;js&gt;"%1$s"&lt;/js&gt;, etc.&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;Argument Mapping:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment"> * Arguments are processed in order of appearance:</em>
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment"> * &lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;MessageFormat placeholders:&lt;/b&gt; Use explicit indices (e.g., &lt;js&gt;"{0}"&lt;/js&gt; uses &lt;c&gt;args[0]&lt;/c&gt;)&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  <em class="jxr_javadoccomment"> *   &lt;li&gt;&lt;b&gt;Printf placeholders:&lt;/b&gt; Use sequential indices starting after the highest MessageFormat index&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <em class="jxr_javadoccomment"> * &lt;p class='bjava'&gt;</em>
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <em class="jxr_javadoccomment"> * 	&lt;jc&gt;// Mixed format styles&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <em class="jxr_javadoccomment"> * 	FormatString &lt;jv&gt;fmt&lt;/jv&gt; = FormatString.&lt;jsm&gt;of&lt;/jsm&gt;(&lt;js&gt;"Hello {0}, you have %d items"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment"> * 	String &lt;jv&gt;result&lt;/jv&gt; = &lt;jv&gt;fmt&lt;/jv&gt;.&lt;jsm&gt;format&lt;/jsm&gt;(&lt;js&gt;"John"&lt;/js&gt;, 5);</em>
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment"> * 	&lt;jc&gt;// Returns: "Hello John, you have 5 items"&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment"> * 	&lt;jc&gt;// MessageFormat with explicit indices, printf with sequential&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment"> * 	FormatString &lt;jv&gt;fmt2&lt;/jv&gt; = FormatString.&lt;jsm&gt;of&lt;/jsm&gt;(&lt;js&gt;"User {0} has %s and {1} items"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_javadoccomment"> * 	String &lt;jv&gt;result2&lt;/jv&gt; = &lt;jv&gt;fmt2&lt;/jv&gt;.&lt;jsm&gt;format&lt;/jsm&gt;(&lt;js&gt;"Alice"&lt;/js&gt;, 10, &lt;js&gt;"admin"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <em class="jxr_javadoccomment"> * 	&lt;jc&gt;// Returns: "User Alice has admin and 10 items"&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_javadoccomment"> * 	&lt;jc&gt;// {0} -&gt; "Alice", {1} -&gt; 10, %s -&gt; "admin"&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment"> * 	&lt;jc&gt;// Printf with explicit indices&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment"> * 	FormatString &lt;jv&gt;fmt3&lt;/jv&gt; = FormatString.&lt;jsm&gt;of&lt;/jsm&gt;(&lt;js&gt;"%1$s loves %2$s, and {0} also loves %3$s"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment"> * 	String &lt;jv&gt;result3&lt;/jv&gt; = &lt;jv&gt;fmt3&lt;/jv&gt;.&lt;jsm&gt;format&lt;/jsm&gt;(&lt;js&gt;"Alice"&lt;/js&gt;, &lt;js&gt;"Bob"&lt;/js&gt;, &lt;js&gt;"Charlie"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  <em class="jxr_javadoccomment"> * 	&lt;jc&gt;// Returns: "Alice loves Bob, and Alice also loves Charlie"&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment"> * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;Caching:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  <em class="jxr_javadoccomment"> * Use {@link #of(String)} to get cached instances. The cache is thread-safe and limited to 1000 entries.</em>
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  <em class="jxr_javadoccomment"> * For uncached instances, use the constructor directly.</em>
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>  <em class="jxr_javadoccomment"> * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;Thread Safety:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>  <em class="jxr_javadoccomment"> * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>  <em class="jxr_javadoccomment"> * This class is immutable and thread-safe. Multiple threads can safely use the same instance concurrently.</em>
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>  <em class="jxr_javadoccomment"> * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>  <em class="jxr_javadoccomment"> * @see StringUtils#format(String, Object...)</em>
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>  <em class="jxr_javadoccomment"> * @see StringUtils#mformat(String, Object...)</em>
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> <a name="FormatString" href="../../../../../org/apache/juneau/common/utils/FormatString.html#FormatString">FormatString</a> {
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>  
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Cache&lt;String,FormatString&gt; CACHE = Cache.of(String.<strong class="jxr_keyword">class</strong>, FormatString.<strong class="jxr_keyword">class</strong>).maxSize(1000).weak().build();
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>  
-<a class="jxr_linenumber" name="L100" href="#L100">100</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Cache2&lt;Locale,String,MessageFormat&gt; MESSAGE_FORMAT_CACHE = Cache2.of(Locale.<strong class="jxr_keyword">class</strong>, String.<strong class="jxr_keyword">class</strong>, MessageFormat.<strong class="jxr_keyword">class</strong>).maxSize(100).threadLocal().weak()
-<a class="jxr_linenumber" name="L101" href="#L101">101</a> 		.supplier((locale, content) -&gt; <strong class="jxr_keyword">new</strong> MessageFormat(content, locale)).build();
-<a class="jxr_linenumber" name="L102" href="#L102">102</a> 
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Cache&lt;Locale,NumberFormat&gt; NUMBER_FORMAT_CACHE = Cache.of(Locale.<strong class="jxr_keyword">class</strong>, NumberFormat.<strong class="jxr_keyword">class</strong>).maxSize(50).threadLocal().weak().supplier(NumberFormat::getInstance).build();
-<a class="jxr_linenumber" name="L104" href="#L104">104</a> 
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> Cache&lt;Locale,DateFormat&gt; DATE_FORMAT_CACHE = Cache.of(Locale.<strong class="jxr_keyword">class</strong>, DateFormat.<strong class="jxr_keyword">class</strong>).maxSize(50).threadLocal().weak()
-<a class="jxr_linenumber" name="L106" href="#L106">106</a> 		.supplier(locale -&gt; DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale)).build();
-<a class="jxr_linenumber" name="L107" href="#L107">107</a> 
-<a class="jxr_linenumber" name="L108" href="#L108">108</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a name="AsciiSet" href="../../../../../org/apache/juneau/common/utils/AsciiSet.html#AsciiSet">AsciiSet</a> PRINTF_CONVERSION_CHARS = AsciiSet.of(<span class="jxr_string">"bBhHsScCdoxXeEfgGaAtTn%"</span>);
-<a class="jxr_linenumber" name="L109" href="#L109">109</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a name="AsciiSet" href="../../../../../org/apache/juneau/common/utils/AsciiSet.html#AsciiSet">AsciiSet</a> PRINTF_FORMAT_CHARS = AsciiSet.of(<span class="jxr_string">"-+ 0(#.*$"</span>);
-<a class="jxr_linenumber" name="L110" href="#L110">110</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <a name="AsciiSet" href="../../../../../org/apache/juneau/common/utils/AsciiSet.html#AsciiSet">AsciiSet</a> FORMAT_CHARS = AsciiSet.of(<span class="jxr_string">"%{'"</span>);
-<a class="jxr_linenumber" name="L111" href="#L111">111</a> 
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L113" href="#L113">113</a> <em class="jxr_javadoccomment">	 * Formats a pattern string with the given arguments using the default locale.</em>
-<a class="jxr_linenumber" name="L114" href="#L114">114</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L115" href="#L115">115</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L116" href="#L116">116</a> <em class="jxr_javadoccomment">	 * This is a convenience method that creates a FormatString instance and formats it.</em>
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> <em class="jxr_javadoccomment">	 * If the pattern contains no format specifiers (no '%', '{', or '''), the pattern is returned as-is.</em>
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> <em class="jxr_javadoccomment">	 * @param pattern The format pattern.</em>
-<a class="jxr_linenumber" name="L120" href="#L120">120</a> <em class="jxr_javadoccomment">	 * @param args The arguments to format.</em>
-<a class="jxr_linenumber" name="L121" href="#L121">121</a> <em class="jxr_javadoccomment">	 * @return The formatted string.</em>
-<a class="jxr_linenumber" name="L122" href="#L122">122</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If the pattern is &lt;jk&gt;null&lt;/jk&gt; or format specifiers are invalid.</em>
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L124" href="#L124">124</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String format(String pattern, Object...args) {
-<a class="jxr_linenumber" name="L125" href="#L125">125</a> 		<strong class="jxr_keyword">if</strong> (!hasArgs(pattern))
-<a class="jxr_linenumber" name="L126" href="#L126">126</a> 			<strong class="jxr_keyword">return</strong> pattern;
-<a class="jxr_linenumber" name="L127" href="#L127">127</a> 		<strong class="jxr_keyword">return</strong> of(pattern).format(args);
-<a class="jxr_linenumber" name="L128" href="#L128">128</a> 	}
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> 
-<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">	 * Formats a pattern string with the given arguments using the specified locale.</em>
-<a class="jxr_linenumber" name="L132" href="#L132">132</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L134" href="#L134">134</a> <em class="jxr_javadoccomment">	 * This is a convenience method that creates a FormatString instance and formats it.</em>
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">	 * If the pattern contains no format specifiers (no '%', '{', or '''), the pattern is returned as-is.</em>
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> <em class="jxr_javadoccomment">	 * @param pattern The format pattern.</em>
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> <em class="jxr_javadoccomment">	 * @param locale The locale to use for formatting. If &lt;jk&gt;null&lt;/jk&gt;, uses the default locale.</em>
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> <em class="jxr_javadoccomment">	 * @param args The arguments to format.</em>
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> <em class="jxr_javadoccomment">	 * @return The formatted string.</em>
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If the pattern is &lt;jk&gt;null&lt;/jk&gt; or format specifiers are invalid.</em>
-<a class="jxr_linenumber" name="L142" href="#L142">142</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L143" href="#L143">143</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String format(String pattern, Locale locale, Object...args) {
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> 		<strong class="jxr_keyword">if</strong> (!hasArgs(pattern))
-<a class="jxr_linenumber" name="L145" href="#L145">145</a> 			<strong class="jxr_keyword">return</strong> pattern;
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> 		<strong class="jxr_keyword">return</strong> of(pattern).format(locale, args);
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> 	}
-<a class="jxr_linenumber" name="L148" href="#L148">148</a> 
-<a class="jxr_linenumber" name="L149" href="#L149">149</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L150" href="#L150">150</a> <em class="jxr_javadoccomment">	 * Checks if a pattern contains any format specifiers.</em>
-<a class="jxr_linenumber" name="L151" href="#L151">151</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L152" href="#L152">152</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L153" href="#L153">153</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if the pattern contains any of the following characters:</em>
-<a class="jxr_linenumber" name="L154" href="#L154">154</a> <em class="jxr_javadoccomment">	 * &lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L155" href="#L155">155</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;js&gt;'%'&lt;/js&gt; - Printf-style format specifier&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L156" href="#L156">156</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;js&gt;'{'&lt;/js&gt; - MessageFormat-style placeholder&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L157" href="#L157">157</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;js&gt;'''&lt;/js&gt; - MessageFormat quote&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L158" href="#L158">158</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L159" href="#L159">159</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L160" href="#L160">160</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L161" href="#L161">161</a> <em class="jxr_javadoccomment">	 * Uses {@link AsciiSet} for efficient single-pass scanning of the string.</em>
-<a class="jxr_linenumber" name="L162" href="#L162">162</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L163" href="#L163">163</a> <em class="jxr_javadoccomment">	 * @param pattern The pattern to check.</em>
-<a class="jxr_linenumber" name="L164" href="#L164">164</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the pattern contains format specifiers, &lt;jk&gt;false&lt;/jk&gt; otherwise.</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> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">boolean</strong> hasArgs(String pattern) {
-<a class="jxr_linenumber" name="L167" href="#L167">167</a> 		<strong class="jxr_keyword">if</strong> (pattern == <strong class="jxr_keyword">null</strong> || pattern.isEmpty())
-<a class="jxr_linenumber" name="L168" href="#L168">168</a> 			<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L169" href="#L169">169</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> i = 0; i &lt; pattern.length(); i++) {
-<a class="jxr_linenumber" name="L170" href="#L170">170</a> 			<strong class="jxr_keyword">if</strong> (FORMAT_CHARS.contains(pattern.charAt(i)))
-<a class="jxr_linenumber" name="L171" href="#L171">171</a> 				<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">true</strong>;
-<a class="jxr_linenumber" name="L172" href="#L172">172</a> 		}
-<a class="jxr_linenumber" name="L173" href="#L173">173</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L174" href="#L174">174</a> 	}
-<a class="jxr_linenumber" name="L175" href="#L175">175</a> 
-<a class="jxr_linenumber" name="L176" href="#L176">176</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L177" href="#L177">177</a> <em class="jxr_javadoccomment">	 * Base class for format tokens.</em>
-<a class="jxr_linenumber" name="L178" href="#L178">178</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L179" href="#L179">179</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">class</strong> Token {
-<a class="jxr_linenumber" name="L180" href="#L180">180</a> 		<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L181" href="#L181">181</a> <em class="jxr_javadoccomment">		 * Appends the formatted content to the StringBuilder.</em>
-<a class="jxr_linenumber" name="L182" href="#L182">182</a> <em class="jxr_javadoccomment">		 *</em>
-<a class="jxr_linenumber" name="L183" href="#L183">183</a> <em class="jxr_javadoccomment">		 * @param sb The StringBuilder to append to.</em>
-<a class="jxr_linenumber" name="L184" href="#L184">184</a> <em class="jxr_javadoccomment">		 * @param args The arguments array.</em>
-<a class="jxr_linenumber" name="L185" href="#L185">185</a> <em class="jxr_javadoccomment">		 * @param locale The locale for formatting (can be null for default).</em>
-<a class="jxr_linenumber" name="L186" href="#L186">186</a> <em class="jxr_javadoccomment">		 */</em>
-<a class="jxr_linenumber" name="L187" href="#L187">187</a> 		<strong class="jxr_keyword">abstract</strong> <strong class="jxr_keyword">void</strong> append(StringBuilder sb, Object[] args, Locale locale);
-<a class="jxr_linenumber" name="L188" href="#L188">188</a> 	}
-<a class="jxr_linenumber" name="L189" href="#L189">189</a> 
-<a class="jxr_linenumber" name="L190" href="#L190">190</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L191" href="#L191">191</a> <em class="jxr_javadoccomment">	 * Literal text token.</em>
-<a class="jxr_linenumber" name="L192" href="#L192">192</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L193" href="#L193">193</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> LiteralToken <strong class="jxr_keyword">extends</strong> Token {
-<a class="jxr_linenumber" name="L194" href="#L194">194</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String text;
-<a class="jxr_linenumber" name="L195" href="#L195">195</a> 
-<a class="jxr_linenumber" name="L196" href="#L196">196</a> 		LiteralToken(String text) {
-<a class="jxr_linenumber" name="L197" href="#L197">197</a> 			<strong class="jxr_keyword">this</strong>.text = text;
-<a class="jxr_linenumber" name="L198" href="#L198">198</a> 		}
-<a class="jxr_linenumber" name="L199" href="#L199">199</a> 
-<a class="jxr_linenumber" name="L200" href="#L200">200</a> 		@Override
-<a class="jxr_linenumber" name="L201" href="#L201">201</a> 		<strong class="jxr_keyword">void</strong> append(StringBuilder sb, Object[] args, Locale locale) {
-<a class="jxr_linenumber" name="L202" href="#L202">202</a> 			sb.append(text);
-<a class="jxr_linenumber" name="L203" href="#L203">203</a> 		}
-<a class="jxr_linenumber" name="L204" href="#L204">204</a> 
-<a class="jxr_linenumber" name="L205" href="#L205">205</a> 		@Override
-<a class="jxr_linenumber" name="L206" href="#L206">206</a> 		<strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="L207" href="#L207">207</a> 			<strong class="jxr_keyword">return</strong> <span class="jxr_string">"[L:"</span> + text + <span class="jxr_string">"]"</span>;
-<a class="jxr_linenumber" name="L208" href="#L208">208</a> 		}
-<a class="jxr_linenumber" name="L209" href="#L209">209</a> 	}
-<a class="jxr_linenumber" name="L210" href="#L210">210</a> 
-<a class="jxr_linenumber" name="L211" href="#L211">211</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L212" href="#L212">212</a> <em class="jxr_javadoccomment">	 * MessageFormat-style token (e.g., {0}, {1,number}).</em>
-<a class="jxr_linenumber" name="L213" href="#L213">213</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L214" href="#L214">214</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> MessageFormatToken <strong class="jxr_keyword">extends</strong> Token {
-<a class="jxr_linenumber" name="L215" href="#L215">215</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">char</strong> format;
-<a class="jxr_linenumber" name="L216" href="#L216">216</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String content; <em class="jxr_comment">// null for simple tokens, normalized pattern like "{0,number}" for complex tokens</em>
-<a class="jxr_linenumber" name="L217" href="#L217">217</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> index; <em class="jxr_comment">// 0-based index</em>
-<a class="jxr_linenumber" name="L218" href="#L218">218</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String placeholder; <em class="jxr_comment">// Original placeholder text like "{0}" or "{0,number}"</em>
-<a class="jxr_linenumber" name="L219" href="#L219">219</a> 
-<a class="jxr_linenumber" name="L220" href="#L220">220</a> 		<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L221" href="#L221">221</a> <em class="jxr_javadoccomment">		 * @param content - The variable content such as "{}" or "{0}", or "{0,number}"</em>
-<a class="jxr_linenumber" name="L222" href="#L222">222</a> <em class="jxr_javadoccomment">		 * 	The content should have the curly-braces already removed so that we're only looking at the inner parts.</em>
-<a class="jxr_linenumber" name="L223" href="#L223">223</a> <em class="jxr_javadoccomment">		 * @param index - The zero-based index of the variable in the message (used for sequential {} placeholders).</em>
-<a class="jxr_linenumber" name="L224" href="#L224">224</a> <em class="jxr_javadoccomment">		 */</em>
-<a class="jxr_linenumber" name="L225" href="#L225">225</a> 		MessageFormatToken(String content, <strong class="jxr_keyword">int</strong> index) {
-<a class="jxr_linenumber" name="L226" href="#L226">226</a> 			<strong class="jxr_keyword">if</strong> (content.isBlank()) {
-<a class="jxr_linenumber" name="L227" href="#L227">227</a> 				<strong class="jxr_keyword">this</strong>.content = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L228" href="#L228">228</a> 				<strong class="jxr_keyword">this</strong>.index = index;
-<a class="jxr_linenumber" name="L229" href="#L229">229</a> 				<strong class="jxr_keyword">this</strong>.format = 's';
-<a class="jxr_linenumber" name="L230" href="#L230">230</a> 				<strong class="jxr_keyword">this</strong>.placeholder = <span class="jxr_string">"{"</span> + index + <span class="jxr_string">"}"</span>;
-<a class="jxr_linenumber" name="L231" href="#L231">231</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (content.indexOf(',') == -1) {
-<a class="jxr_linenumber" name="L232" href="#L232">232</a> 				<strong class="jxr_keyword">this</strong>.content = <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L233" href="#L233">233</a> 				<strong class="jxr_keyword">this</strong>.index = parseIndexMF(content);
-<a class="jxr_linenumber" name="L234" href="#L234">234</a> 				<strong class="jxr_keyword">this</strong>.format = 's';
-<a class="jxr_linenumber" name="L235" href="#L235">235</a> 				<strong class="jxr_keyword">this</strong>.placeholder = <span class="jxr_string">"{"</span> + <strong class="jxr_keyword">this</strong>.index + <span class="jxr_string">"}"</span>;
-<a class="jxr_linenumber" name="L236" href="#L236">236</a> 			} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> 				<strong class="jxr_keyword">var</strong> tokens = content.split(<span class="jxr_string">","</span>, 2);
-<a class="jxr_linenumber" name="L238" href="#L238">238</a> 				<strong class="jxr_keyword">this</strong>.index = parseIndexMF(tokens[0]);
-<a class="jxr_linenumber" name="L239" href="#L239">239</a> 				<strong class="jxr_keyword">this</strong>.content = <span class="jxr_string">"{0,"</span> + tokens[1] + <span class="jxr_string">"}"</span>;
-<a class="jxr_linenumber" name="L240" href="#L240">240</a> 				<strong class="jxr_keyword">this</strong>.format = 'o';
-<a class="jxr_linenumber" name="L241" href="#L241">241</a> 				<strong class="jxr_keyword">this</strong>.placeholder = <span class="jxr_string">"{"</span> + <strong class="jxr_keyword">this</strong>.index + <span class="jxr_string">","</span> + tokens[1] + <span class="jxr_string">"}"</span>;
-<a class="jxr_linenumber" name="L242" href="#L242">242</a> 			}
-<a class="jxr_linenumber" name="L243" href="#L243">243</a> 		}
-<a class="jxr_linenumber" name="L244" href="#L244">244</a> 
-<a class="jxr_linenumber" name="L245" href="#L245">245</a> 		@Override
-<a class="jxr_linenumber" name="L246" href="#L246">246</a> 		<strong class="jxr_keyword">void</strong> append(StringBuilder sb, Object[] args, Locale locale) {
-<a class="jxr_linenumber" name="L247" href="#L247">247</a> 			<em class="jxr_comment">// MessageFormat inserts the placeholder text if argument is missing</em>
-<a class="jxr_linenumber" name="L248" href="#L248">248</a> 			<strong class="jxr_keyword">if</strong> (args == <strong class="jxr_keyword">null</strong> || index &gt;= args.length || index &lt; 0) {
-<a class="jxr_linenumber" name="L249" href="#L249">249</a> 				sb.append(placeholder);
-<a class="jxr_linenumber" name="L250" href="#L250">250</a> 				<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L251" href="#L251">251</a> 			}
-<a class="jxr_linenumber" name="L252" href="#L252">252</a> 			<strong class="jxr_keyword">var</strong> o = args[index];
-<a class="jxr_linenumber" name="L253" href="#L253">253</a> 			<strong class="jxr_keyword">var</strong> l = locale == <strong class="jxr_keyword">null</strong> ? Locale.getDefault() : locale;
-<a class="jxr_linenumber" name="L254" href="#L254">254</a> 			<strong class="jxr_keyword">switch</strong> (format) {
-<a class="jxr_linenumber" name="L255" href="#L255">255</a> 				<strong class="jxr_keyword">case</strong> 's':
-<a class="jxr_linenumber" name="L256" href="#L256">256</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L257" href="#L257">257</a> 						sb.append(<span class="jxr_string">"null"</span>);
-<a class="jxr_linenumber" name="L258" href="#L258">258</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Number o2) {
-<a class="jxr_linenumber" name="L259" href="#L259">259</a> 						sb.append(NUMBER_FORMAT_CACHE.get(l).format(o2));
-<a class="jxr_linenumber" name="L260" href="#L260">260</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Date o2) {
-<a class="jxr_linenumber" name="L261" href="#L261">261</a> 						sb.append(DATE_FORMAT_CACHE.get(l).format(o2));
-<a class="jxr_linenumber" name="L262" href="#L262">262</a> 					} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L263" href="#L263">263</a> 						sb.append(o.toString());
-<a class="jxr_linenumber" name="L264" href="#L264">264</a> 					}
-<a class="jxr_linenumber" name="L265" href="#L265">265</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L266" href="#L266">266</a> 				<strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="L267" href="#L267">267</a> 					<em class="jxr_comment">// Use Cache2 with Locale and content as separate keys to avoid string concatenation</em>
-<a class="jxr_linenumber" name="L268" href="#L268">268</a> 					<strong class="jxr_keyword">var</strong> mf = MESSAGE_FORMAT_CACHE.get(l, content);
-<a class="jxr_linenumber" name="L269" href="#L269">269</a> 					sb.append(mf.format(a(o)));
-<a class="jxr_linenumber" name="L270" href="#L270">270</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L271" href="#L271">271</a> 			}
-<a class="jxr_linenumber" name="L272" href="#L272">272</a> 		}
-<a class="jxr_linenumber" name="L273" href="#L273">273</a> 
-<a class="jxr_linenumber" name="L274" href="#L274">274</a> 		@Override
-<a class="jxr_linenumber" name="L275" href="#L275">275</a> 		<strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="L276" href="#L276">276</a> 			<strong class="jxr_keyword">return</strong> <span class="jxr_string">"[M:"</span> + format + index + (content == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">""</span> : (':' + content)) + <span class="jxr_string">"]"</span>;
-<a class="jxr_linenumber" name="L277" href="#L277">277</a> 		}
-<a class="jxr_linenumber" name="L278" href="#L278">278</a> 	}
-<a class="jxr_linenumber" name="L279" href="#L279">279</a> 
-<a class="jxr_linenumber" name="L280" href="#L280">280</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L281" href="#L281">281</a> <em class="jxr_javadoccomment">	 * Printf-style token (e.g., %s, %d, %.2f).</em>
-<a class="jxr_linenumber" name="L282" href="#L282">282</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L283" href="#L283">283</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> StringFormatToken <strong class="jxr_keyword">extends</strong> Token {
-<a class="jxr_linenumber" name="L284" href="#L284">284</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">char</strong> format; <em class="jxr_comment">// 's' = simple (handle directly), 'o' = other (use String.format)</em>
-<a class="jxr_linenumber" name="L285" href="#L285">285</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String content; <em class="jxr_comment">// The format string to pass to String.format (null for simple formats)</em>
-<a class="jxr_linenumber" name="L286" href="#L286">286</a> 		<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">int</strong> index; <em class="jxr_comment">// 0-based index</em>
-<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
-<a class="jxr_linenumber" name="L288" href="#L288">288</a> 		StringFormatToken(String content, <strong class="jxr_keyword">int</strong> index) {
-<a class="jxr_linenumber" name="L289" href="#L289">289</a> 			<em class="jxr_comment">// content is everything after '%' (e.g., "s", "1$s", "d", ".2f", "1$.2f")</em>
-<a class="jxr_linenumber" name="L290" href="#L290">290</a> 			<strong class="jxr_keyword">var</strong> $ = content.indexOf('$');
-<a class="jxr_linenumber" name="L291" href="#L291">291</a> 			<strong class="jxr_keyword">if</strong> ($ &gt;= 0) {
-<a class="jxr_linenumber" name="L292" href="#L292">292</a> 				index = parseIndexSF(content.substring(0, $)) - 1;
-<a class="jxr_linenumber" name="L293" href="#L293">293</a> 				content = content.substring($ + 1);
-<a class="jxr_linenumber" name="L294" href="#L294">294</a> 			}
-<a class="jxr_linenumber" name="L295" href="#L295">295</a> 			<strong class="jxr_keyword">this</strong>.format = content.length() == 1 ? content.charAt(content.length() - 1) : 'z';
-<a class="jxr_linenumber" name="L296" href="#L296">296</a> 			<strong class="jxr_keyword">this</strong>.index = index;
-<a class="jxr_linenumber" name="L297" href="#L297">297</a> 			<strong class="jxr_keyword">this</strong>.content = <span class="jxr_string">"%"</span> + content;
-<a class="jxr_linenumber" name="L298" href="#L298">298</a> 		}
-<a class="jxr_linenumber" name="L299" href="#L299">299</a> 
-<a class="jxr_linenumber" name="L300" href="#L300">300</a> 		@Override
-<a class="jxr_linenumber" name="L301" href="#L301">301</a> 		<strong class="jxr_keyword">void</strong> append(StringBuilder sb, Object[] args, Locale locale) {
-<a class="jxr_linenumber" name="L302" href="#L302">302</a> 			<em class="jxr_comment">// String.format() throws MissingFormatArgumentException when argument is missing</em>
-<a class="jxr_linenumber" name="L303" href="#L303">303</a> 			<strong class="jxr_keyword">if</strong> (args == <strong class="jxr_keyword">null</strong> || index &gt;= args.length || index &lt; 0) {
-<a class="jxr_linenumber" name="L304" href="#L304">304</a> 				<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> MissingFormatArgumentException(content);
-<a class="jxr_linenumber" name="L305" href="#L305">305</a> 			}
-<a class="jxr_linenumber" name="L306" href="#L306">306</a> 			<strong class="jxr_keyword">var</strong> o = args[index];
-<a class="jxr_linenumber" name="L307" href="#L307">307</a> 			<strong class="jxr_keyword">var</strong> l = locale == <strong class="jxr_keyword">null</strong> ? Locale.getDefault() : locale;
-<a class="jxr_linenumber" name="L308" href="#L308">308</a> 			<strong class="jxr_keyword">var</strong> dl = locale == <strong class="jxr_keyword">null</strong> || locale.equals(Locale.getDefault());
-<a class="jxr_linenumber" name="L309" href="#L309">309</a> 			<strong class="jxr_keyword">switch</strong> (format) {
-<a class="jxr_linenumber" name="L310" href="#L310">310</a> 				<strong class="jxr_keyword">case</strong> 'b':
-<a class="jxr_linenumber" name="L311" href="#L311">311</a> 					<em class="jxr_comment">// String.format() with %b converts:</em>
-<a class="jxr_linenumber" name="L312" href="#L312">312</a> 					<em class="jxr_comment">// - null -&gt; "false"</em>
-<a class="jxr_linenumber" name="L313" href="#L313">313</a> 					<em class="jxr_comment">// - Boolean -&gt; toString()</em>
-<a class="jxr_linenumber" name="L314" href="#L314">314</a> 					<em class="jxr_comment">// - Any other non-null value -&gt; "true"</em>
-<a class="jxr_linenumber" name="L315" href="#L315">315</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L316" href="#L316">316</a> 						sb.append(<span class="jxr_string">"false"</span>);
-<a class="jxr_linenumber" name="L317" href="#L317">317</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Boolean) {
-<a class="jxr_linenumber" name="L318" href="#L318">318</a> 						sb.append(o.toString());
-<a class="jxr_linenumber" name="L319" href="#L319">319</a> 					} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L320" href="#L320">320</a> 						sb.append(<span class="jxr_string">"true"</span>);
-<a class="jxr_linenumber" name="L321" href="#L321">321</a> 					}
-<a class="jxr_linenumber" name="L322" href="#L322">322</a> 					<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L323" href="#L323">323</a> 				<strong class="jxr_keyword">case</strong> 'B':
-<a class="jxr_linenumber" name="L324" href="#L324">324</a> 					<em class="jxr_comment">// String.format() with %B converts:</em>
-<a class="jxr_linenumber" name="L325" href="#L325">325</a> 					<em class="jxr_comment">// - null -&gt; "FALSE"</em>
-<a class="jxr_linenumber" name="L326" href="#L326">326</a> 					<em class="jxr_comment">// - Boolean -&gt; toString().toUpperCase()</em>
-<a class="jxr_linenumber" name="L327" href="#L327">327</a> 					<em class="jxr_comment">// - Any other non-null value -&gt; "TRUE"</em>
-<a class="jxr_linenumber" name="L328" href="#L328">328</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L329" href="#L329">329</a> 						sb.append(<span class="jxr_string">"FALSE"</span>);
-<a class="jxr_linenumber" name="L330" href="#L330">330</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Boolean) {
-<a class="jxr_linenumber" name="L331" href="#L331">331</a> 						sb.append(o.toString().toUpperCase());
-<a class="jxr_linenumber" name="L332" href="#L332">332</a> 					} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L333" href="#L333">333</a> 						sb.append(<span class="jxr_string">"TRUE"</span>);
-<a class="jxr_linenumber" name="L334" href="#L334">334</a> 					}
-<a class="jxr_linenumber" name="L335" href="#L335">335</a> 					<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L336" href="#L336">336</a> 				<strong class="jxr_keyword">case</strong> 's':
-<a class="jxr_linenumber" name="L337" href="#L337">337</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L338" href="#L338">338</a> 						sb.append(<span class="jxr_string">"null"</span>);
-<a class="jxr_linenumber" name="L339" href="#L339">339</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> 					}
-<a class="jxr_linenumber" name="L341" href="#L341">341</a> 					sb.append(o.toString());
-<a class="jxr_linenumber" name="L342" href="#L342">342</a> 					<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> 				<strong class="jxr_keyword">case</strong> 'S':
-<a class="jxr_linenumber" name="L344" href="#L344">344</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L345" href="#L345">345</a> 						sb.append(<span class="jxr_string">"NULL"</span>);
-<a class="jxr_linenumber" name="L346" href="#L346">346</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L347" href="#L347">347</a> 					}
-<a class="jxr_linenumber" name="L348" href="#L348">348</a> 					sb.append(o.toString().toUpperCase());
-<a class="jxr_linenumber" name="L349" href="#L349">349</a> 					<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L350" href="#L350">350</a> 				<strong class="jxr_keyword">case</strong> 'd':
-<a class="jxr_linenumber" name="L351" href="#L351">351</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L352" href="#L352">352</a> 						sb.append(<span class="jxr_string">"null"</span>);
-<a class="jxr_linenumber" name="L353" href="#L353">353</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L354" href="#L354">354</a> 					}
-<a class="jxr_linenumber" name="L355" href="#L355">355</a> 					<strong class="jxr_keyword">if</strong> (o instanceof Number o2) {
-<a class="jxr_linenumber" name="L356" href="#L356">356</a> 						<strong class="jxr_keyword">if</strong> (dl) {
-<a class="jxr_linenumber" name="L357" href="#L357">357</a> 							<strong class="jxr_keyword">if</strong> (o instanceof Integer || o instanceof Long || o instanceof Byte || o instanceof Short) {
-<a class="jxr_linenumber" name="L358" href="#L358">358</a> 								sb.append(o);
-<a class="jxr_linenumber" name="L359" href="#L359">359</a> 							} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L360" href="#L360">360</a> 								<em class="jxr_comment">// For other Number types (BigDecimal, BigInteger, etc.), convert to long</em>
-<a class="jxr_linenumber" name="L361" href="#L361">361</a> 								sb.append(o2.longValue());
-<a class="jxr_linenumber" name="L362" href="#L362">362</a> 							}
-<a class="jxr_linenumber" name="L363" href="#L363">363</a> 							<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L364" href="#L364">364</a> 						}
-<a class="jxr_linenumber" name="L365" href="#L365">365</a> 						<em class="jxr_comment">// For non-default locales, use String.format to ensure printf-style consistency</em>
-<a class="jxr_linenumber" name="L366" href="#L366">366</a> 						sb.append(sf(l, <span class="jxr_string">"%d"</span>, o));
-<a class="jxr_linenumber" name="L367" href="#L367">367</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L368" href="#L368">368</a> 					}
-<a class="jxr_linenumber" name="L369" href="#L369">369</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L370" href="#L370">370</a> 				<strong class="jxr_keyword">case</strong> 'x':
-<a class="jxr_linenumber" name="L371" href="#L371">371</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L372" href="#L372">372</a> 						sb.append(<span class="jxr_string">"null"</span>);
-<a class="jxr_linenumber" name="L373" href="#L373">373</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L374" href="#L374">374</a> 					}
-<a class="jxr_linenumber" name="L375" href="#L375">375</a> 					<strong class="jxr_keyword">if</strong> (o instanceof Integer o2) {
-<a class="jxr_linenumber" name="L376" href="#L376">376</a> 						sb.append(Integer.toHexString(o2));
-<a class="jxr_linenumber" name="L377" href="#L377">377</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L378" href="#L378">378</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Long o2) {
-<a class="jxr_linenumber" name="L379" href="#L379">379</a> 						sb.append(Long.toHexString(o2));
-<a class="jxr_linenumber" name="L380" href="#L380">380</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L381" href="#L381">381</a> 					}
-<a class="jxr_linenumber" name="L382" href="#L382">382</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L383" href="#L383">383</a> 				<strong class="jxr_keyword">case</strong> 'X':
-<a class="jxr_linenumber" name="L384" href="#L384">384</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L385" href="#L385">385</a> 						sb.append(<span class="jxr_string">"NULL"</span>);
-<a class="jxr_linenumber" name="L386" href="#L386">386</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L387" href="#L387">387</a> 					}
-<a class="jxr_linenumber" name="L388" href="#L388">388</a> 					<strong class="jxr_keyword">if</strong> (o instanceof Integer o2) {
-<a class="jxr_linenumber" name="L389" href="#L389">389</a> 						sb.append(Integer.toHexString(o2).toUpperCase());
-<a class="jxr_linenumber" name="L390" href="#L390">390</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L391" href="#L391">391</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Long o2) {
-<a class="jxr_linenumber" name="L392" href="#L392">392</a> 						sb.append(Long.toHexString(o2).toUpperCase());
-<a class="jxr_linenumber" name="L393" href="#L393">393</a> 						<strong class="jxr_keyword">return</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">break</strong>;
-<a class="jxr_linenumber" name="L396" href="#L396">396</a> 				<strong class="jxr_keyword">case</strong> 'o':
-<a class="jxr_linenumber" name="L397" href="#L397">397</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L398" href="#L398">398</a> 						sb.append(<span class="jxr_string">"null"</span>);
-<a class="jxr_linenumber" name="L399" href="#L399">399</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L400" href="#L400">400</a> 					}
-<a class="jxr_linenumber" name="L401" href="#L401">401</a> 					<strong class="jxr_keyword">if</strong> (o instanceof Integer o2) {
-<a class="jxr_linenumber" name="L402" href="#L402">402</a> 						sb.append(Integer.toOctalString(o2));
-<a class="jxr_linenumber" name="L403" href="#L403">403</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L404" href="#L404">404</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Long o2) {
-<a class="jxr_linenumber" name="L405" href="#L405">405</a> 						sb.append(Long.toOctalString(o2));
-<a class="jxr_linenumber" name="L406" href="#L406">406</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L407" href="#L407">407</a> 					}
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> 				<strong class="jxr_keyword">case</strong> 'c':
-<a class="jxr_linenumber" name="L410" href="#L410">410</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L411" href="#L411">411</a> 						sb.append(<span class="jxr_string">"null"</span>);
-<a class="jxr_linenumber" name="L412" href="#L412">412</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L413" href="#L413">413</a> 					}
-<a class="jxr_linenumber" name="L414" href="#L414">414</a> 					<strong class="jxr_keyword">if</strong> (o instanceof Character) {
-<a class="jxr_linenumber" name="L415" href="#L415">415</a> 						sb.append(o);
-<a class="jxr_linenumber" name="L416" href="#L416">416</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L417" href="#L417">417</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Integer o2) {
-<a class="jxr_linenumber" name="L418" href="#L418">418</a> 						sb.append((<strong class="jxr_keyword">char</strong>)o2.intValue());
-<a class="jxr_linenumber" name="L419" href="#L419">419</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L420" href="#L420">420</a> 					}
-<a class="jxr_linenumber" name="L421" href="#L421">421</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L422" href="#L422">422</a> 				<strong class="jxr_keyword">case</strong> 'C':
-<a class="jxr_linenumber" name="L423" href="#L423">423</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L424" href="#L424">424</a> 						sb.append(<span class="jxr_string">"NULL"</span>);
-<a class="jxr_linenumber" name="L425" href="#L425">425</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L426" href="#L426">426</a> 					}
-<a class="jxr_linenumber" name="L427" href="#L427">427</a> 					<strong class="jxr_keyword">if</strong> (o instanceof Character o2) {
-<a class="jxr_linenumber" name="L428" href="#L428">428</a> 						sb.append(Character.toUpperCase(o2));
-<a class="jxr_linenumber" name="L429" href="#L429">429</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L430" href="#L430">430</a> 					} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (o instanceof Integer o2) {
-<a class="jxr_linenumber" name="L431" href="#L431">431</a> 						sb.append(Character.toUpperCase((<strong class="jxr_keyword">char</strong>)o2.intValue()));
-<a class="jxr_linenumber" name="L432" href="#L432">432</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L433" href="#L433">433</a> 					}
-<a class="jxr_linenumber" name="L434" href="#L434">434</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L435" href="#L435">435</a> 				<strong class="jxr_keyword">case</strong> 'f':
-<a class="jxr_linenumber" name="L436" href="#L436">436</a> 					<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L437" href="#L437">437</a> 						sb.append(<span class="jxr_string">"null"</span>);
-<a class="jxr_linenumber" name="L438" href="#L438">438</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L439" href="#L439">439</a> 					}
-<a class="jxr_linenumber" name="L440" href="#L440">440</a> 					<em class="jxr_comment">// Always use String.format() to match exact behavior (precision, etc.)</em>
-<a class="jxr_linenumber" name="L441" href="#L441">441</a> 					<strong class="jxr_keyword">if</strong> (o instanceof Number) {
-<a class="jxr_linenumber" name="L442" href="#L442">442</a> 						sb.append(sf(l, <span class="jxr_string">"%f"</span>, o));
-<a class="jxr_linenumber" name="L443" href="#L443">443</a> 						<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L444" href="#L444">444</a> 					}
-<a class="jxr_linenumber" name="L445" href="#L445">445</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L446" href="#L446">446</a> 				<strong class="jxr_keyword">default</strong>:
-<a class="jxr_linenumber" name="L447" href="#L447">447</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L448" href="#L448">448</a> 			}
-<a class="jxr_linenumber" name="L449" href="#L449">449</a> 
-<a class="jxr_linenumber" name="L450" href="#L450">450</a> 			<em class="jxr_comment">// Fallback to String.format for any other simple format</em>
-<a class="jxr_linenumber" name="L451" href="#L451">451</a> 			sb.append(sf(l, content, o));
-<a class="jxr_linenumber" name="L452" href="#L452">452</a> 		}
-<a class="jxr_linenumber" name="L453" href="#L453">453</a> 
-<a class="jxr_linenumber" name="L454" href="#L454">454</a> 		@Override
-<a class="jxr_linenumber" name="L455" href="#L455">455</a> 		<strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="L456" href="#L456">456</a> 			<strong class="jxr_keyword">return</strong> <span class="jxr_string">"[S:"</span> + format + index + <span class="jxr_string">":"</span> + content + <span class="jxr_string">"]"</span>;
-<a class="jxr_linenumber" name="L457" href="#L457">457</a> 		}
-<a class="jxr_linenumber" name="L458" href="#L458">458</a> 	}
-<a class="jxr_linenumber" name="L459" href="#L459">459</a> 
-<a class="jxr_linenumber" name="L460" href="#L460">460</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String sf(Locale l, String s, Object o) {
-<a class="jxr_linenumber" name="L461" href="#L461">461</a> 		<strong class="jxr_keyword">return</strong> String.format(l, s, a(o));
-<a class="jxr_linenumber" name="L462" href="#L462">462</a> 	}
-<a class="jxr_linenumber" name="L463" href="#L463">463</a> 
-<a class="jxr_linenumber" name="L464" href="#L464">464</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> String pattern;
-<a class="jxr_linenumber" name="L465" href="#L465">465</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">final</strong> Token[] tokens;
-<a class="jxr_linenumber" name="L466" href="#L466">466</a> 
-<a class="jxr_linenumber" name="L467" href="#L467">467</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L468" href="#L468">468</a> <em class="jxr_javadoccomment">	 * Creates a new FormatString instance.</em>
-<a class="jxr_linenumber" name="L469" href="#L469">469</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L470" href="#L470">470</a> <em class="jxr_javadoccomment">	 * @param pattern The format pattern. Can contain both MessageFormat and printf-style placeholders.</em>
-<a class="jxr_linenumber" name="L471" href="#L471">471</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If the pattern is &lt;jk&gt;null&lt;/jk&gt;.</em>
-<a class="jxr_linenumber" name="L472" href="#L472">472</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L473" href="#L473">473</a> 	<strong class="jxr_keyword">public</strong> <a name="FormatString" href="../../../../../org/apache/juneau/common/utils/FormatString.html#FormatString">FormatString</a>(String pattern) {
-<a class="jxr_linenumber" name="L474" href="#L474">474</a> 		<strong class="jxr_keyword">this</strong>.pattern = assertArgNotNull(<span class="jxr_string">"pattern"</span>, pattern);
-<a class="jxr_linenumber" name="L475" href="#L475">475</a> 		<strong class="jxr_keyword">this</strong>.tokens = parseTokens(pattern).toArray(Token[]::<strong class="jxr_keyword">new</strong>);
-<a class="jxr_linenumber" name="L476" href="#L476">476</a> 	}
-<a class="jxr_linenumber" name="L477" href="#L477">477</a> 
-<a class="jxr_linenumber" name="L478" href="#L478">478</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L479" href="#L479">479</a> <em class="jxr_javadoccomment">	 * Returns a cached FormatString instance for the given pattern.</em>
-<a class="jxr_linenumber" name="L480" href="#L480">480</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L481" href="#L481">481</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L482" href="#L482">482</a> <em class="jxr_javadoccomment">	 * This method uses a thread-safe cache to avoid recreating FormatString instances for the same pattern.</em>
-<a class="jxr_linenumber" name="L483" href="#L483">483</a> <em class="jxr_javadoccomment">	 * The cache is limited to 1000 entries.</em>
-<a class="jxr_linenumber" name="L484" href="#L484">484</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L485" href="#L485">485</a> <em class="jxr_javadoccomment">	 * @param pattern The format pattern.</em>
-<a class="jxr_linenumber" name="L486" href="#L486">486</a> <em class="jxr_javadoccomment">	 * @return A cached or new FormatString instance.</em>
-<a class="jxr_linenumber" name="L487" href="#L487">487</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If the pattern is &lt;jk&gt;null&lt;/jk&gt;.</em>
-<a class="jxr_linenumber" name="L488" href="#L488">488</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L489" href="#L489">489</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a name="FormatString" href="../../../../../org/apache/juneau/common/utils/FormatString.html#FormatString">FormatString</a> of(String pattern) {
-<a class="jxr_linenumber" name="L490" href="#L490">490</a> 		assertArgNotNull(<span class="jxr_string">"pattern"</span>, pattern);
-<a class="jxr_linenumber" name="L491" href="#L491">491</a> 		<strong class="jxr_keyword">return</strong> CACHE.get(pattern, () -&gt; <strong class="jxr_keyword">new</strong> <a name="FormatString" href="../../../../../org/apache/juneau/common/utils/FormatString.html#FormatString">FormatString</a>(pattern));
-<a class="jxr_linenumber" name="L492" href="#L492">492</a> 	}
-<a class="jxr_linenumber" name="L493" href="#L493">493</a> 
-<a class="jxr_linenumber" name="L494" href="#L494">494</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L495" href="#L495">495</a> <em class="jxr_javadoccomment">	 * Formats the pattern with the given arguments using the default locale.</em>
-<a class="jxr_linenumber" name="L496" href="#L496">496</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L497" href="#L497">497</a> <em class="jxr_javadoccomment">	 * @param args The arguments to format.</em>
-<a class="jxr_linenumber" name="L498" href="#L498">498</a> <em class="jxr_javadoccomment">	 * @return The formatted string.</em>
-<a class="jxr_linenumber" name="L499" href="#L499">499</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If format specifiers are invalid or arguments don't match.</em>
-<a class="jxr_linenumber" name="L500" href="#L500">500</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L501" href="#L501">501</a> 	<strong class="jxr_keyword">public</strong> String format(Object...args) {
-<a class="jxr_linenumber" name="L502" href="#L502">502</a> 		<strong class="jxr_keyword">return</strong> format(Locale.getDefault(), args);
-<a class="jxr_linenumber" name="L503" href="#L503">503</a> 	}
-<a class="jxr_linenumber" name="L504" href="#L504">504</a> 
-<a class="jxr_linenumber" name="L505" href="#L505">505</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L506" href="#L506">506</a> <em class="jxr_javadoccomment">	 * Formats the pattern with the given arguments using the specified locale.</em>
-<a class="jxr_linenumber" name="L507" href="#L507">507</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L508" href="#L508">508</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L509" href="#L509">509</a> <em class="jxr_javadoccomment">	 * The locale affects both MessageFormat and printf-style formatting:</em>
-<a class="jxr_linenumber" name="L510" href="#L510">510</a> <em class="jxr_javadoccomment">	 * &lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L511" href="#L511">511</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;MessageFormat:&lt;/b&gt; Locale-specific number, date, and time formatting&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L512" href="#L512">512</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;Printf:&lt;/b&gt; Locale-specific number formatting (decimal separators, etc.)&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L513" href="#L513">513</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L514" href="#L514">514</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L515" href="#L515">515</a> <em class="jxr_javadoccomment">	 * @param locale The locale to use for formatting. If &lt;jk&gt;null&lt;/jk&gt;, uses the default locale.</em>
-<a class="jxr_linenumber" name="L516" href="#L516">516</a> <em class="jxr_javadoccomment">	 * @param args The arguments to format.</em>
-<a class="jxr_linenumber" name="L517" href="#L517">517</a> <em class="jxr_javadoccomment">	 * @return The formatted string.</em>
-<a class="jxr_linenumber" name="L518" href="#L518">518</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If format specifiers are invalid or arguments don't match.</em>
-<a class="jxr_linenumber" name="L519" href="#L519">519</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L520" href="#L520">520</a> 	<strong class="jxr_keyword">public</strong> String format(Locale locale, Object...args) {
-<a class="jxr_linenumber" name="L521" href="#L521">521</a> 		<strong class="jxr_keyword">var</strong> sb = <strong class="jxr_keyword">new</strong> StringBuilder(pattern.length() + 64);
-<a class="jxr_linenumber" name="L522" href="#L522">522</a> 		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> token : tokens) {
-<a class="jxr_linenumber" name="L523" href="#L523">523</a> 			token.append(sb, args, locale);
-<a class="jxr_linenumber" name="L524" href="#L524">524</a> 		}
-<a class="jxr_linenumber" name="L525" href="#L525">525</a> 		<strong class="jxr_keyword">return</strong> sb.toString();
-<a class="jxr_linenumber" name="L526" href="#L526">526</a> 	}
-<a class="jxr_linenumber" name="L527" href="#L527">527</a> 
-<a class="jxr_linenumber" name="L528" href="#L528">528</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L529" href="#L529">529</a> <em class="jxr_javadoccomment">	 * Parses the pattern into a list of tokens.</em>
-<a class="jxr_linenumber" name="L530" href="#L530">530</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L531" href="#L531">531</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> List&lt;Token&gt; parseTokens(String pattern) {
-<a class="jxr_linenumber" name="L532" href="#L532">532</a> 		<strong class="jxr_keyword">var</strong> tokens = <strong class="jxr_keyword">new</strong> ArrayList&lt;Token&gt;();
-<a class="jxr_linenumber" name="L533" href="#L533">533</a> 		<strong class="jxr_keyword">var</strong> length = pattern.length();
-<a class="jxr_linenumber" name="L534" href="#L534">534</a> 		<strong class="jxr_keyword">var</strong> i = 0;
-<a class="jxr_linenumber" name="L535" href="#L535">535</a> 		<strong class="jxr_keyword">var</strong> sequentialIndex = 0; <em class="jxr_comment">// 0-based index for sequential placeholders</em>
-<a class="jxr_linenumber" name="L536" href="#L536">536</a> 
-<a class="jxr_linenumber" name="L537" href="#L537">537</a> 		<em class="jxr_comment">// Possible String.format variable formats:</em>
-<a class="jxr_linenumber" name="L538" href="#L538">538</a> 		<em class="jxr_comment">// %[argument_index$][flags][width][.precision]conversion</em>
-<a class="jxr_linenumber" name="L539" href="#L539">539</a> 		<em class="jxr_comment">// %[argument_index$][flags][width]conversion</em>
-<a class="jxr_linenumber" name="L540" href="#L540">540</a> 		<em class="jxr_comment">// %[flags][width]conversion</em>
-<a class="jxr_linenumber" name="L541" href="#L541">541</a> 
-<a class="jxr_linenumber" name="L542" href="#L542">542</a> 		<em class="jxr_comment">// Possible MessageFormat variable formats:</em>
-<a class="jxr_linenumber" name="L543" href="#L543">543</a> 		<em class="jxr_comment">// {}</em>
-<a class="jxr_linenumber" name="L544" href="#L544">544</a> 		<em class="jxr_comment">// {#,formatType}</em>
-<a class="jxr_linenumber" name="L545" href="#L545">545</a> 		<em class="jxr_comment">// {#,formatType,formatStyle}</em>
-<a class="jxr_linenumber" name="L546" href="#L546">546</a> 
-<a class="jxr_linenumber" name="L547" href="#L547">547</a> 		<em class="jxr_comment">// S1 - In literal, looking for %, {, or '</em>
-<a class="jxr_linenumber" name="L548" href="#L548">548</a> 		<em class="jxr_comment">// S2 - Found %, looking for conversion char or t or T</em>
-<a class="jxr_linenumber" name="L549" href="#L549">549</a> 		<em class="jxr_comment">// S3 - Found {, looking for }</em>
-<a class="jxr_linenumber" name="L550" href="#L550">550</a> 		<em class="jxr_comment">// S4 - Found ', in quoted section (MessageFormat single quotes escape special chars), looking for '</em>
-<a class="jxr_linenumber" name="L551" href="#L551">551</a> 		<strong class="jxr_keyword">var</strong> state = S1;
-<a class="jxr_linenumber" name="L552" href="#L552">552</a> 
-<a class="jxr_linenumber" name="L553" href="#L553">553</a> 		<strong class="jxr_keyword">var</strong> nestedBracketDepth = 0;
-<a class="jxr_linenumber" name="L554" href="#L554">554</a> 
-<a class="jxr_linenumber" name="L555" href="#L555">555</a> 		<strong class="jxr_keyword">var</strong> mark = 0;
-<a class="jxr_linenumber" name="L556" href="#L556">556</a> 		<strong class="jxr_keyword">while</strong> (i &lt; length) {
-<a class="jxr_linenumber" name="L557" href="#L557">557</a> 			<strong class="jxr_keyword">var</strong> ch = pattern.charAt(i++);
-<a class="jxr_linenumber" name="L558" href="#L558">558</a> 
-<a class="jxr_linenumber" name="L559" href="#L559">559</a> 			<strong class="jxr_keyword">if</strong> (state == S1) {
-<a class="jxr_linenumber" name="L560" href="#L560">560</a> 				<strong class="jxr_keyword">if</strong> (ch == '%') {
-<a class="jxr_linenumber" name="L561" href="#L561">561</a> 					lit(tokens, pattern, mark, i - 1);
-<a class="jxr_linenumber" name="L562" href="#L562">562</a> 					state = S2;
-<a class="jxr_linenumber" name="L563" href="#L563">563</a> 					mark = i;
-<a class="jxr_linenumber" name="L564" href="#L564">564</a> 				} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ch == '{') {
-<a class="jxr_linenumber" name="L565" href="#L565">565</a> 					lit(tokens, pattern, mark, i - 1);
-<a class="jxr_linenumber" name="L566" href="#L566">566</a> 					state = S3;
-<a class="jxr_linenumber" name="L567" href="#L567">567</a> 					mark = i - 1;
-<a class="jxr_linenumber" name="L568" href="#L568">568</a> 				} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ch == '\'') {
-<a class="jxr_linenumber" name="L569" href="#L569">569</a> 					lit(tokens, pattern, mark, i - 1);
-<a class="jxr_linenumber" name="L570" href="#L570">570</a> 					state = S4;
-<a class="jxr_linenumber" name="L571" href="#L571">571</a> 					mark = i;
-<a class="jxr_linenumber" name="L572" href="#L572">572</a> 				}
-<a class="jxr_linenumber" name="L573" href="#L573">573</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (state == S2) {
-<a class="jxr_linenumber" name="L574" href="#L574">574</a> 				<strong class="jxr_keyword">if</strong> (ch == '%') {
-<a class="jxr_linenumber" name="L575" href="#L575">575</a> 					tokens.add(<strong class="jxr_keyword">new</strong> LiteralToken(<span class="jxr_string">"%"</span>));
-<a class="jxr_linenumber" name="L576" href="#L576">576</a> 					state = S1;
-<a class="jxr_linenumber" name="L577" href="#L577">577</a> 					mark = i;
-<a class="jxr_linenumber" name="L578" href="#L578">578</a> 				} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ch == 't' || ch == 'T') {
-<a class="jxr_linenumber" name="L579" href="#L579">579</a> 					<em class="jxr_comment">// Do nothing.  Part of 2-character time conversion.</em>
-<a class="jxr_linenumber" name="L580" href="#L580">580</a> 				} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (PRINTF_CONVERSION_CHARS.contains(ch)) {
-<a class="jxr_linenumber" name="L581" href="#L581">581</a> 					sf(tokens, pattern, mark, i, sequentialIndex++);
-<a class="jxr_linenumber" name="L582" href="#L582">582</a> 					state = S1;
-<a class="jxr_linenumber" name="L583" href="#L583">583</a> 					mark = i;
-<a class="jxr_linenumber" name="L584" href="#L584">584</a> 				} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (PRINTF_FORMAT_CHARS.contains(ch) || Character.isDigit(ch)) {
-<a class="jxr_linenumber" name="L585" href="#L585">585</a> 					<em class="jxr_comment">// Do nothing.</em>
-<a class="jxr_linenumber" name="L586" href="#L586">586</a> 				} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L587" href="#L587">587</a> 					<em class="jxr_comment">// Unknown character - could be invalid conversion or end of format</em>
-<a class="jxr_linenumber" name="L588" href="#L588">588</a> 					<em class="jxr_comment">// Create StringFormatToken and let String.format() validate it</em>
-<a class="jxr_linenumber" name="L589" href="#L589">589</a> 					<em class="jxr_comment">// This allows String.format() to throw IllegalFormatException for invalid conversions like %F</em>
-<a class="jxr_linenumber" name="L590" href="#L590">590</a> 					<em class="jxr_comment">// printfStart is position after '%', so substring from printfStart-1 (the '%') to i (after the char)</em>
-<a class="jxr_linenumber" name="L591" href="#L591">591</a> 					sf(tokens, pattern, mark, i, sequentialIndex++);
-<a class="jxr_linenumber" name="L592" href="#L592">592</a> 					state = S1;
-<a class="jxr_linenumber" name="L593" href="#L593">593</a> 					mark = i;
-<a class="jxr_linenumber" name="L594" href="#L594">594</a> 				}
-<a class="jxr_linenumber" name="L595" href="#L595">595</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (state == S3) {
-<a class="jxr_linenumber" name="L596" href="#L596">596</a> 				<strong class="jxr_keyword">if</strong> (ch == '{') {
-<a class="jxr_linenumber" name="L597" href="#L597">597</a> 					nestedBracketDepth++;
-<a class="jxr_linenumber" name="L598" href="#L598">598</a> 				} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ch == '}') {
-<a class="jxr_linenumber" name="L599" href="#L599">599</a> 					<strong class="jxr_keyword">if</strong> (nestedBracketDepth &gt; 0) {
-<a class="jxr_linenumber" name="L600" href="#L600">600</a> 						nestedBracketDepth--;
-<a class="jxr_linenumber" name="L601" href="#L601">601</a> 					} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L602" href="#L602">602</a> 						mf(tokens, pattern, mark + 1, i - 1, sequentialIndex++);
-<a class="jxr_linenumber" name="L603" href="#L603">603</a> 						state = S1;
-<a class="jxr_linenumber" name="L604" href="#L604">604</a> 						mark = i;
-<a class="jxr_linenumber" name="L605" href="#L605">605</a> 					}
-<a class="jxr_linenumber" name="L606" href="#L606">606</a> 				}
-<a class="jxr_linenumber" name="L607" href="#L607">607</a> 			} <strong class="jxr_keyword">else</strong> <em class="jxr_comment">/* if (state == S4) */</em> {
-<a class="jxr_linenumber" name="L608" href="#L608">608</a> 				<strong class="jxr_keyword">if</strong> (ch == '\'') {
-<a class="jxr_linenumber" name="L609" href="#L609">609</a> 					<strong class="jxr_keyword">if</strong> (mark == i - 1) {
-<a class="jxr_linenumber" name="L610" href="#L610">610</a> 						lit(tokens, pattern, mark, i);  <em class="jxr_comment">// '' becomes '</em>
-<a class="jxr_linenumber" name="L611" href="#L611">611</a> 						state = S1;
-<a class="jxr_linenumber" name="L612" href="#L612">612</a> 						mark = i;
-<a class="jxr_linenumber" name="L613" href="#L613">613</a> 					} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L614" href="#L614">614</a> 						lit(tokens, pattern, mark, i - 1);
-<a class="jxr_linenumber" name="L615" href="#L615">615</a> 						state = S1;
-<a class="jxr_linenumber" name="L616" href="#L616">616</a> 						mark = i;
-<a class="jxr_linenumber" name="L617" href="#L617">617</a> 					}
-<a class="jxr_linenumber" name="L618" href="#L618">618</a> 				}
-<a class="jxr_linenumber" name="L619" href="#L619">619</a> 			}
-<a class="jxr_linenumber" name="L620" href="#L620">620</a> 		}
-<a class="jxr_linenumber" name="L621" href="#L621">621</a> 
-<a class="jxr_linenumber" name="L622" href="#L622">622</a> 		<em class="jxr_comment">// Process remaining content based on final state</em>
-<a class="jxr_linenumber" name="L623" href="#L623">623</a> 		<strong class="jxr_keyword">if</strong> (state == S1) {
-<a class="jxr_linenumber" name="L624" href="#L624">624</a> 			lit(tokens, pattern, mark);
-<a class="jxr_linenumber" name="L625" href="#L625">625</a> 		} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (state == S2) {
-<a class="jxr_linenumber" name="L626" href="#L626">626</a> 			<em class="jxr_comment">// Dangling '%' without conversion - throw exception to match String.format() behavior</em>
-<a class="jxr_linenumber" name="L627" href="#L627">627</a> 			<em class="jxr_comment">// UnknownFormatConversionException constructor takes just the conversion character</em>
-<a class="jxr_linenumber" name="L628" href="#L628">628</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> java.util.UnknownFormatConversionException(<span class="jxr_string">"%"</span>);
-<a class="jxr_linenumber" name="L629" href="#L629">629</a> 		} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (state == S3) {
-<a class="jxr_linenumber" name="L630" href="#L630">630</a> 			<em class="jxr_comment">// Unmatched '{' - throw exception to match MessageFormat behavior</em>
-<a class="jxr_linenumber" name="L631" href="#L631">631</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"Unmatched braces in the pattern."</span>);
-<a class="jxr_linenumber" name="L632" href="#L632">632</a> 		} <strong class="jxr_keyword">else</strong> <em class="jxr_comment">/* if (state == S4) */</em> {
-<a class="jxr_linenumber" name="L633" href="#L633">633</a> 			<em class="jxr_comment">// Unmatched quote - MessageFormat treats it as ending the quoted section</em>
-<a class="jxr_linenumber" name="L634" href="#L634">634</a> 			<em class="jxr_comment">// Add the quoted content as literal (from mark to end of pattern)</em>
-<a class="jxr_linenumber" name="L635" href="#L635">635</a> 			lit(tokens, pattern, mark);
-<a class="jxr_linenumber" name="L636" href="#L636">636</a> 		}
-<a class="jxr_linenumber" name="L637" href="#L637">637</a> 
-<a class="jxr_linenumber" name="L638" href="#L638">638</a> 		<strong class="jxr_keyword">return</strong> tokens;
-<a class="jxr_linenumber" name="L639" href="#L639">639</a> 	}
-<a class="jxr_linenumber" name="L640" href="#L640">640</a> 
-<a class="jxr_linenumber" name="L641" href="#L641">641</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> lit(List&lt;Token&gt; tokens, String pattern, <strong class="jxr_keyword">int</strong> start, <strong class="jxr_keyword">int</strong> end) {
-<a class="jxr_linenumber" name="L642" href="#L642">642</a> 		<strong class="jxr_keyword">if</strong> (start == end)
-<a class="jxr_linenumber" name="L643" href="#L643">643</a> 			<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L644" href="#L644">644</a> 		tokens.add(<strong class="jxr_keyword">new</strong> LiteralToken(pattern.substring(start, end)));
-<a class="jxr_linenumber" name="L645" href="#L645">645</a> 	}
-<a class="jxr_linenumber" name="L646" href="#L646">646</a> 
-<a class="jxr_linenumber" name="L647" href="#L647">647</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> lit(List&lt;Token&gt; tokens, String pattern, <strong class="jxr_keyword">int</strong> start) {
-<a class="jxr_linenumber" name="L648" href="#L648">648</a> 		<strong class="jxr_keyword">if</strong> (start == pattern.length())
-<a class="jxr_linenumber" name="L649" href="#L649">649</a> 			<strong class="jxr_keyword">return</strong>;
-<a class="jxr_linenumber" name="L650" href="#L650">650</a> 		tokens.add(<strong class="jxr_keyword">new</strong> LiteralToken(pattern.substring(start)));
-<a class="jxr_linenumber" name="L651" href="#L651">651</a> 	}
-<a class="jxr_linenumber" name="L652" href="#L652">652</a> 
-<a class="jxr_linenumber" name="L653" href="#L653">653</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> sf(List&lt;Token&gt; tokens, String pattern, <strong class="jxr_keyword">int</strong> start, <strong class="jxr_keyword">int</strong> end, <strong class="jxr_keyword">int</strong> index) {
-<a class="jxr_linenumber" name="L654" href="#L654">654</a> 		tokens.add(<strong class="jxr_keyword">new</strong> StringFormatToken(pattern.substring(start, end), index));
-<a class="jxr_linenumber" name="L655" href="#L655">655</a> 	}
-<a class="jxr_linenumber" name="L656" href="#L656">656</a> 
-<a class="jxr_linenumber" name="L657" href="#L657">657</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">void</strong> mf(List&lt;Token&gt; tokens, String pattern, <strong class="jxr_keyword">int</strong> start, <strong class="jxr_keyword">int</strong> end, <strong class="jxr_keyword">int</strong> index) {
-<a class="jxr_linenumber" name="L658" href="#L658">658</a> 		tokens.add(<strong class="jxr_keyword">new</strong> MessageFormatToken(pattern.substring(start, end), index));
-<a class="jxr_linenumber" name="L659" href="#L659">659</a> 	}
-<a class="jxr_linenumber" name="L660" href="#L660">660</a> 
-<a class="jxr_linenumber" name="L661" href="#L661">661</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> parseIndexMF(String s) {
-<a class="jxr_linenumber" name="L662" href="#L662">662</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L663" href="#L663">663</a> 			<strong class="jxr_keyword">return</strong> Integer.parseInt(s.trim());
-<a class="jxr_linenumber" name="L664" href="#L664">664</a> 		} <strong class="jxr_keyword">catch</strong> (@SuppressWarnings(<span class="jxr_string">"unused"</span>) NumberFormatException e) {
-<a class="jxr_linenumber" name="L665" href="#L665">665</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(<span class="jxr_string">"can't parse argument number: "</span> + s);
-<a class="jxr_linenumber" name="L666" href="#L666">666</a> 		}
-<a class="jxr_linenumber" name="L667" href="#L667">667</a> 	}
-<a class="jxr_linenumber" name="L668" href="#L668">668</a> 
-<a class="jxr_linenumber" name="L669" href="#L669">669</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">int</strong> parseIndexSF(String s) {
-<a class="jxr_linenumber" name="L670" href="#L670">670</a> 		<strong class="jxr_keyword">return</strong> Integer.parseInt(s.trim());
-<a class="jxr_linenumber" name="L671" href="#L671">671</a> 	}
-<a class="jxr_linenumber" name="L672" href="#L672">672</a> 
-<a class="jxr_linenumber" name="L673" href="#L673">673</a> 	@Override
-<a class="jxr_linenumber" name="L674" href="#L674">674</a> 	<strong class="jxr_keyword">public</strong> String toString() {
-<a class="jxr_linenumber" name="L675" href="#L675">675</a> 		<strong class="jxr_keyword">return</strong> pattern;
-<a class="jxr_linenumber" name="L676" href="#L676">676</a> 	}
-<a class="jxr_linenumber" name="L677" href="#L677">677</a> 
-<a class="jxr_linenumber" name="L678" href="#L678">678</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L679" href="#L679">679</a> <em class="jxr_javadoccomment">	 * Returns a debug representation of the parsed pattern showing the token structure.</em>
-<a class="jxr_linenumber" name="L680" href="#L680">680</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L681" href="#L681">681</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L682" href="#L682">682</a> <em class="jxr_javadoccomment">	 * This method is useful for debugging and understanding how a pattern was parsed.</em>
-<a class="jxr_linenumber" name="L683" href="#L683">683</a> <em class="jxr_javadoccomment">	 * It returns a string showing each token in the format:</em>
-<a class="jxr_linenumber" name="L684" href="#L684">684</a> <em class="jxr_javadoccomment">	 * &lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L685" href="#L685">685</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;Literal tokens:&lt;/b&gt; &lt;js&gt;"[L:text]"&lt;/js&gt; - Literal text&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L686" href="#L686">686</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;MessageFormat tokens (simple):&lt;/b&gt; &lt;js&gt;"[M:s0]"&lt;/js&gt; - Simple MessageFormat placeholder (format='s', index=0)&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L687" href="#L687">687</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;MessageFormat tokens (complex):&lt;/b&gt; &lt;js&gt;"[M:o0:{0,number,currency}]"&lt;/js&gt; - Complex MessageFormat placeholder (format='o', index=0, content)&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L688" href="#L688">688</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;StringFormat tokens (simple):&lt;/b&gt; &lt;js&gt;"[S:s0:%s]"&lt;/js&gt; - Simple printf placeholder (format='s', index=0, content)&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L689" href="#L689">689</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;StringFormat tokens (complex):&lt;/b&gt; &lt;js&gt;"[S:z0:%.2f]"&lt;/js&gt; - Complex printf placeholder (format='z', index=0, content)&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L690" href="#L690">690</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L691" href="#L691">691</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L692" href="#L692">692</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Token Format:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L693" href="#L693">693</a> <em class="jxr_javadoccomment">	 * &lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L694" href="#L694">694</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;L&lt;/b&gt; = Literal token&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L695" href="#L695">695</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;M&lt;/b&gt; = MessageFormat token&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L696" href="#L696">696</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;S&lt;/b&gt; = StringFormat (printf) token&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L697" href="#L697">697</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;Format character:&lt;/b&gt; 's' = simple, 'o' = other/complex, 'z' = complex printf&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L698" href="#L698">698</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;Index:&lt;/b&gt; 0-based argument index&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L699" href="#L699">699</a> <em class="jxr_javadoccomment">	 *   &lt;li&gt;&lt;b&gt;Content:&lt;/b&gt; The format string content (for complex tokens)&lt;/li&gt;</em>
-<a class="jxr_linenumber" name="L700" href="#L700">700</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L701" href="#L701">701</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L702" href="#L702">702</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;Examples:&lt;/h5&gt;</em>
-<a class="jxr_linenumber" name="L703" href="#L703">703</a> <em class="jxr_javadoccomment">	 * &lt;p class='bjava'&gt;</em>
-<a class="jxr_linenumber" name="L704" href="#L704">704</a> <em class="jxr_javadoccomment">	 * 	FormatString &lt;jv&gt;fmt&lt;/jv&gt; = FormatString.&lt;jsm&gt;of&lt;/jsm&gt;(&lt;js&gt;"Hello {0}, you have %d items"&lt;/js&gt;);</em>
-<a class="jxr_linenumber" name="L705" href="#L705">705</a> <em class="jxr_javadoccomment">	 * 	&lt;jv&gt;fmt&lt;/jv&gt;.&lt;jsm&gt;toPattern&lt;/jsm&gt;();</em>
-<a class="jxr_linenumber" name="L706" href="#L706">706</a> <em class="jxr_javadoccomment">	 * 	&lt;jc&gt;// Returns: "[L:Hello ][M:s0][L:, you have ][S:d1:%d][L: items]"&lt;/jc&gt;</em>
-<a class="jxr_linenumber" name="L707" href="#L707">707</a> <em class="jxr_javadoccomment">	 * &lt;/p&gt;</em>
-<a class="jxr_linenumber" name="L708" href="#L708">708</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L709" href="#L709">709</a> <em class="jxr_javadoccomment">	 * @return A debug string showing the parsed token structure.</em>
-<a class="jxr_linenumber" name="L710" href="#L710">710</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L711" href="#L711">711</a> 	<strong class="jxr_keyword">public</strong> String toPattern() {
-<a class="jxr_linenumber" name="L712" href="#L712">712</a> 		<strong class="jxr_keyword">return</strong> Arrays.stream(tokens).map(Object::toString).collect(Collectors.joining());
-<a class="jxr_linenumber" name="L713" href="#L713">713</a> 	}
-<a class="jxr_linenumber" name="L714" href="#L714">714</a> 
-<a class="jxr_linenumber" name="L715" href="#L715">715</a> 	@Override
-<a class="jxr_linenumber" name="L716" href="#L716">716</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> equals(Object o) {
-<a class="jxr_linenumber" name="L717" href="#L717">717</a> 		<strong class="jxr_keyword">return</strong> o instanceof <a name="FormatString" href="../../../../../org/apache/juneau/common/utils/FormatString.html#FormatString">FormatString</a> o2 &amp;&amp; eq(<strong class="jxr_keyword">this</strong>, o2, (x, y) -&gt; eq(x.pattern, y.pattern));
-<a class="jxr_linenumber" name="L718" href="#L718">718</a> 	}
-<a class="jxr_linenumber" name="L719" href="#L719">719</a> 
-<a class="jxr_linenumber" name="L720" href="#L720">720</a> 	@Override
-<a class="jxr_linenumber" name="L721" href="#L721">721</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">int</strong> hashCode() {
-<a class="jxr_linenumber" name="L722" href="#L722">722</a> 		<strong class="jxr_keyword">return</strong> pattern.hashCode();
-<a class="jxr_linenumber" name="L723" href="#L723">723</a> 	}
-<a class="jxr_linenumber" name="L724" href="#L724">724</a> }
-</pre>
-<hr/>
-<div id="footer">© 2016–2025 <a href="https://www.apache.org/">The Apache Software Foundation</a></div>
-</body>
-</html>
diff --git a/site/xref/org/apache/juneau/common/utils/StringFormat.html b/site/xref/org/apache/juneau/common/utils/StringFormat.html
index ca82f8c6a9..d641c8e20f 100644
--- a/site/xref/org/apache/juneau/common/utils/StringFormat.html
+++ b/site/xref/org/apache/juneau/common/utils/StringFormat.html
@@ -122,7 +122,7 @@
 <a class="jxr_linenumber" name="L114" href="#L114">114</a> <em class="jxr_javadoccomment">	 *</em>
 <a class="jxr_linenumber" name="L115" href="#L115">115</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
 <a class="jxr_linenumber" name="L116" href="#L116">116</a> <em class="jxr_javadoccomment">	 * This is a convenience method that creates a StringFormat instance and formats it.</em>
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> <em class="jxr_javadoccomment">	 * If the pattern contains no format specifiers (no '%', '{', or '''), the pattern is returned as-is.</em>
+<a class="jxr_linenumber" name="L117" href="#L117">117</a> <em class="jxr_javadoccomment">	 * If no arguments are passed in, the pattern is simply returned as-is.</em>
 <a class="jxr_linenumber" name="L118" href="#L118">118</a> <em class="jxr_javadoccomment">	 *</em>
 <a class="jxr_linenumber" name="L119" href="#L119">119</a> <em class="jxr_javadoccomment">	 * @param pattern The format pattern.</em>
 <a class="jxr_linenumber" name="L120" href="#L120">120</a> <em class="jxr_javadoccomment">	 * @param args The arguments to format.</em>
@@ -130,7 +130,7 @@
 <a class="jxr_linenumber" name="L122" href="#L122">122</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If the pattern is &lt;jk&gt;null&lt;/jk&gt; or format specifiers are invalid.</em>
 <a class="jxr_linenumber" name="L123" href="#L123">123</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L124" href="#L124">124</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String format(String pattern, Object...args) {
-<a class="jxr_linenumber" name="L125" href="#L125">125</a> 		<strong class="jxr_keyword">if</strong> (!hasArgs(pattern))
+<a class="jxr_linenumber" name="L125" href="#L125">125</a> 		<strong class="jxr_keyword">if</strong> (args.length == 0)
 <a class="jxr_linenumber" name="L126" href="#L126">126</a> 			<strong class="jxr_keyword">return</strong> pattern;
 <a class="jxr_linenumber" name="L127" href="#L127">127</a> 		<strong class="jxr_keyword">return</strong> of(pattern).format(args);
 <a class="jxr_linenumber" name="L128" href="#L128">128</a> 	}
@@ -140,7 +140,7 @@
 <a class="jxr_linenumber" name="L132" href="#L132">132</a> <em class="jxr_javadoccomment">	 *</em>
 <a class="jxr_linenumber" name="L133" href="#L133">133</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
 <a class="jxr_linenumber" name="L134" href="#L134">134</a> <em class="jxr_javadoccomment">	 * This is a convenience method that creates a StringFormat instance and formats it.</em>
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">	 * If the pattern contains no format specifiers (no '%', '{', or '''), the pattern is returned as-is.</em>
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> <em class="jxr_javadoccomment">	 * If no arguments are passed in, the pattern is returned as-is.</em>
 <a class="jxr_linenumber" name="L136" href="#L136">136</a> <em class="jxr_javadoccomment">	 *</em>
 <a class="jxr_linenumber" name="L137" href="#L137">137</a> <em class="jxr_javadoccomment">	 * @param pattern The format pattern.</em>
 <a class="jxr_linenumber" name="L138" href="#L138">138</a> <em class="jxr_javadoccomment">	 * @param locale The locale to use for formatting. If &lt;jk&gt;null&lt;/jk&gt;, uses the default locale.</em>
@@ -149,7 +149,7 @@
 <a class="jxr_linenumber" name="L141" href="#L141">141</a> <em class="jxr_javadoccomment">	 * @throws IllegalArgumentException If the pattern is &lt;jk&gt;null&lt;/jk&gt; or format specifiers are invalid.</em>
 <a class="jxr_linenumber" name="L142" href="#L142">142</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L143" href="#L143">143</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> String format(String pattern, Locale locale, Object...args) {
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> 		<strong class="jxr_keyword">if</strong> (!hasArgs(pattern))
+<a class="jxr_linenumber" name="L144" href="#L144">144</a> 		<strong class="jxr_keyword">if</strong> (args.length == 0)
 <a class="jxr_linenumber" name="L145" href="#L145">145</a> 			<strong class="jxr_keyword">return</strong> pattern;
 <a class="jxr_linenumber" name="L146" href="#L146">146</a> 		<strong class="jxr_keyword">return</strong> of(pattern).format(locale, args);
 <a class="jxr_linenumber" name="L147" href="#L147">147</a> 	}
diff --git a/site/xref/org/apache/juneau/common/utils/ThrowableUtils.html b/site/xref/org/apache/juneau/common/utils/ThrowableUtils.html
index 2c00293e4c..5254732541 100644
--- a/site/xref/org/apache/juneau/common/utils/ThrowableUtils.html
+++ b/site/xref/org/apache/juneau/common/utils/ThrowableUtils.html
@@ -146,7 +146,7 @@
 <a class="jxr_linenumber" name="L138" href="#L138">138</a> <em class="jxr_javadoccomment">	 * @return A new IllegalArgumentException with the formatted message.</em>
 <a class="jxr_linenumber" name="L139" href="#L139">139</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L140" href="#L140">140</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> IllegalArgumentException illegalArg(String msg, Object...args) {
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(args.length == 0 ? msg : f(msg, args));
+<a class="jxr_linenumber" name="L141" href="#L141">141</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(f(msg, args));
 <a class="jxr_linenumber" name="L142" href="#L142">142</a> 	}
 <a class="jxr_linenumber" name="L143" href="#L143">143</a> 
 <a class="jxr_linenumber" name="L144" href="#L144">144</a> 	<em class="jxr_javadoccomment">/**</em>
@@ -168,7 +168,7 @@
 <a class="jxr_linenumber" name="L160" href="#L160">160</a> <em class="jxr_javadoccomment">	 * @return A new IllegalArgumentException with the formatted message and cause.</em>
 <a class="jxr_linenumber" name="L161" href="#L161">161</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L162" href="#L162">162</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> IllegalArgumentException illegalArg(Throwable cause, String msg, Object...args) {
-<a class="jxr_linenumber" name="L163" href="#L163">163</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(args.length == 0 ? msg : f(msg, args), cause);
+<a class="jxr_linenumber" name="L163" href="#L163">163</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> IllegalArgumentException(f(msg, args), cause);
 <a class="jxr_linenumber" name="L164" href="#L164">164</a> 	}
 <a class="jxr_linenumber" name="L165" href="#L165">165</a> 
 <a class="jxr_linenumber" name="L166" href="#L166">166</a> 	<em class="jxr_javadoccomment">/**</em>
@@ -179,7 +179,7 @@
 <a class="jxr_linenumber" name="L171" href="#L171">171</a> <em class="jxr_javadoccomment">	 * @return A new IOException with the formatted message.</em>
 <a class="jxr_linenumber" name="L172" href="#L172">172</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L173" href="#L173">173</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> java.io.IOException ioex(String msg, Object...args) {
-<a class="jxr_linenumber" name="L174" href="#L174">174</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> java.io.IOException(args.length == 0 ? msg : f(msg, args));
+<a class="jxr_linenumber" name="L174" href="#L174">174</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> java.io.IOException(f(msg, args));
 <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> 	<em class="jxr_javadoccomment">/**</em>
@@ -201,7 +201,7 @@
 <a class="jxr_linenumber" name="L193" href="#L193">193</a> <em class="jxr_javadoccomment">	 * @return A new IOException with the formatted message and cause.</em>
 <a class="jxr_linenumber" name="L194" href="#L194">194</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L195" href="#L195">195</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> java.io.IOException ioex(Throwable cause, String msg, Object...args) {
-<a class="jxr_linenumber" name="L196" href="#L196">196</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> java.io.IOException(args.length == 0 ? msg : f(msg, args), cause);
+<a class="jxr_linenumber" name="L196" href="#L196">196</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> java.io.IOException(f(msg, args), cause);
 <a class="jxr_linenumber" name="L197" href="#L197">197</a> 	}
 <a class="jxr_linenumber" name="L198" href="#L198">198</a> 
 <a class="jxr_linenumber" name="L199" href="#L199">199</a> 	<em class="jxr_javadoccomment">/**</em>
@@ -222,7 +222,7 @@
 <a class="jxr_linenumber" name="L214" href="#L214">214</a> <em class="jxr_javadoccomment">	 * @return A new RuntimeException with the formatted message.</em>
 <a class="jxr_linenumber" name="L215" href="#L215">215</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L216" href="#L216">216</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> RuntimeException rex(String msg, Object...args) {
-<a class="jxr_linenumber" name="L217" href="#L217">217</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> RuntimeException(args.length == 0 ? msg : f(msg, args));
+<a class="jxr_linenumber" name="L217" href="#L217">217</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> RuntimeException(f(msg, args));
 <a class="jxr_linenumber" name="L218" href="#L218">218</a> 	}
 <a class="jxr_linenumber" name="L219" href="#L219">219</a> 
 <a class="jxr_linenumber" name="L220" href="#L220">220</a> 	<em class="jxr_javadoccomment">/**</em>
@@ -302,7 +302,7 @@
 <a class="jxr_linenumber" name="L294" href="#L294">294</a> <em class="jxr_javadoccomment">	 * @return A new RuntimeException with the formatted message and cause.</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> <strong class="jxr_keyword">static</strong> <a name="BeanRuntimeException" href="../../../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a> bex(Throwable cause, String msg, Object...args) {
-<a class="jxr_linenumber" name="L297" href="#L297">297</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(args.length == 0 ? msg : f(msg, args), cause);
+<a class="jxr_linenumber" name="L297" href="#L297">297</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="BeanRuntimeException" href="../../../../../org/apache/juneau/common/reflect/BeanRuntimeException.html#BeanRuntimeException">BeanRuntimeException</a>(f(msg, args), cause);
 <a class="jxr_linenumber" name="L298" href="#L298">298</a> 	}
 <a class="jxr_linenumber" name="L299" href="#L299">299</a> 
 <a class="jxr_linenumber" name="L300" href="#L300">300</a> 	<em class="jxr_javadoccomment">/**</em>
@@ -332,7 +332,7 @@
 <a class="jxr_linenumber" name="L324" href="#L324">324</a> <em class="jxr_javadoccomment">	 * @return A new UnsupportedOperationException with the formatted message.</em>
 <a class="jxr_linenumber" name="L325" href="#L325">325</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L326" href="#L326">326</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> UnsupportedOperationException unsupportedOp(String msg, Object...args) {
-<a class="jxr_linenumber" name="L327" href="#L327">327</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException(args.length == 0 ? msg : f(msg, args));
+<a class="jxr_linenumber" name="L327" href="#L327">327</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException(f(msg, args));
 <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> 	<em class="jxr_javadoccomment">/**</em>
@@ -354,7 +354,7 @@
 <a class="jxr_linenumber" name="L346" href="#L346">346</a> <em class="jxr_javadoccomment">	 * @return A new UnsupportedOperationException with the formatted message and cause.</em>
 <a class="jxr_linenumber" name="L347" href="#L347">347</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L348" href="#L348">348</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> UnsupportedOperationException unsupportedOp(Throwable cause, String msg, Object...args) {
-<a class="jxr_linenumber" name="L349" href="#L349">349</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException(args.length == 0 ? msg : f(msg, args), cause);
+<a class="jxr_linenumber" name="L349" href="#L349">349</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> UnsupportedOperationException(f(msg, args), cause);
 <a class="jxr_linenumber" name="L350" href="#L350">350</a> 	}
 <a class="jxr_linenumber" name="L351" href="#L351">351</a> 
 <a class="jxr_linenumber" name="L352" href="#L352">352</a> 	<em class="jxr_javadoccomment">/**</em>
diff --git a/site/xref/org/apache/juneau/common/utils/package-frame.html b/site/xref/org/apache/juneau/common/utils/package-frame.html
index 36175ca5fd..46be571f91 100644
--- a/site/xref/org/apache/juneau/common/utils/package-frame.html
+++ b/site/xref/org/apache/juneau/common/utils/package-frame.html
@@ -48,21 +48,6 @@
                 <li>
                     <a href="FileUtils.html#FileUtils" target="classFrame">FileUtils</a>
                 </li>
-                <li>
-                    <a href="FormatString.html#FormatString" target="classFrame">FormatString</a>
-                </li>
-                <li>
-                    <a href="FormatString.html#FormatString.LiteralToken" target="classFrame">FormatString.LiteralToken</a>
-                </li>
-                <li>
-                    <a href="FormatString.html#FormatString.MessageFormatToken" target="classFrame">FormatString.MessageFormatToken</a>
-                </li>
-                <li>
-                    <a href="FormatString.html#FormatString.StringFormatToken" target="classFrame">FormatString.StringFormatToken</a>
-                </li>
-                <li>
-                    <a href="FormatString.html#FormatString.Token" target="classFrame">FormatString.Token</a>
-                </li>
                 <li>
                     <a href="GranularZonedDateTime.html#GranularZonedDateTime" target="classFrame">GranularZonedDateTime</a>
                 </li>
diff --git a/site/xref/org/apache/juneau/common/utils/package-summary.html b/site/xref/org/apache/juneau/common/utils/package-summary.html
index 1badb164de..ad7a9d56d4 100644
--- a/site/xref/org/apache/juneau/common/utils/package-summary.html
+++ b/site/xref/org/apache/juneau/common/utils/package-summary.html
@@ -117,141 +117,116 @@
                                 </td>
                             </tr>
                             <tr class="altColor">
-                                <td class="colFirst colLast">
-                                    <a href="FormatString.html#FormatString" target="classFrame" title="class in org.apache.juneau.common.utils">FormatString</a>
-                                </td>
-                            </tr>
-                            <tr class="rowColor">
-                                <td class="colFirst colLast">
-                                    <a href="FormatString.html#FormatString.LiteralToken" target="classFrame" title="class in org.apache.juneau.common.utils">FormatString.LiteralToken</a>
-                                </td>
-                            </tr>
-                            <tr class="altColor">
-                                <td class="colFirst colLast">
-                                    <a href="FormatString.html#FormatString.MessageFormatToken" target="classFrame" title="class in org.apache.juneau.common.utils">FormatString.MessageFormatToken</a>
-                                </td>
-                            </tr>
-                            <tr class="rowColor">
-                                <td class="colFirst colLast">
-                                    <a href="FormatString.html#FormatString.StringFormatToken" target="classFrame" title="class in org.apache.juneau.common.utils">FormatString.StringFormatToken</a>
-                                </td>
-                            </tr>
-                            <tr class="altColor">
-                                <td class="colFirst colLast">
-                                    <a href="FormatString.html#FormatString.Token" target="classFrame" title="class in org.apache.juneau.common.utils">FormatString.Token</a>
-                                </td>
-                            </tr>
-                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="GranularZonedDateTime.html#GranularZonedDateTime" target="classFrame" title="class in org.apache.juneau.common.utils">GranularZonedDateTime</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="HashCode.html#HashCode" target="classFrame" title="class in org.apache.juneau.common.utils">HashCode</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="IOUtils.html#IOUtils" target="classFrame" title="class in org.apache.juneau.common.utils">IOUtils</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="MimeTypeDetector.html#MimeTypeDetector" target="classFrame" title="class in org.apache.juneau.common.utils">MimeTypeDetector</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="MimeTypeDetector.html#MimeTypeDetector.Builder" target="classFrame" title="class in org.apache.juneau.common.utils">MimeTypeDetector.Builder</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="PredicateUtils.html#PredicateUtils" target="classFrame" title="class in org.apache.juneau.common.utils">PredicateUtils</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="ResourceBundleUtils.html#ResourceBundleUtils" target="classFrame" title="class in org.apache.juneau.common.utils">ResourceBundleUtils</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="SimpleLock.html#SimpleLock" target="classFrame" title="class in org.apache.juneau.common.utils">SimpleLock</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="SimpleReadWriteLock.html#SimpleReadWriteLock" target="classFrame" title="class in org.apache.juneau.common.utils">SimpleReadWriteLock</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="StateEnum.html#StateEnum" target="classFrame" title="class in org.apache.juneau.common.utils">StateEnum</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="StringFormat.html#StringFormat" target="classFrame" title="class in org.apache.juneau.common.utils">StringFormat</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="StringFormat.html#StringFormat.LiteralToken" target="classFrame" title="class in org.apache.juneau.common.utils">StringFormat.LiteralToken</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="StringFormat.html#StringFormat.MessageFormatToken" target="classFrame" title="class in org.apache.juneau.common.utils">StringFormat.MessageFormatToken</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="StringFormat.html#StringFormat.StringFormatToken" target="classFrame" title="class in org.apache.juneau.common.utils">StringFormat.StringFormatToken</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="StringFormat.html#StringFormat.Token" target="classFrame" title="class in org.apache.juneau.common.utils">StringFormat.Token</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="StringUtils.html#StringUtils" target="classFrame" title="class in org.apache.juneau.common.utils">StringUtils</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="SystemUtils.html#SystemUtils" target="classFrame" title="class in org.apache.juneau.common.utils">SystemUtils</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="ThrowableUtils.html#ThrowableUtils" target="classFrame" title="class in org.apache.juneau.common.utils">ThrowableUtils</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="ThrowableUtils.html#ThrowableUtils.SupplierWithThrowable" target="classFrame" title="class in org.apache.juneau.common.utils">ThrowableUtils.SupplierWithThrowable</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="Utils.html#Utils" target="classFrame" title="class in org.apache.juneau.common.utils">Utils</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="Version.html#Version" target="classFrame" title="class in org.apache.juneau.common.utils">Version</a>
                                 </td>
                             </tr>
-                            <tr class="altColor">
+                            <tr class="rowColor">
                                 <td class="colFirst colLast">
                                     <a href="VersionRange.html#VersionRange" target="classFrame" title="class in org.apache.juneau.common.utils">VersionRange</a>
                                 </td>
                             </tr>
-                            <tr class="rowColor">
+                            <tr class="altColor">
                                 <td class="colFirst colLast">
                                     <a href="WeightedAverage.html#WeightedAverage" target="classFrame" title="class in org.apache.juneau.common.utils">WeightedAverage</a>
                                 </td>
diff --git a/site/xref/org/apache/juneau/cp/Messages.html b/site/xref/org/apache/juneau/cp/Messages.html
index 4dd2035d1c..b2da9dbf33 100644
--- a/site/xref/org/apache/juneau/cp/Messages.html
+++ b/site/xref/org/apache/juneau/cp/Messages.html
@@ -449,7 +449,7 @@
 <a class="jxr_linenumber" name="L441" href="#L441">441</a> 		<strong class="jxr_keyword">var</strong> s = getString(key);
 <a class="jxr_linenumber" name="L442" href="#L442">442</a> 		<strong class="jxr_keyword">if</strong> (s.startsWith(<span class="jxr_string">"{!"</span>))
 <a class="jxr_linenumber" name="L443" href="#L443">443</a> 			<strong class="jxr_keyword">return</strong> s;
-<a class="jxr_linenumber" name="L444" href="#L444">444</a> 		<strong class="jxr_keyword">return</strong> mformat(s, args);
+<a class="jxr_linenumber" name="L444" href="#L444">444</a> 		<strong class="jxr_keyword">return</strong> f(s, args);
 <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> 	@Override <em class="jxr_comment">/* Overridden from ResourceBundle */</em>
diff --git a/site/xref/org/apache/juneau/microservice/Microservice.html b/site/xref/org/apache/juneau/microservice/Microservice.html
index c293de1c53..fc195bb3c8 100644
--- a/site/xref/org/apache/juneau/microservice/Microservice.html
+++ b/site/xref/org/apache/juneau/microservice/Microservice.html
@@ -1163,7 +1163,7 @@
 <a class="jxr_linenumber" name="L1155" href="#L1155">1155</a> <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
 <a class="jxr_linenumber" name="L1156" href="#L1156">1156</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L1157" href="#L1157">1157</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> log(Level level, String message, Object...args) {
-<a class="jxr_linenumber" name="L1158" href="#L1158">1158</a> 		<strong class="jxr_keyword">var</strong> msg = args.length == 0 ? message : MessageFormat.format(message, args);
+<a class="jxr_linenumber" name="L1158" href="#L1158">1158</a> 		<strong class="jxr_keyword">var</strong> msg = args.length == 0 ? message : f(message, args);
 <a class="jxr_linenumber" name="L1159" href="#L1159">1159</a> 		getLogger().log(level, msg);
 <a class="jxr_linenumber" name="L1160" href="#L1160">1160</a> 	}
 <a class="jxr_linenumber" name="L1161" href="#L1161">1161</a> 
diff --git a/site/xref/org/apache/juneau/microservice/jetty/JettyLogger.html b/site/xref/org/apache/juneau/microservice/jetty/JettyLogger.html
index 74d80116af..c1e877c01d 100644
--- a/site/xref/org/apache/juneau/microservice/jetty/JettyLogger.html
+++ b/site/xref/org/apache/juneau/microservice/jetty/JettyLogger.html
@@ -65,513 +65,497 @@
 <a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 * @return The formatted message string.</em>
 <a class="jxr_linenumber" name="L58" href="#L58">58</a>  <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L59" href="#L59">59</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String format(String msg, Object...args) {
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  		msg = String.valueOf(msg);
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  		<strong class="jxr_keyword">if</strong> (args.length == 0)
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  			<strong class="jxr_keyword">return</strong> msg;
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  		<strong class="jxr_keyword">var</strong> sb = <strong class="jxr_keyword">new</strong> StringBuilder();
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  		<strong class="jxr_keyword">int</strong> start = 0;
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  		<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> arg : args) {
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  			<strong class="jxr_keyword">int</strong> bi = msg.indexOf(<span class="jxr_string">"{}"</span>, start);
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  			<strong class="jxr_keyword">if</strong> (bi &lt; 0) {
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  				sb.append(msg.substring(start)).append(<span class="jxr_string">" "</span>).append(arg);
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  				start = msg.length();
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  			} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  				sb.append(msg.substring(start, bi)).append(String.valueOf(arg));
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  				start = bi + 2;
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  			}
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  		}
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  		sb.append(msg.substring(start));
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  		<strong class="jxr_keyword">return</strong> sb.toString();
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  	}
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  <em class="jxr_javadoccomment">	 * The originally configured log level, used to restore the level when debug mode is disabled.</em>
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  	<strong class="jxr_keyword">private</strong> Level configuredLevel;
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  <em class="jxr_javadoccomment">	 * The underlying Java Util Logger instance.</em>
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>  	<strong class="jxr_keyword">private</strong> Logger logger;
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>  <em class="jxr_javadoccomment">	 * Default constructor.</em>
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>  <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>  <em class="jxr_javadoccomment">	 * Returns the logger with name &lt;js&gt;"org.eclipse.jetty.util.log.javautil"&lt;/js&gt;.</em>
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>  	<strong class="jxr_keyword">public</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a>() {
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  		<strong class="jxr_keyword">this</strong>(<span class="jxr_string">"org.eclipse.jetty.util.log.javautil"</span>);
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  		<strong class="jxr_keyword">return</strong> f(msg, args);
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  	}
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>  
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <em class="jxr_javadoccomment">	 * The originally configured log level, used to restore the level when debug mode is disabled.</em>
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>  	<strong class="jxr_keyword">private</strong> Level configuredLevel;
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">	 * The underlying Java Util Logger instance.</em>
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>  	<strong class="jxr_keyword">private</strong> Logger logger;
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>  
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_javadoccomment">	 * Default constructor.</em>
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">	 * Returns the logger with name &lt;js&gt;"org.eclipse.jetty.util.log.javautil"&lt;/js&gt;.</em>
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  	<strong class="jxr_keyword">public</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a>() {
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>  		<strong class="jxr_keyword">this</strong>(<span class="jxr_string">"org.eclipse.jetty.util.log.javautil"</span>);
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>  	}
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>  
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>  <em class="jxr_javadoccomment">	 * Normal constructor.</em>
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  <em class="jxr_javadoccomment">	 * @param name The logger name.</em>
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>  	<strong class="jxr_keyword">public</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a>(String name) {
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>  		logger = Logger.getLogger(name);
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>  		configuredLevel = logger.getLevel();
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>  	}
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>  
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>  	@Override
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String msg) {
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>  		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
 <a class="jxr_linenumber" name="L97" href="#L97">97</a>  	}
 <a class="jxr_linenumber" name="L98" href="#L98">98</a>  
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L100" href="#L100">100</a> <em class="jxr_javadoccomment">	 * Normal constructor.</em>
-<a class="jxr_linenumber" name="L101" href="#L101">101</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L102" href="#L102">102</a> <em class="jxr_javadoccomment">	 * @param name The logger name.</em>
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L104" href="#L104">104</a> 	<strong class="jxr_keyword">public</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a>(String name) {
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 		logger = Logger.getLogger(name);
-<a class="jxr_linenumber" name="L106" href="#L106">106</a> 		configuredLevel = logger.getLevel();
-<a class="jxr_linenumber" name="L107" href="#L107">107</a> 	}
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>  	@Override
+<a class="jxr_linenumber" name="L100" href="#L100">100</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String format, Object arg) {
+<a class="jxr_linenumber" name="L101" href="#L101">101</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L102" href="#L102">102</a> 
+<a class="jxr_linenumber" name="L103" href="#L103">103</a> 	}
+<a class="jxr_linenumber" name="L104" href="#L104">104</a> 
+<a class="jxr_linenumber" name="L105" href="#L105">105</a> 	@Override
+<a class="jxr_linenumber" name="L106" href="#L106">106</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String format, Object...arguments) {
+<a class="jxr_linenumber" name="L107" href="#L107">107</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L108" href="#L108">108</a> 
-<a class="jxr_linenumber" name="L109" href="#L109">109</a> 	@Override
-<a class="jxr_linenumber" name="L110" href="#L110">110</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String msg) {
-<a class="jxr_linenumber" name="L111" href="#L111">111</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 
-<a class="jxr_linenumber" name="L113" href="#L113">113</a> 	}
+<a class="jxr_linenumber" name="L109" href="#L109">109</a> 	}
+<a class="jxr_linenumber" name="L110" href="#L110">110</a> 
+<a class="jxr_linenumber" name="L111" href="#L111">111</a> 	@Override
+<a class="jxr_linenumber" name="L112" href="#L112">112</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String format, Object arg1, Object arg2) {
+<a class="jxr_linenumber" name="L113" href="#L113">113</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L114" href="#L114">114</a> 
-<a class="jxr_linenumber" name="L115" href="#L115">115</a> 	@Override
-<a class="jxr_linenumber" name="L116" href="#L116">116</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String format, Object arg) {
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> 
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> 	}
+<a class="jxr_linenumber" name="L115" href="#L115">115</a> 	}
+<a class="jxr_linenumber" name="L116" href="#L116">116</a> 
+<a class="jxr_linenumber" name="L117" href="#L117">117</a> 	@Override
+<a class="jxr_linenumber" name="L118" href="#L118">118</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String msg, Throwable t) {
+<a class="jxr_linenumber" name="L119" href="#L119">119</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L120" href="#L120">120</a> 
-<a class="jxr_linenumber" name="L121" href="#L121">121</a> 	@Override
-<a class="jxr_linenumber" name="L122" href="#L122">122</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String format, Object...arguments) {
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L124" href="#L124">124</a> 
-<a class="jxr_linenumber" name="L125" href="#L125">125</a> 	}
+<a class="jxr_linenumber" name="L121" href="#L121">121</a> 	}
+<a class="jxr_linenumber" name="L122" href="#L122">122</a> 
+<a class="jxr_linenumber" name="L123" href="#L123">123</a> 	@Override
+<a class="jxr_linenumber" name="L124" href="#L124">124</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg) {
+<a class="jxr_linenumber" name="L125" href="#L125">125</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L126" href="#L126">126</a> 
-<a class="jxr_linenumber" name="L127" href="#L127">127</a> 	@Override
-<a class="jxr_linenumber" name="L128" href="#L128">128</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L130" href="#L130">130</a> 
-<a class="jxr_linenumber" name="L131" href="#L131">131</a> 	}
-<a class="jxr_linenumber" name="L132" href="#L132">132</a> 
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> 	@Override
-<a class="jxr_linenumber" name="L134" href="#L134">134</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Marker marker, String msg, Throwable t) {
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> 
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> 	}
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> 
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> 	@Override
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg) {
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L142" href="#L142">142</a> 
-<a class="jxr_linenumber" name="L143" href="#L143">143</a> 	}
-<a class="jxr_linenumber" name="L144" href="#L144">144</a> 
-<a class="jxr_linenumber" name="L145" href="#L145">145</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L146" href="#L146">146</a> <em class="jxr_javadoccomment">	 * Logs a debug message with a long argument.</em>
-<a class="jxr_linenumber" name="L147" href="#L147">147</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L148" href="#L148">148</a> <em class="jxr_javadoccomment">	 * @param msg The message template with "{}" placeholder.</em>
-<a class="jxr_linenumber" name="L149" href="#L149">149</a> <em class="jxr_javadoccomment">	 * @param arg The long argument to substitute into the message.</em>
-<a class="jxr_linenumber" name="L150" href="#L150">150</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L151" href="#L151">151</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg, <strong class="jxr_keyword">long</strong> arg) {
-<a class="jxr_linenumber" name="L152" href="#L152">152</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
-<a class="jxr_linenumber" name="L153" href="#L153">153</a> 			log(FINE, format(msg, arg), <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L154" href="#L154">154</a> 	}
+<a class="jxr_linenumber" name="L127" href="#L127">127</a> 	}
+<a class="jxr_linenumber" name="L128" href="#L128">128</a> 
+<a class="jxr_linenumber" name="L129" href="#L129">129</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L130" href="#L130">130</a> <em class="jxr_javadoccomment">	 * Logs a debug message with a long argument.</em>
+<a class="jxr_linenumber" name="L131" href="#L131">131</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L132" href="#L132">132</a> <em class="jxr_javadoccomment">	 * @param msg The message template with "{}" placeholder.</em>
+<a class="jxr_linenumber" name="L133" href="#L133">133</a> <em class="jxr_javadoccomment">	 * @param arg The long argument to substitute into the message.</em>
+<a class="jxr_linenumber" name="L134" href="#L134">134</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg, <strong class="jxr_keyword">long</strong> arg) {
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
+<a class="jxr_linenumber" name="L137" href="#L137">137</a> 			log(FINE, format(msg, arg), <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L138" href="#L138">138</a> 	}
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> 
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> 	@Override
+<a class="jxr_linenumber" name="L141" href="#L141">141</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg, Object...args) {
+<a class="jxr_linenumber" name="L142" href="#L142">142</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
+<a class="jxr_linenumber" name="L143" href="#L143">143</a> 			log(FINE, format(msg, args), <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L144" href="#L144">144</a> 	}
+<a class="jxr_linenumber" name="L145" href="#L145">145</a> 
+<a class="jxr_linenumber" name="L146" href="#L146">146</a> 	@Override
+<a class="jxr_linenumber" name="L147" href="#L147">147</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String format, Object arg) {
+<a class="jxr_linenumber" name="L148" href="#L148">148</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<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> 	@Override
+<a class="jxr_linenumber" name="L153" href="#L153">153</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String format, Object arg1, Object arg2) {
+<a class="jxr_linenumber" name="L154" href="#L154">154</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L155" href="#L155">155</a> 
-<a class="jxr_linenumber" name="L156" href="#L156">156</a> 	@Override
-<a class="jxr_linenumber" name="L157" href="#L157">157</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg, Object...args) {
-<a class="jxr_linenumber" name="L158" href="#L158">158</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
-<a class="jxr_linenumber" name="L159" href="#L159">159</a> 			log(FINE, format(msg, args), <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L160" href="#L160">160</a> 	}
-<a class="jxr_linenumber" name="L161" href="#L161">161</a> 
-<a class="jxr_linenumber" name="L162" href="#L162">162</a> 	@Override
-<a class="jxr_linenumber" name="L163" href="#L163">163</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String format, Object arg) {
-<a class="jxr_linenumber" name="L164" href="#L164">164</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L165" href="#L165">165</a> 
-<a class="jxr_linenumber" name="L166" href="#L166">166</a> 	}
-<a class="jxr_linenumber" name="L167" href="#L167">167</a> 
-<a class="jxr_linenumber" name="L168" href="#L168">168</a> 	@Override
-<a class="jxr_linenumber" name="L169" href="#L169">169</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L170" href="#L170">170</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L171" href="#L171">171</a> 
+<a class="jxr_linenumber" name="L156" href="#L156">156</a> 	}
+<a class="jxr_linenumber" name="L157" href="#L157">157</a> 
+<a class="jxr_linenumber" name="L158" href="#L158">158</a> 	@Override
+<a class="jxr_linenumber" name="L159" href="#L159">159</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg, Throwable thrown) {
+<a class="jxr_linenumber" name="L160" href="#L160">160</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
+<a class="jxr_linenumber" name="L161" href="#L161">161</a> 			log(FINE, msg, thrown);
+<a class="jxr_linenumber" name="L162" href="#L162">162</a> 	}
+<a class="jxr_linenumber" name="L163" href="#L163">163</a> 
+<a class="jxr_linenumber" name="L164" href="#L164">164</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L165" href="#L165">165</a> <em class="jxr_javadoccomment">	 * Logs a debug message with only a throwable.</em>
+<a class="jxr_linenumber" name="L166" href="#L166">166</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L167" href="#L167">167</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log.</em>
+<a class="jxr_linenumber" name="L168" href="#L168">168</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L169" href="#L169">169</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Throwable thrown) {
+<a class="jxr_linenumber" name="L170" href="#L170">170</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
+<a class="jxr_linenumber" name="L171" href="#L171">171</a> 			log(FINE, <span class="jxr_string">""</span>, thrown);
 <a class="jxr_linenumber" name="L172" href="#L172">172</a> 	}
 <a class="jxr_linenumber" name="L173" href="#L173">173</a> 
 <a class="jxr_linenumber" name="L174" href="#L174">174</a> 	@Override
-<a class="jxr_linenumber" name="L175" href="#L175">175</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(String msg, Throwable thrown) {
-<a class="jxr_linenumber" name="L176" href="#L176">176</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
-<a class="jxr_linenumber" name="L177" href="#L177">177</a> 			log(FINE, msg, thrown);
-<a class="jxr_linenumber" name="L178" href="#L178">178</a> 	}
-<a class="jxr_linenumber" name="L179" href="#L179">179</a> 
-<a class="jxr_linenumber" name="L180" href="#L180">180</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L181" href="#L181">181</a> <em class="jxr_javadoccomment">	 * Logs a debug message with only a throwable.</em>
-<a class="jxr_linenumber" name="L182" href="#L182">182</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L183" href="#L183">183</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log.</em>
-<a class="jxr_linenumber" name="L184" href="#L184">184</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L185" href="#L185">185</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> debug(Throwable thrown) {
-<a class="jxr_linenumber" name="L186" href="#L186">186</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINE))
-<a class="jxr_linenumber" name="L187" href="#L187">187</a> 			log(FINE, <span class="jxr_string">""</span>, thrown);
-<a class="jxr_linenumber" name="L188" href="#L188">188</a> 	}
-<a class="jxr_linenumber" name="L189" href="#L189">189</a> 
-<a class="jxr_linenumber" name="L190" href="#L190">190</a> 	@Override
-<a class="jxr_linenumber" name="L191" href="#L191">191</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String msg) {
-<a class="jxr_linenumber" name="L192" href="#L192">192</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L193" href="#L193">193</a> 	}
-<a class="jxr_linenumber" name="L194" href="#L194">194</a> 
-<a class="jxr_linenumber" name="L195" href="#L195">195</a> 	@Override
-<a class="jxr_linenumber" name="L196" href="#L196">196</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String format, Object arg) {
-<a class="jxr_linenumber" name="L197" href="#L197">197</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L198" href="#L198">198</a> 	}
-<a class="jxr_linenumber" name="L199" href="#L199">199</a> 
-<a class="jxr_linenumber" name="L200" href="#L200">200</a> 	@Override
-<a class="jxr_linenumber" name="L201" href="#L201">201</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String format, Object...arguments) {
-<a class="jxr_linenumber" name="L202" href="#L202">202</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L203" href="#L203">203</a> 	}
-<a class="jxr_linenumber" name="L204" href="#L204">204</a> 
-<a class="jxr_linenumber" name="L205" href="#L205">205</a> 	@Override
-<a class="jxr_linenumber" name="L206" href="#L206">206</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L207" href="#L207">207</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L208" href="#L208">208</a> 	}
-<a class="jxr_linenumber" name="L209" href="#L209">209</a> 
-<a class="jxr_linenumber" name="L210" href="#L210">210</a> 	@Override
-<a class="jxr_linenumber" name="L211" href="#L211">211</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String msg, Throwable t) {
-<a class="jxr_linenumber" name="L212" href="#L212">212</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L213" href="#L213">213</a> 	}
-<a class="jxr_linenumber" name="L214" href="#L214">214</a> 
-<a class="jxr_linenumber" name="L215" href="#L215">215</a> 	@Override
-<a class="jxr_linenumber" name="L216" href="#L216">216</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String msg) {
-<a class="jxr_linenumber" name="L217" href="#L217">217</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L218" href="#L218">218</a> 	}
-<a class="jxr_linenumber" name="L219" href="#L219">219</a> 
-<a class="jxr_linenumber" name="L220" href="#L220">220</a> 	@Override
-<a class="jxr_linenumber" name="L221" href="#L221">221</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String format, Object arg) {
-<a class="jxr_linenumber" name="L222" href="#L222">222</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L223" href="#L223">223</a> 	}
-<a class="jxr_linenumber" name="L224" href="#L224">224</a> 
-<a class="jxr_linenumber" name="L225" href="#L225">225</a> 	@Override
-<a class="jxr_linenumber" name="L226" href="#L226">226</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String format, Object...arguments) {
-<a class="jxr_linenumber" name="L227" href="#L227">227</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L228" href="#L228">228</a> 	}
-<a class="jxr_linenumber" name="L229" href="#L229">229</a> 
-<a class="jxr_linenumber" name="L230" href="#L230">230</a> 	@Override
-<a class="jxr_linenumber" name="L231" href="#L231">231</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L232" href="#L232">232</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L233" href="#L233">233</a> 	}
-<a class="jxr_linenumber" name="L234" href="#L234">234</a> 
-<a class="jxr_linenumber" name="L235" href="#L235">235</a> 	@Override
-<a class="jxr_linenumber" name="L236" href="#L236">236</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String msg, Throwable t) {
-<a class="jxr_linenumber" name="L237" href="#L237">237</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L238" href="#L238">238</a> 	}
-<a class="jxr_linenumber" name="L239" href="#L239">239</a> 
-<a class="jxr_linenumber" name="L240" href="#L240">240</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L241" href="#L241">241</a> <em class="jxr_javadoccomment">	 * Creates a child logger with the specified name.</em>
-<a class="jxr_linenumber" name="L242" href="#L242">242</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L243" href="#L243">243</a> <em class="jxr_javadoccomment">	 * @param name The logger name.</em>
-<a class="jxr_linenumber" name="L244" href="#L244">244</a> <em class="jxr_javadoccomment">	 * @return A new JettyLogger instance for the specified name.</em>
-<a class="jxr_linenumber" name="L245" href="#L245">245</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L246" href="#L246">246</a> 	<strong class="jxr_keyword">public</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a> getLogger(String name) {
-<a class="jxr_linenumber" name="L247" href="#L247">247</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a>(name);
-<a class="jxr_linenumber" name="L248" href="#L248">248</a> 	}
-<a class="jxr_linenumber" name="L249" href="#L249">249</a> 
-<a class="jxr_linenumber" name="L250" href="#L250">250</a> 	@Override
-<a class="jxr_linenumber" name="L251" href="#L251">251</a> 	<strong class="jxr_keyword">public</strong> String getName() { <strong class="jxr_keyword">return</strong> logger.getName(); }
-<a class="jxr_linenumber" name="L252" href="#L252">252</a> 
-<a class="jxr_linenumber" name="L253" href="#L253">253</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L254" href="#L254">254</a> <em class="jxr_javadoccomment">	 * Logs an ignored exception at the FINEST level.</em>
-<a class="jxr_linenumber" name="L255" href="#L255">255</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L256" href="#L256">256</a> <em class="jxr_javadoccomment">	 * @param ignored The exception to log as ignored.</em>
-<a class="jxr_linenumber" name="L257" href="#L257">257</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L258" href="#L258">258</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> ignore(Throwable ignored) {
-<a class="jxr_linenumber" name="L259" href="#L259">259</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINEST))
-<a class="jxr_linenumber" name="L260" href="#L260">260</a> 			log(FINEST, <span class="jxr_string">"IGNORED EXCEPTION "</span>, ignored);
+<a class="jxr_linenumber" name="L175" href="#L175">175</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String msg) {
+<a class="jxr_linenumber" name="L176" href="#L176">176</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L177" href="#L177">177</a> 	}
+<a class="jxr_linenumber" name="L178" href="#L178">178</a> 
+<a class="jxr_linenumber" name="L179" href="#L179">179</a> 	@Override
+<a class="jxr_linenumber" name="L180" href="#L180">180</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String format, Object arg) {
+<a class="jxr_linenumber" name="L181" href="#L181">181</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L182" href="#L182">182</a> 	}
+<a class="jxr_linenumber" name="L183" href="#L183">183</a> 
+<a class="jxr_linenumber" name="L184" href="#L184">184</a> 	@Override
+<a class="jxr_linenumber" name="L185" href="#L185">185</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String format, Object...arguments) {
+<a class="jxr_linenumber" name="L186" href="#L186">186</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L187" href="#L187">187</a> 	}
+<a class="jxr_linenumber" name="L188" href="#L188">188</a> 
+<a class="jxr_linenumber" name="L189" href="#L189">189</a> 	@Override
+<a class="jxr_linenumber" name="L190" href="#L190">190</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String format, Object arg1, Object arg2) {
+<a class="jxr_linenumber" name="L191" href="#L191">191</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L192" href="#L192">192</a> 	}
+<a class="jxr_linenumber" name="L193" href="#L193">193</a> 
+<a class="jxr_linenumber" name="L194" href="#L194">194</a> 	@Override
+<a class="jxr_linenumber" name="L195" href="#L195">195</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(Marker marker, String msg, Throwable t) {
+<a class="jxr_linenumber" name="L196" href="#L196">196</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L197" href="#L197">197</a> 	}
+<a class="jxr_linenumber" name="L198" href="#L198">198</a> 
+<a class="jxr_linenumber" name="L199" href="#L199">199</a> 	@Override
+<a class="jxr_linenumber" name="L200" href="#L200">200</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String msg) {
+<a class="jxr_linenumber" name="L201" href="#L201">201</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L202" href="#L202">202</a> 	}
+<a class="jxr_linenumber" name="L203" href="#L203">203</a> 
+<a class="jxr_linenumber" name="L204" href="#L204">204</a> 	@Override
+<a class="jxr_linenumber" name="L205" href="#L205">205</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String format, Object arg) {
+<a class="jxr_linenumber" name="L206" href="#L206">206</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L207" href="#L207">207</a> 	}
+<a class="jxr_linenumber" name="L208" href="#L208">208</a> 
+<a class="jxr_linenumber" name="L209" href="#L209">209</a> 	@Override
+<a class="jxr_linenumber" name="L210" href="#L210">210</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String format, Object...arguments) {
+<a class="jxr_linenumber" name="L211" href="#L211">211</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L212" href="#L212">212</a> 	}
+<a class="jxr_linenumber" name="L213" href="#L213">213</a> 
+<a class="jxr_linenumber" name="L214" href="#L214">214</a> 	@Override
+<a class="jxr_linenumber" name="L215" href="#L215">215</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String format, Object arg1, Object arg2) {
+<a class="jxr_linenumber" name="L216" href="#L216">216</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L217" href="#L217">217</a> 	}
+<a class="jxr_linenumber" name="L218" href="#L218">218</a> 
+<a class="jxr_linenumber" name="L219" href="#L219">219</a> 	@Override
+<a class="jxr_linenumber" name="L220" href="#L220">220</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> error(String msg, Throwable t) {
+<a class="jxr_linenumber" name="L221" href="#L221">221</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L222" href="#L222">222</a> 	}
+<a class="jxr_linenumber" name="L223" href="#L223">223</a> 
+<a class="jxr_linenumber" name="L224" href="#L224">224</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L225" href="#L225">225</a> <em class="jxr_javadoccomment">	 * Creates a child logger with the specified name.</em>
+<a class="jxr_linenumber" name="L226" href="#L226">226</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L227" href="#L227">227</a> <em class="jxr_javadoccomment">	 * @param name The logger name.</em>
+<a class="jxr_linenumber" name="L228" href="#L228">228</a> <em class="jxr_javadoccomment">	 * @return A new JettyLogger instance for the specified name.</em>
+<a class="jxr_linenumber" name="L229" href="#L229">229</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L230" href="#L230">230</a> 	<strong class="jxr_keyword">public</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a> getLogger(String name) {
+<a class="jxr_linenumber" name="L231" href="#L231">231</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="JettyLogger" href="../../../../../org/apache/juneau/microservice/jetty/JettyLogger.html#JettyLogger">JettyLogger</a>(name);
+<a class="jxr_linenumber" name="L232" href="#L232">232</a> 	}
+<a class="jxr_linenumber" name="L233" href="#L233">233</a> 
+<a class="jxr_linenumber" name="L234" href="#L234">234</a> 	@Override
+<a class="jxr_linenumber" name="L235" href="#L235">235</a> 	<strong class="jxr_keyword">public</strong> String getName() { <strong class="jxr_keyword">return</strong> logger.getName(); }
+<a class="jxr_linenumber" name="L236" href="#L236">236</a> 
+<a class="jxr_linenumber" name="L237" href="#L237">237</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L238" href="#L238">238</a> <em class="jxr_javadoccomment">	 * Logs an ignored exception at the FINEST level.</em>
+<a class="jxr_linenumber" name="L239" href="#L239">239</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L240" href="#L240">240</a> <em class="jxr_javadoccomment">	 * @param ignored The exception to log as ignored.</em>
+<a class="jxr_linenumber" name="L241" href="#L241">241</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L242" href="#L242">242</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> ignore(Throwable ignored) {
+<a class="jxr_linenumber" name="L243" href="#L243">243</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(FINEST))
+<a class="jxr_linenumber" name="L244" href="#L244">244</a> 			log(FINEST, <span class="jxr_string">"IGNORED EXCEPTION "</span>, ignored);
+<a class="jxr_linenumber" name="L245" href="#L245">245</a> 	}
+<a class="jxr_linenumber" name="L246" href="#L246">246</a> 
+<a class="jxr_linenumber" name="L247" href="#L247">247</a> 	@Override
+<a class="jxr_linenumber" name="L248" href="#L248">248</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String msg) {
+<a class="jxr_linenumber" name="L249" href="#L249">249</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L250" href="#L250">250</a> 	}
+<a class="jxr_linenumber" name="L251" href="#L251">251</a> 
+<a class="jxr_linenumber" name="L252" href="#L252">252</a> 	@Override
+<a class="jxr_linenumber" name="L253" href="#L253">253</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String format, Object arg) {
+<a class="jxr_linenumber" name="L254" href="#L254">254</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L255" href="#L255">255</a> 
+<a class="jxr_linenumber" name="L256" href="#L256">256</a> 	}
+<a class="jxr_linenumber" name="L257" href="#L257">257</a> 
+<a class="jxr_linenumber" name="L258" href="#L258">258</a> 	@Override
+<a class="jxr_linenumber" name="L259" href="#L259">259</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String format, Object...arguments) {
+<a class="jxr_linenumber" name="L260" href="#L260">260</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L261" href="#L261">261</a> 	}
 <a class="jxr_linenumber" name="L262" href="#L262">262</a> 
 <a class="jxr_linenumber" name="L263" href="#L263">263</a> 	@Override
-<a class="jxr_linenumber" name="L264" href="#L264">264</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String msg) {
+<a class="jxr_linenumber" name="L264" href="#L264">264</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String format, Object arg1, Object arg2) {
 <a class="jxr_linenumber" name="L265" href="#L265">265</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L266" href="#L266">266</a> 	}
 <a class="jxr_linenumber" name="L267" href="#L267">267</a> 
 <a class="jxr_linenumber" name="L268" href="#L268">268</a> 	@Override
-<a class="jxr_linenumber" name="L269" href="#L269">269</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String format, Object arg) {
+<a class="jxr_linenumber" name="L269" href="#L269">269</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String msg, Throwable t) {
 <a class="jxr_linenumber" name="L270" href="#L270">270</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L271" href="#L271">271</a> 
 <a class="jxr_linenumber" name="L272" href="#L272">272</a> 	}
 <a class="jxr_linenumber" name="L273" href="#L273">273</a> 
 <a class="jxr_linenumber" name="L274" href="#L274">274</a> 	@Override
-<a class="jxr_linenumber" name="L275" href="#L275">275</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String format, Object...arguments) {
+<a class="jxr_linenumber" name="L275" href="#L275">275</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String msg) {
 <a class="jxr_linenumber" name="L276" href="#L276">276</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L277" href="#L277">277</a> 	}
 <a class="jxr_linenumber" name="L278" href="#L278">278</a> 
 <a class="jxr_linenumber" name="L279" href="#L279">279</a> 	@Override
-<a class="jxr_linenumber" name="L280" href="#L280">280</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L281" href="#L281">281</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<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> 	@Override
-<a class="jxr_linenumber" name="L285" href="#L285">285</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Marker marker, String msg, Throwable t) {
-<a class="jxr_linenumber" name="L286" href="#L286">286</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L287" href="#L287">287</a> 
+<a class="jxr_linenumber" name="L280" href="#L280">280</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String msg, Object...args) {
+<a class="jxr_linenumber" name="L281" href="#L281">281</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(INFO))
+<a class="jxr_linenumber" name="L282" href="#L282">282</a> 			log(INFO, format(msg, args), <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L283" href="#L283">283</a> 	}
+<a class="jxr_linenumber" name="L284" href="#L284">284</a> 
+<a class="jxr_linenumber" name="L285" href="#L285">285</a> 	@Override
+<a class="jxr_linenumber" name="L286" href="#L286">286</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String format, Object arg) {
+<a class="jxr_linenumber" name="L287" href="#L287">287</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L288" href="#L288">288</a> 	}
 <a class="jxr_linenumber" name="L289" href="#L289">289</a> 
 <a class="jxr_linenumber" name="L290" href="#L290">290</a> 	@Override
-<a class="jxr_linenumber" name="L291" href="#L291">291</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String msg) {
+<a class="jxr_linenumber" name="L291" href="#L291">291</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String format, Object arg1, Object arg2) {
 <a class="jxr_linenumber" name="L292" href="#L292">292</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L293" href="#L293">293</a> 	}
 <a class="jxr_linenumber" name="L294" href="#L294">294</a> 
 <a class="jxr_linenumber" name="L295" href="#L295">295</a> 	@Override
-<a class="jxr_linenumber" name="L296" href="#L296">296</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String msg, Object...args) {
+<a class="jxr_linenumber" name="L296" href="#L296">296</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String msg, Throwable thrown) {
 <a class="jxr_linenumber" name="L297" href="#L297">297</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(INFO))
-<a class="jxr_linenumber" name="L298" href="#L298">298</a> 			log(INFO, format(msg, args), <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L298" href="#L298">298</a> 			log(INFO, msg, thrown);
 <a class="jxr_linenumber" name="L299" href="#L299">299</a> 	}
 <a class="jxr_linenumber" name="L300" href="#L300">300</a> 
-<a class="jxr_linenumber" name="L301" href="#L301">301</a> 	@Override
-<a class="jxr_linenumber" name="L302" href="#L302">302</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String format, Object arg) {
-<a class="jxr_linenumber" name="L303" href="#L303">303</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L304" href="#L304">304</a> 	}
-<a class="jxr_linenumber" name="L305" href="#L305">305</a> 
-<a class="jxr_linenumber" name="L306" href="#L306">306</a> 	@Override
-<a class="jxr_linenumber" name="L307" href="#L307">307</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L308" href="#L308">308</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L301" href="#L301">301</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L302" href="#L302">302</a> <em class="jxr_javadoccomment">	 * Logs an info message with only a throwable.</em>
+<a class="jxr_linenumber" name="L303" href="#L303">303</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L304" href="#L304">304</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log.</em>
+<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> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Throwable thrown) {
+<a class="jxr_linenumber" name="L307" href="#L307">307</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(INFO))
+<a class="jxr_linenumber" name="L308" href="#L308">308</a> 			log(INFO, <span class="jxr_string">""</span>, thrown);
 <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> 	@Override
-<a class="jxr_linenumber" name="L312" href="#L312">312</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(String msg, Throwable thrown) {
-<a class="jxr_linenumber" name="L313" href="#L313">313</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(INFO))
-<a class="jxr_linenumber" name="L314" href="#L314">314</a> 			log(INFO, msg, thrown);
-<a class="jxr_linenumber" name="L315" href="#L315">315</a> 	}
-<a class="jxr_linenumber" name="L316" href="#L316">316</a> 
-<a class="jxr_linenumber" name="L317" href="#L317">317</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L318" href="#L318">318</a> <em class="jxr_javadoccomment">	 * Logs an info message with only a throwable.</em>
-<a class="jxr_linenumber" name="L319" href="#L319">319</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L320" href="#L320">320</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log.</em>
-<a class="jxr_linenumber" name="L321" href="#L321">321</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L322" href="#L322">322</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> info(Throwable thrown) {
-<a class="jxr_linenumber" name="L323" href="#L323">323</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(INFO))
-<a class="jxr_linenumber" name="L324" href="#L324">324</a> 			log(INFO, <span class="jxr_string">""</span>, thrown);
-<a class="jxr_linenumber" name="L325" href="#L325">325</a> 	}
-<a class="jxr_linenumber" name="L326" href="#L326">326</a> 
-<a class="jxr_linenumber" name="L327" href="#L327">327</a> 	@Override
-<a class="jxr_linenumber" name="L328" href="#L328">328</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isDebugEnabled() { <strong class="jxr_keyword">return</strong> isLoggable(FINE); }
-<a class="jxr_linenumber" name="L329" href="#L329">329</a> 
-<a class="jxr_linenumber" name="L330" href="#L330">330</a> 	@Override
-<a class="jxr_linenumber" name="L331" href="#L331">331</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isDebugEnabled(Marker marker) {
-<a class="jxr_linenumber" name="L332" href="#L332">332</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L333" href="#L333">333</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L334" href="#L334">334</a> 	}
-<a class="jxr_linenumber" name="L335" href="#L335">335</a> 
-<a class="jxr_linenumber" name="L336" href="#L336">336</a> 	@Override
-<a class="jxr_linenumber" name="L337" href="#L337">337</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isErrorEnabled() {
-<a class="jxr_linenumber" name="L338" href="#L338">338</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L339" href="#L339">339</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L340" href="#L340">340</a> 	}
-<a class="jxr_linenumber" name="L341" href="#L341">341</a> 
-<a class="jxr_linenumber" name="L342" href="#L342">342</a> 	@Override
-<a class="jxr_linenumber" name="L343" href="#L343">343</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isErrorEnabled(Marker marker) {
-<a class="jxr_linenumber" name="L344" href="#L344">344</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L345" href="#L345">345</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L346" href="#L346">346</a> 	}
-<a class="jxr_linenumber" name="L347" href="#L347">347</a> 
-<a class="jxr_linenumber" name="L348" href="#L348">348</a> 	@Override
-<a class="jxr_linenumber" name="L349" href="#L349">349</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isInfoEnabled() {
-<a class="jxr_linenumber" name="L350" href="#L350">350</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L351" href="#L351">351</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L352" href="#L352">352</a> 	}
-<a class="jxr_linenumber" name="L353" href="#L353">353</a> 
-<a class="jxr_linenumber" name="L354" href="#L354">354</a> 	@Override
-<a class="jxr_linenumber" name="L355" href="#L355">355</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isInfoEnabled(Marker marker) {
-<a class="jxr_linenumber" name="L356" href="#L356">356</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L357" href="#L357">357</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L358" href="#L358">358</a> 	}
-<a class="jxr_linenumber" name="L359" href="#L359">359</a> 
-<a class="jxr_linenumber" name="L360" href="#L360">360</a> 	@Override
-<a class="jxr_linenumber" name="L361" href="#L361">361</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isTraceEnabled() {
-<a class="jxr_linenumber" name="L362" href="#L362">362</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L363" href="#L363">363</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L364" href="#L364">364</a> 	}
-<a class="jxr_linenumber" name="L365" href="#L365">365</a> 
-<a class="jxr_linenumber" name="L366" href="#L366">366</a> 	@Override
-<a class="jxr_linenumber" name="L367" href="#L367">367</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isTraceEnabled(Marker marker) {
-<a class="jxr_linenumber" name="L368" href="#L368">368</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L369" href="#L369">369</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L370" href="#L370">370</a> 	}
-<a class="jxr_linenumber" name="L371" href="#L371">371</a> 
-<a class="jxr_linenumber" name="L372" href="#L372">372</a> 	@Override
-<a class="jxr_linenumber" name="L373" href="#L373">373</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isWarnEnabled() {
-<a class="jxr_linenumber" name="L374" href="#L374">374</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L375" href="#L375">375</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L376" href="#L376">376</a> 	}
-<a class="jxr_linenumber" name="L377" href="#L377">377</a> 
-<a class="jxr_linenumber" name="L378" href="#L378">378</a> 	@Override
-<a class="jxr_linenumber" name="L379" href="#L379">379</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isWarnEnabled(Marker marker) {
-<a class="jxr_linenumber" name="L380" href="#L380">380</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L381" href="#L381">381</a> 		<strong class="jxr_keyword">return</strong> false;
-<a class="jxr_linenumber" name="L382" href="#L382">382</a> 	}
-<a class="jxr_linenumber" name="L383" href="#L383">383</a> 
-<a class="jxr_linenumber" name="L384" href="#L384">384</a> 	@Override
-<a class="jxr_linenumber" name="L385" href="#L385">385</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Marker marker, String fqcn, <strong class="jxr_keyword">int</strong> level, String message, Object[] argArray, Throwable t) {
-<a class="jxr_linenumber" name="L386" href="#L386">386</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L387" href="#L387">387</a> 	}
-<a class="jxr_linenumber" name="L388" href="#L388">388</a> 
-<a class="jxr_linenumber" name="L389" href="#L389">389</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L390" href="#L390">390</a> <em class="jxr_javadoccomment">	 * Enables or disables debug logging.</em>
-<a class="jxr_linenumber" name="L391" href="#L391">391</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L392" href="#L392">392</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L393" href="#L393">393</a> <em class="jxr_javadoccomment">	 * When enabled, sets the log level to FINE. When disabled, restores the previously configured log level.</em>
-<a class="jxr_linenumber" name="L394" href="#L394">394</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L395" href="#L395">395</a> <em class="jxr_javadoccomment">	 * @param enabled &lt;jk&gt;true&lt;/jk&gt; to enable debug logging, &lt;jk&gt;false&lt;/jk&gt; to disable.</em>
-<a class="jxr_linenumber" name="L396" href="#L396">396</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L397" href="#L397">397</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setDebugEnabled(<strong class="jxr_keyword">boolean</strong> enabled) {
-<a class="jxr_linenumber" name="L398" href="#L398">398</a> 		<strong class="jxr_keyword">if</strong> (enabled) {
-<a class="jxr_linenumber" name="L399" href="#L399">399</a> 			configuredLevel = logger.getLevel();
-<a class="jxr_linenumber" name="L400" href="#L400">400</a> 			logger.setLevel(FINE);
-<a class="jxr_linenumber" name="L401" href="#L401">401</a> 		} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L402" href="#L402">402</a> 			logger.setLevel(configuredLevel);
-<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="L312" href="#L312">312</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isDebugEnabled() { <strong class="jxr_keyword">return</strong> isLoggable(FINE); }
+<a class="jxr_linenumber" name="L313" href="#L313">313</a> 
+<a class="jxr_linenumber" name="L314" href="#L314">314</a> 	@Override
+<a class="jxr_linenumber" name="L315" href="#L315">315</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isDebugEnabled(Marker marker) {
+<a class="jxr_linenumber" name="L316" href="#L316">316</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L317" href="#L317">317</a> 		<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L318" href="#L318">318</a> 	}
+<a class="jxr_linenumber" name="L319" href="#L319">319</a> 
+<a class="jxr_linenumber" name="L320" href="#L320">320</a> 	@Override
+<a class="jxr_linenumber" name="L321" href="#L321">321</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isErrorEnabled() {
+<a class="jxr_linenumber" name="L322" href="#L322">322</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L323" href="#L323">323</a> 		<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L324" href="#L324">324</a> 	}
+<a class="jxr_linenumber" name="L325" href="#L325">325</a> 
+<a class="jxr_linenumber" name="L326" href="#L326">326</a> 	@Override
+<a class="jxr_linenumber" name="L327" href="#L327">327</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isErrorEnabled(Marker marker) {
+<a class="jxr_linenumber" name="L328" href="#L328">328</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L329" href="#L329">329</a> 		<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L330" href="#L330">330</a> 	}
+<a class="jxr_linenumber" name="L331" href="#L331">331</a> 
+<a class="jxr_linenumber" name="L332" href="#L332">332</a> 	@Override
+<a class="jxr_linenumber" name="L333" href="#L333">333</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isInfoEnabled() {
+<a class="jxr_linenumber" name="L334" href="#L334">334</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L335" href="#L335">335</a> 		<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L336" href="#L336">336</a> 	}
+<a class="jxr_linenumber" name="L337" href="#L337">337</a> 
+<a class="jxr_linenumber" name="L338" href="#L338">338</a> 	@Override
+<a class="jxr_linenumber" name="L339" href="#L339">339</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isInfoEnabled(Marker marker) {
+<a class="jxr_linenumber" name="L340" href="#L340">340</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L341" href="#L341">341</a> 		<strong class="jxr_keyword">return</strong> false;
+<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> 	@Override
+<a class="jxr_linenumber" name="L345" href="#L345">345</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isTraceEnabled() {
+<a class="jxr_linenumber" name="L346" href="#L346">346</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L347" href="#L347">347</a> 		<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L348" href="#L348">348</a> 	}
+<a class="jxr_linenumber" name="L349" href="#L349">349</a> 
+<a class="jxr_linenumber" name="L350" href="#L350">350</a> 	@Override
+<a class="jxr_linenumber" name="L351" href="#L351">351</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isTraceEnabled(Marker marker) {
+<a class="jxr_linenumber" name="L352" href="#L352">352</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L353" href="#L353">353</a> 		<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L354" href="#L354">354</a> 	}
+<a class="jxr_linenumber" name="L355" href="#L355">355</a> 
+<a class="jxr_linenumber" name="L356" href="#L356">356</a> 	@Override
+<a class="jxr_linenumber" name="L357" href="#L357">357</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isWarnEnabled() {
+<a class="jxr_linenumber" name="L358" href="#L358">358</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L359" href="#L359">359</a> 		<strong class="jxr_keyword">return</strong> false;
+<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> 	@Override
+<a class="jxr_linenumber" name="L363" href="#L363">363</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">boolean</strong> isWarnEnabled(Marker marker) {
+<a class="jxr_linenumber" name="L364" href="#L364">364</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L365" href="#L365">365</a> 		<strong class="jxr_keyword">return</strong> false;
+<a class="jxr_linenumber" name="L366" href="#L366">366</a> 	}
+<a class="jxr_linenumber" name="L367" href="#L367">367</a> 
+<a class="jxr_linenumber" name="L368" href="#L368">368</a> 	@Override
+<a class="jxr_linenumber" name="L369" href="#L369">369</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Marker marker, String fqcn, <strong class="jxr_keyword">int</strong> level, String message, Object[] argArray, Throwable t) {
+<a class="jxr_linenumber" name="L370" href="#L370">370</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L371" href="#L371">371</a> 	}
+<a class="jxr_linenumber" name="L372" href="#L372">372</a> 
+<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">	 * Enables or disables debug logging.</em>
+<a class="jxr_linenumber" name="L375" href="#L375">375</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L376" href="#L376">376</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L377" href="#L377">377</a> <em class="jxr_javadoccomment">	 * When enabled, sets the log level to FINE. When disabled, restores the previously configured log level.</em>
+<a class="jxr_linenumber" name="L378" href="#L378">378</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L379" href="#L379">379</a> <em class="jxr_javadoccomment">	 * @param enabled &lt;jk&gt;true&lt;/jk&gt; to enable debug logging, &lt;jk&gt;false&lt;/jk&gt; to disable.</em>
+<a class="jxr_linenumber" name="L380" href="#L380">380</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L381" href="#L381">381</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> setDebugEnabled(<strong class="jxr_keyword">boolean</strong> enabled) {
+<a class="jxr_linenumber" name="L382" href="#L382">382</a> 		<strong class="jxr_keyword">if</strong> (enabled) {
+<a class="jxr_linenumber" name="L383" href="#L383">383</a> 			configuredLevel = logger.getLevel();
+<a class="jxr_linenumber" name="L384" href="#L384">384</a> 			logger.setLevel(FINE);
+<a class="jxr_linenumber" name="L385" href="#L385">385</a> 		} <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L386" href="#L386">386</a> 			logger.setLevel(configuredLevel);
+<a class="jxr_linenumber" name="L387" href="#L387">387</a> 		}
+<a class="jxr_linenumber" name="L388" href="#L388">388</a> 	}
+<a class="jxr_linenumber" name="L389" href="#L389">389</a> 
+<a class="jxr_linenumber" name="L390" href="#L390">390</a> 	@Override
+<a class="jxr_linenumber" name="L391" href="#L391">391</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String msg) {
+<a class="jxr_linenumber" name="L392" href="#L392">392</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L393" href="#L393">393</a> 
+<a class="jxr_linenumber" name="L394" href="#L394">394</a> 	}
+<a class="jxr_linenumber" name="L395" href="#L395">395</a> 
+<a class="jxr_linenumber" name="L396" href="#L396">396</a> 	@Override
+<a class="jxr_linenumber" name="L397" href="#L397">397</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String format, Object arg) {
+<a class="jxr_linenumber" name="L398" href="#L398">398</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L399" href="#L399">399</a> 
+<a class="jxr_linenumber" name="L400" href="#L400">400</a> 	}
+<a class="jxr_linenumber" name="L401" href="#L401">401</a> 
+<a class="jxr_linenumber" name="L402" href="#L402">402</a> 	@Override
+<a class="jxr_linenumber" name="L403" href="#L403">403</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String format, Object...argArray) {
+<a class="jxr_linenumber" name="L404" href="#L404">404</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L405" href="#L405">405</a> 
-<a class="jxr_linenumber" name="L406" href="#L406">406</a> 	@Override
-<a class="jxr_linenumber" name="L407" href="#L407">407</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String msg) {
-<a class="jxr_linenumber" name="L408" href="#L408">408</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L409" href="#L409">409</a> 
-<a class="jxr_linenumber" name="L410" href="#L410">410</a> 	}
+<a class="jxr_linenumber" name="L406" href="#L406">406</a> 	}
+<a class="jxr_linenumber" name="L407" href="#L407">407</a> 
+<a class="jxr_linenumber" name="L408" href="#L408">408</a> 	@Override
+<a class="jxr_linenumber" name="L409" href="#L409">409</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String format, Object arg1, Object arg2) {
+<a class="jxr_linenumber" name="L410" href="#L410">410</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L411" href="#L411">411</a> 
-<a class="jxr_linenumber" name="L412" href="#L412">412</a> 	@Override
-<a class="jxr_linenumber" name="L413" href="#L413">413</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String format, Object arg) {
-<a class="jxr_linenumber" name="L414" href="#L414">414</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L415" href="#L415">415</a> 
-<a class="jxr_linenumber" name="L416" href="#L416">416</a> 	}
+<a class="jxr_linenumber" name="L412" href="#L412">412</a> 	}
+<a class="jxr_linenumber" name="L413" href="#L413">413</a> 
+<a class="jxr_linenumber" name="L414" href="#L414">414</a> 	@Override
+<a class="jxr_linenumber" name="L415" href="#L415">415</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String msg, Throwable t) {
+<a class="jxr_linenumber" name="L416" href="#L416">416</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L417" href="#L417">417</a> 
-<a class="jxr_linenumber" name="L418" href="#L418">418</a> 	@Override
-<a class="jxr_linenumber" name="L419" href="#L419">419</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String format, Object...argArray) {
-<a class="jxr_linenumber" name="L420" href="#L420">420</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L421" href="#L421">421</a> 
-<a class="jxr_linenumber" name="L422" href="#L422">422</a> 	}
+<a class="jxr_linenumber" name="L418" href="#L418">418</a> 	}
+<a class="jxr_linenumber" name="L419" href="#L419">419</a> 
+<a class="jxr_linenumber" name="L420" href="#L420">420</a> 	@Override
+<a class="jxr_linenumber" name="L421" href="#L421">421</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String msg) {
+<a class="jxr_linenumber" name="L422" href="#L422">422</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L423" href="#L423">423</a> 
-<a class="jxr_linenumber" name="L424" href="#L424">424</a> 	@Override
-<a class="jxr_linenumber" name="L425" href="#L425">425</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L426" href="#L426">426</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L427" href="#L427">427</a> 
-<a class="jxr_linenumber" name="L428" href="#L428">428</a> 	}
+<a class="jxr_linenumber" name="L424" href="#L424">424</a> 	}
+<a class="jxr_linenumber" name="L425" href="#L425">425</a> 
+<a class="jxr_linenumber" name="L426" href="#L426">426</a> 	@Override
+<a class="jxr_linenumber" name="L427" href="#L427">427</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String format, Object arg) {
+<a class="jxr_linenumber" name="L428" href="#L428">428</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L429" href="#L429">429</a> 
-<a class="jxr_linenumber" name="L430" href="#L430">430</a> 	@Override
-<a class="jxr_linenumber" name="L431" href="#L431">431</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(Marker marker, String msg, Throwable t) {
-<a class="jxr_linenumber" name="L432" href="#L432">432</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L433" href="#L433">433</a> 
-<a class="jxr_linenumber" name="L434" href="#L434">434</a> 	}
+<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="L432" href="#L432">432</a> 	@Override
+<a class="jxr_linenumber" name="L433" href="#L433">433</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String format, Object...arguments) {
+<a class="jxr_linenumber" name="L434" href="#L434">434</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L435" href="#L435">435</a> 
-<a class="jxr_linenumber" name="L436" href="#L436">436</a> 	@Override
-<a class="jxr_linenumber" name="L437" href="#L437">437</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String msg) {
-<a class="jxr_linenumber" name="L438" href="#L438">438</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L439" href="#L439">439</a> 
-<a class="jxr_linenumber" name="L440" href="#L440">440</a> 	}
+<a class="jxr_linenumber" name="L436" href="#L436">436</a> 	}
+<a class="jxr_linenumber" name="L437" href="#L437">437</a> 
+<a class="jxr_linenumber" name="L438" href="#L438">438</a> 	@Override
+<a class="jxr_linenumber" name="L439" href="#L439">439</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String format, Object arg1, Object arg2) {
+<a class="jxr_linenumber" name="L440" href="#L440">440</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L441" href="#L441">441</a> 
-<a class="jxr_linenumber" name="L442" href="#L442">442</a> 	@Override
-<a class="jxr_linenumber" name="L443" href="#L443">443</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String format, Object arg) {
-<a class="jxr_linenumber" name="L444" href="#L444">444</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<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="L442" href="#L442">442</a> 	}
+<a class="jxr_linenumber" name="L443" href="#L443">443</a> 
+<a class="jxr_linenumber" name="L444" href="#L444">444</a> 	@Override
+<a class="jxr_linenumber" name="L445" href="#L445">445</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String msg, Throwable t) {
+<a class="jxr_linenumber" name="L446" href="#L446">446</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L447" href="#L447">447</a> 
-<a class="jxr_linenumber" name="L448" href="#L448">448</a> 	@Override
-<a class="jxr_linenumber" name="L449" href="#L449">449</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String format, Object...arguments) {
-<a class="jxr_linenumber" name="L450" href="#L450">450</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L451" href="#L451">451</a> 
-<a class="jxr_linenumber" name="L452" href="#L452">452</a> 	}
-<a class="jxr_linenumber" name="L453" href="#L453">453</a> 
-<a class="jxr_linenumber" name="L454" href="#L454">454</a> 	@Override
-<a class="jxr_linenumber" name="L455" href="#L455">455</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L456" href="#L456">456</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L457" href="#L457">457</a> 
+<a class="jxr_linenumber" name="L448" href="#L448">448</a> 	}
+<a class="jxr_linenumber" name="L449" href="#L449">449</a> 
+<a class="jxr_linenumber" name="L450" href="#L450">450</a> 	@Override
+<a class="jxr_linenumber" name="L451" href="#L451">451</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String msg) {
+<a class="jxr_linenumber" name="L452" href="#L452">452</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L453" href="#L453">453</a> 	}
+<a class="jxr_linenumber" name="L454" href="#L454">454</a> 
+<a class="jxr_linenumber" name="L455" href="#L455">455</a> 	@Override
+<a class="jxr_linenumber" name="L456" href="#L456">456</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String format, Object arg) {
+<a class="jxr_linenumber" name="L457" href="#L457">457</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L458" href="#L458">458</a> 	}
 <a class="jxr_linenumber" name="L459" href="#L459">459</a> 
 <a class="jxr_linenumber" name="L460" href="#L460">460</a> 	@Override
-<a class="jxr_linenumber" name="L461" href="#L461">461</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> trace(String msg, Throwable t) {
+<a class="jxr_linenumber" name="L461" href="#L461">461</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String format, Object...arguments) {
 <a class="jxr_linenumber" name="L462" href="#L462">462</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L463" href="#L463">463</a> 
-<a class="jxr_linenumber" name="L464" href="#L464">464</a> 	}
-<a class="jxr_linenumber" name="L465" href="#L465">465</a> 
-<a class="jxr_linenumber" name="L466" href="#L466">466</a> 	@Override
-<a class="jxr_linenumber" name="L467" href="#L467">467</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String msg) {
-<a class="jxr_linenumber" name="L468" href="#L468">468</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L469" href="#L469">469</a> 	}
-<a class="jxr_linenumber" name="L470" href="#L470">470</a> 
-<a class="jxr_linenumber" name="L471" href="#L471">471</a> 	@Override
-<a class="jxr_linenumber" name="L472" href="#L472">472</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String format, Object arg) {
-<a class="jxr_linenumber" name="L473" href="#L473">473</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L474" href="#L474">474</a> 	}
-<a class="jxr_linenumber" name="L475" href="#L475">475</a> 
-<a class="jxr_linenumber" name="L476" href="#L476">476</a> 	@Override
-<a class="jxr_linenumber" name="L477" href="#L477">477</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String format, Object...arguments) {
-<a class="jxr_linenumber" name="L478" href="#L478">478</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L479" href="#L479">479</a> 	}
-<a class="jxr_linenumber" name="L480" href="#L480">480</a> 
-<a class="jxr_linenumber" name="L481" href="#L481">481</a> 	@Override
-<a class="jxr_linenumber" name="L482" href="#L482">482</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L483" href="#L483">483</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L463" href="#L463">463</a> 	}
+<a class="jxr_linenumber" name="L464" href="#L464">464</a> 
+<a class="jxr_linenumber" name="L465" href="#L465">465</a> 	@Override
+<a class="jxr_linenumber" name="L466" href="#L466">466</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String format, Object arg1, Object arg2) {
+<a class="jxr_linenumber" name="L467" href="#L467">467</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L468" href="#L468">468</a> 	}
+<a class="jxr_linenumber" name="L469" href="#L469">469</a> 
+<a class="jxr_linenumber" name="L470" href="#L470">470</a> 	@Override
+<a class="jxr_linenumber" name="L471" href="#L471">471</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String msg, Throwable t) {
+<a class="jxr_linenumber" name="L472" href="#L472">472</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L473" href="#L473">473</a> 	}
+<a class="jxr_linenumber" name="L474" href="#L474">474</a> 
+<a class="jxr_linenumber" name="L475" href="#L475">475</a> 	@Override
+<a class="jxr_linenumber" name="L476" href="#L476">476</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String msg) {
+<a class="jxr_linenumber" name="L477" href="#L477">477</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
+<a class="jxr_linenumber" name="L478" href="#L478">478</a> 	}
+<a class="jxr_linenumber" name="L479" href="#L479">479</a> 
+<a class="jxr_linenumber" name="L480" href="#L480">480</a> 	@Override
+<a class="jxr_linenumber" name="L481" href="#L481">481</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String msg, Object...args) {
+<a class="jxr_linenumber" name="L482" href="#L482">482</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(WARNING))
+<a class="jxr_linenumber" name="L483" href="#L483">483</a> 			log(WARNING, format(msg, args), <strong class="jxr_keyword">null</strong>);
 <a class="jxr_linenumber" name="L484" href="#L484">484</a> 	}
 <a class="jxr_linenumber" name="L485" href="#L485">485</a> 
 <a class="jxr_linenumber" name="L486" href="#L486">486</a> 	@Override
-<a class="jxr_linenumber" name="L487" href="#L487">487</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Marker marker, String msg, Throwable t) {
+<a class="jxr_linenumber" name="L487" href="#L487">487</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String format, Object arg) {
 <a class="jxr_linenumber" name="L488" href="#L488">488</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
 <a class="jxr_linenumber" name="L489" href="#L489">489</a> 	}
 <a class="jxr_linenumber" name="L490" href="#L490">490</a> 
 <a class="jxr_linenumber" name="L491" href="#L491">491</a> 	@Override
-<a class="jxr_linenumber" name="L492" href="#L492">492</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String msg) {
+<a class="jxr_linenumber" name="L492" href="#L492">492</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String format, Object arg1, Object arg2) {
 <a class="jxr_linenumber" name="L493" href="#L493">493</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L494" href="#L494">494</a> 	}
-<a class="jxr_linenumber" name="L495" href="#L495">495</a> 
-<a class="jxr_linenumber" name="L496" href="#L496">496</a> 	@Override
-<a class="jxr_linenumber" name="L497" href="#L497">497</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String msg, Object...args) {
-<a class="jxr_linenumber" name="L498" href="#L498">498</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(WARNING))
-<a class="jxr_linenumber" name="L499" href="#L499">499</a> 			log(WARNING, format(msg, args), <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L500" href="#L500">500</a> 	}
-<a class="jxr_linenumber" name="L501" href="#L501">501</a> 
-<a class="jxr_linenumber" name="L502" href="#L502">502</a> 	@Override
-<a class="jxr_linenumber" name="L503" href="#L503">503</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String format, Object arg) {
-<a class="jxr_linenumber" name="L504" href="#L504">504</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L505" href="#L505">505</a> 	}
-<a class="jxr_linenumber" name="L506" href="#L506">506</a> 
-<a class="jxr_linenumber" name="L507" href="#L507">507</a> 	@Override
-<a class="jxr_linenumber" name="L508" href="#L508">508</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String format, Object arg1, Object arg2) {
-<a class="jxr_linenumber" name="L509" href="#L509">509</a> 		<em class="jxr_comment">// TODO Auto-generated method stub</em>
-<a class="jxr_linenumber" name="L510" href="#L510">510</a> 
+<a class="jxr_linenumber" name="L494" href="#L494">494</a> 
+<a class="jxr_linenumber" name="L495" href="#L495">495</a> 	}
+<a class="jxr_linenumber" name="L496" href="#L496">496</a> 
+<a class="jxr_linenumber" name="L497" href="#L497">497</a> 	@Override
+<a class="jxr_linenumber" name="L498" href="#L498">498</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String msg, Throwable thrown) {
+<a class="jxr_linenumber" name="L499" href="#L499">499</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(WARNING))
+<a class="jxr_linenumber" name="L500" href="#L500">500</a> 			log(WARNING, msg, thrown);
+<a class="jxr_linenumber" name="L501" href="#L501">501</a> 	}
+<a class="jxr_linenumber" name="L502" href="#L502">502</a> 
+<a class="jxr_linenumber" name="L503" href="#L503">503</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L504" href="#L504">504</a> <em class="jxr_javadoccomment">	 * Logs a warning message with only a throwable.</em>
+<a class="jxr_linenumber" name="L505" href="#L505">505</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L506" href="#L506">506</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log.</em>
+<a class="jxr_linenumber" name="L507" href="#L507">507</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L508" href="#L508">508</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Throwable thrown) {
+<a class="jxr_linenumber" name="L509" href="#L509">509</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(WARNING))
+<a class="jxr_linenumber" name="L510" href="#L510">510</a> 			log(WARNING, <span class="jxr_string">""</span>, thrown);
 <a class="jxr_linenumber" name="L511" href="#L511">511</a> 	}
 <a class="jxr_linenumber" name="L512" href="#L512">512</a> 
-<a class="jxr_linenumber" name="L513" href="#L513">513</a> 	@Override
-<a class="jxr_linenumber" name="L514" href="#L514">514</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(String msg, Throwable thrown) {
-<a class="jxr_linenumber" name="L515" href="#L515">515</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(WARNING))
-<a class="jxr_linenumber" name="L516" href="#L516">516</a> 			log(WARNING, msg, thrown);
-<a class="jxr_linenumber" name="L517" href="#L517">517</a> 	}
-<a class="jxr_linenumber" name="L518" href="#L518">518</a> 
-<a class="jxr_linenumber" name="L519" href="#L519">519</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L520" href="#L520">520</a> <em class="jxr_javadoccomment">	 * Logs a warning message with only a throwable.</em>
-<a class="jxr_linenumber" name="L521" href="#L521">521</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L522" href="#L522">522</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log.</em>
-<a class="jxr_linenumber" name="L523" href="#L523">523</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L524" href="#L524">524</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> warn(Throwable thrown) {
-<a class="jxr_linenumber" name="L525" href="#L525">525</a> 		<strong class="jxr_keyword">if</strong> (isLoggable(WARNING))
-<a class="jxr_linenumber" name="L526" href="#L526">526</a> 			log(WARNING, <span class="jxr_string">""</span>, thrown);
-<a class="jxr_linenumber" name="L527" href="#L527">527</a> 	}
-<a class="jxr_linenumber" name="L528" href="#L528">528</a> 
-<a class="jxr_linenumber" name="L529" href="#L529">529</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L530" href="#L530">530</a> <em class="jxr_javadoccomment">	 * Checks if a message at the specified level would be logged.</em>
-<a class="jxr_linenumber" name="L531" href="#L531">531</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L532" href="#L532">532</a> <em class="jxr_javadoccomment">	 * @param level The log level to check.</em>
-<a class="jxr_linenumber" name="L533" href="#L533">533</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the level is loggable, &lt;jk&gt;false&lt;/jk&gt; otherwise.</em>
-<a class="jxr_linenumber" name="L534" href="#L534">534</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L535" href="#L535">535</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isLoggable(Level level) {
-<a class="jxr_linenumber" name="L536" href="#L536">536</a> 		<strong class="jxr_keyword">return</strong> logger.isLoggable(level);
-<a class="jxr_linenumber" name="L537" href="#L537">537</a> 	}
-<a class="jxr_linenumber" name="L538" href="#L538">538</a> 
-<a class="jxr_linenumber" name="L539" href="#L539">539</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L540" href="#L540">540</a> <em class="jxr_javadoccomment">	 * Internal log method that creates a LogRecord and logs it.</em>
-<a class="jxr_linenumber" name="L541" href="#L541">541</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L542" href="#L542">542</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L543" href="#L543">543</a> <em class="jxr_javadoccomment">	 * Optionally includes source class and method name in the log record if SHOW_SOURCE is enabled.</em>
-<a class="jxr_linenumber" name="L544" href="#L544">544</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L545" href="#L545">545</a> <em class="jxr_javadoccomment">	 * @param level The log level.</em>
-<a class="jxr_linenumber" name="L546" href="#L546">546</a> <em class="jxr_javadoccomment">	 * @param msg The log message.</em>
-<a class="jxr_linenumber" name="L547" href="#L547">547</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log, or &lt;jk&gt;null&lt;/jk&gt; if none.</em>
-<a class="jxr_linenumber" name="L548" href="#L548">548</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L549" href="#L549">549</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg, Throwable thrown) {
-<a class="jxr_linenumber" name="L550" href="#L550">550</a> 		<strong class="jxr_keyword">var</strong> r = <strong class="jxr_keyword">new</strong> LogRecord(level, msg);
-<a class="jxr_linenumber" name="L551" href="#L551">551</a> 		<strong class="jxr_keyword">if</strong> (nn(thrown))
-<a class="jxr_linenumber" name="L552" href="#L552">552</a> 			r.setThrown(thrown);
-<a class="jxr_linenumber" name="L553" href="#L553">553</a> 		r.setLoggerName(logger.getName());
-<a class="jxr_linenumber" name="L554" href="#L554">554</a> 		<strong class="jxr_keyword">if</strong> (SHOW_SOURCE) {
-<a class="jxr_linenumber" name="L555" href="#L555">555</a> 			StackTraceElement[] stack = <strong class="jxr_keyword">new</strong> Throwable().getStackTrace();
-<a class="jxr_linenumber" name="L556" href="#L556">556</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> e : stack) {
-<a class="jxr_linenumber" name="L557" href="#L557">557</a> 				<strong class="jxr_keyword">if</strong> (! e.getClassName().equals(getClass().getName())) {
-<a class="jxr_linenumber" name="L558" href="#L558">558</a> 					r.setSourceClassName(e.getClassName());
-<a class="jxr_linenumber" name="L559" href="#L559">559</a> 					r.setSourceMethodName(e.getMethodName());
-<a class="jxr_linenumber" name="L560" href="#L560">560</a> 					<strong class="jxr_keyword">break</strong>;
-<a class="jxr_linenumber" name="L561" href="#L561">561</a> 				}
-<a class="jxr_linenumber" name="L562" href="#L562">562</a> 			}
-<a class="jxr_linenumber" name="L563" href="#L563">563</a> 		}
-<a class="jxr_linenumber" name="L564" href="#L564">564</a> 		logger.log(r);
-<a class="jxr_linenumber" name="L565" href="#L565">565</a> 	}
-<a class="jxr_linenumber" name="L566" href="#L566">566</a> }
+<a class="jxr_linenumber" name="L513" href="#L513">513</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L514" href="#L514">514</a> <em class="jxr_javadoccomment">	 * Checks if a message at the specified level would be logged.</em>
+<a class="jxr_linenumber" name="L515" href="#L515">515</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L516" href="#L516">516</a> <em class="jxr_javadoccomment">	 * @param level The log level to check.</em>
+<a class="jxr_linenumber" name="L517" href="#L517">517</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if the level is loggable, &lt;jk&gt;false&lt;/jk&gt; otherwise.</em>
+<a class="jxr_linenumber" name="L518" href="#L518">518</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L519" href="#L519">519</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">boolean</strong> isLoggable(Level level) {
+<a class="jxr_linenumber" name="L520" href="#L520">520</a> 		<strong class="jxr_keyword">return</strong> logger.isLoggable(level);
+<a class="jxr_linenumber" name="L521" href="#L521">521</a> 	}
+<a class="jxr_linenumber" name="L522" href="#L522">522</a> 
+<a class="jxr_linenumber" name="L523" href="#L523">523</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L524" href="#L524">524</a> <em class="jxr_javadoccomment">	 * Internal log method that creates a LogRecord and logs it.</em>
+<a class="jxr_linenumber" name="L525" href="#L525">525</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L526" href="#L526">526</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L527" href="#L527">527</a> <em class="jxr_javadoccomment">	 * Optionally includes source class and method name in the log record if SHOW_SOURCE is enabled.</em>
+<a class="jxr_linenumber" name="L528" href="#L528">528</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L529" href="#L529">529</a> <em class="jxr_javadoccomment">	 * @param level The log level.</em>
+<a class="jxr_linenumber" name="L530" href="#L530">530</a> <em class="jxr_javadoccomment">	 * @param msg The log message.</em>
+<a class="jxr_linenumber" name="L531" href="#L531">531</a> <em class="jxr_javadoccomment">	 * @param thrown The throwable to log, or &lt;jk&gt;null&lt;/jk&gt; if none.</em>
+<a class="jxr_linenumber" name="L532" href="#L532">532</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L533" href="#L533">533</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg, Throwable thrown) {
+<a class="jxr_linenumber" name="L534" href="#L534">534</a> 		<strong class="jxr_keyword">var</strong> r = <strong class="jxr_keyword">new</strong> LogRecord(level, msg);
+<a class="jxr_linenumber" name="L535" href="#L535">535</a> 		<strong class="jxr_keyword">if</strong> (nn(thrown))
+<a class="jxr_linenumber" name="L536" href="#L536">536</a> 			r.setThrown(thrown);
+<a class="jxr_linenumber" name="L537" href="#L537">537</a> 		r.setLoggerName(logger.getName());
+<a class="jxr_linenumber" name="L538" href="#L538">538</a> 		<strong class="jxr_keyword">if</strong> (SHOW_SOURCE) {
+<a class="jxr_linenumber" name="L539" href="#L539">539</a> 			StackTraceElement[] stack = <strong class="jxr_keyword">new</strong> Throwable().getStackTrace();
+<a class="jxr_linenumber" name="L540" href="#L540">540</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> e : stack) {
+<a class="jxr_linenumber" name="L541" href="#L541">541</a> 				<strong class="jxr_keyword">if</strong> (! e.getClassName().equals(getClass().getName())) {
+<a class="jxr_linenumber" name="L542" href="#L542">542</a> 					r.setSourceClassName(e.getClassName());
+<a class="jxr_linenumber" name="L543" href="#L543">543</a> 					r.setSourceMethodName(e.getMethodName());
+<a class="jxr_linenumber" name="L544" href="#L544">544</a> 					<strong class="jxr_keyword">break</strong>;
+<a class="jxr_linenumber" name="L545" href="#L545">545</a> 				}
+<a class="jxr_linenumber" name="L546" href="#L546">546</a> 			}
+<a class="jxr_linenumber" name="L547" href="#L547">547</a> 		}
+<a class="jxr_linenumber" name="L548" href="#L548">548</a> 		logger.log(r);
+<a class="jxr_linenumber" name="L549" href="#L549">549</a> 	}
+<a class="jxr_linenumber" name="L550" href="#L550">550</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/parser/ParseException.html b/site/xref/org/apache/juneau/parser/ParseException.html
index 803d021e71..6cf3f34074 100644
--- a/site/xref/org/apache/juneau/parser/ParseException.html
+++ b/site/xref/org/apache/juneau/parser/ParseException.html
@@ -68,7 +68,7 @@
 <a class="jxr_linenumber" name="L60" href="#L60">60</a>  
 <a class="jxr_linenumber" name="L61" href="#L61">61</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String getMessage(<a name="ParserSession" href="../../../../org/apache/juneau/parser/ParserSession.html#ParserSession">ParserSession</a> session, String msg, Object...args) {
 <a class="jxr_linenumber" name="L62" href="#L62">62</a>  		<strong class="jxr_keyword">if</strong> (args.length != 0)
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  			msg = mformat(msg, args);
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  			msg = f(msg, args);
 <a class="jxr_linenumber" name="L64" href="#L64">64</a>  
 <a class="jxr_linenumber" name="L65" href="#L65">65</a>  		<strong class="jxr_keyword">if</strong> (nn(session)) {
 <a class="jxr_linenumber" name="L66" href="#L66">66</a>  			Position p = session.getPosition();
diff --git a/site/xref/org/apache/juneau/parser/ParserListener.html b/site/xref/org/apache/juneau/parser/ParserListener.html
index 063862aa2e..77d0f1a645 100644
--- a/site/xref/org/apache/juneau/parser/ParserListener.html
+++ b/site/xref/org/apache/juneau/parser/ParserListener.html
@@ -26,63 +26,64 @@
 <a class="jxr_linenumber" name="L18" href="#L18">18</a>  
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StringUtils.*;
 <a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.ThrowableUtils.*;
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.*;
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment"> * Class for listening for certain parse events during a document parse.</em>
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * 	&lt;li class='link'&gt;&lt;a class="doclink" href="<a href="https://juneau.apache.org/docs/topics/SerializersAndParsers" target="alexandria_uri">https://juneau.apache.org/docs/topics/SerializersAndParsers</a>"&gt;Serializers and Parsers&lt;/a&gt;</em>
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ParserListener" href="../../../../org/apache/juneau/parser/ParserListener.html#ParserListener">ParserListener</a> {
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">	 * Represents no parser listener.</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> Void <strong class="jxr_keyword">extends</strong> <a name="ParserListener" href="../../../../org/apache/juneau/parser/ParserListener.html#ParserListener">ParserListener</a> {}
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">	 * Called when an exception is thrown when trying to call a bean setter method.</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">	 * @param session The serializer session.</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the setter method.</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">	 * @param p The bean property we had an issue on.</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onBeanSetterException(<a name="ParserSession" href="../../../../org/apache/juneau/parser/ParserSession.html#ParserSession">ParserSession</a> session, Throwable t, BeanPropertyMeta p) {
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  		onError(session, t, mformat(<span class="jxr_string">"Could not call setValue() on property ''{0}'' of class ''{1}'', exception = {2}"</span>, p.getName(), p.getBeanMeta().getClassMeta(), lm(t)));
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  	}
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment">	 * Called when an error occurs during parsing but is ignored.</em>
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">	 * @param session The parser session.</em>
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the getter method.</em>
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 * @param msg The error message.</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onError(<a name="ParserSession" href="../../../../org/apache/juneau/parser/ParserSession.html#ParserSession">ParserSession</a> session, Throwable t, String msg) {
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  		<em class="jxr_comment">// Do something with this information.</em>
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  	}
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  <em class="jxr_javadoccomment">	 * Gets called when an unknown bean property is detected in a document.</em>
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <em class="jxr_javadoccomment">	 * This method only gets called if {@link org.apache.juneau.BeanContext.Builder#ignoreUnknownBeanProperties()} setting is &lt;jk&gt;true&lt;/jk&gt;.</em>
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <em class="jxr_javadoccomment">	 * Otherwise, the parser will throw a {@link ParseException}.</em>
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The class type of the bean.</em>
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">	 * @param session The parser session.</em>
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment">	 * @param propertyName The property name encountered in the document.</em>
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment">	 * @param beanClass The bean class.</em>
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_javadoccomment">	 * @param bean The bean.</em>
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  	<strong class="jxr_keyword">public</strong> &lt;T&gt; <strong class="jxr_keyword">void</strong> onUnknownBeanProperty(<a name="ParserSession" href="../../../../org/apache/juneau/parser/ParserSession.html#ParserSession">ParserSession</a> session, String propertyName, Class&lt;T&gt; beanClass, T bean) {
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  		onError(session, <strong class="jxr_keyword">null</strong>, mformat(<span class="jxr_string">"Unknown property ''{0}'' encountered while trying to parse into class ''{1}'' at location {2}"</span>, propertyName, beanClass, session.getPosition()));
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  	}
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  }
+<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.*;
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> * Class for listening for certain parse events during a document parse.</em>
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * 	&lt;li class='link'&gt;&lt;a class="doclink" href="<a href="https://juneau.apache.org/docs/topics/SerializersAndParsers" target="alexandria_uri">https://juneau.apache.org/docs/topics/SerializersAndParsers</a>"&gt;Serializers and Parsers&lt;/a&gt;</em>
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ParserListener" href="../../../../org/apache/juneau/parser/ParserListener.html#ParserListener">ParserListener</a> {
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">	 * Represents no parser listener.</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> Void <strong class="jxr_keyword">extends</strong> <a name="ParserListener" href="../../../../org/apache/juneau/parser/ParserListener.html#ParserListener">ParserListener</a> {}
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">	 * Called when an exception is thrown when trying to call a bean setter method.</em>
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">	 * @param session The serializer session.</em>
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the setter method.</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">	 * @param p The bean property we had an issue on.</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onBeanSetterException(<a name="ParserSession" href="../../../../org/apache/juneau/parser/ParserSession.html#ParserSession">ParserSession</a> session, Throwable t, BeanPropertyMeta p) {
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  		onError(session, t, f(<span class="jxr_string">"Could not call setValue() on property ''{0}'' of class ''{1}'', exception = {2}"</span>, p.getName(), p.getBeanMeta().getClassMeta(), lm(t)));
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  	}
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>  
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">	 * Called when an error occurs during parsing but is ignored.</em>
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">	 * @param session The parser session.</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the getter method.</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 * @param msg The error message.</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onError(<a name="ParserSession" href="../../../../org/apache/juneau/parser/ParserSession.html#ParserSession">ParserSession</a> session, Throwable t, String msg) {
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  		<em class="jxr_comment">// Do something with this information.</em>
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  	}
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  <em class="jxr_javadoccomment">	 * Gets called when an unknown bean property is detected in a document.</em>
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>  <em class="jxr_javadoccomment">	 * This method only gets called if {@link org.apache.juneau.BeanContext.Builder#ignoreUnknownBeanProperties()} setting is &lt;jk&gt;true&lt;/jk&gt;.</em>
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  <em class="jxr_javadoccomment">	 * Otherwise, the parser will throw a {@link ParseException}.</em>
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>  <em class="jxr_javadoccomment">	 * @param &lt;T&gt; The class type of the bean.</em>
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment">	 * @param session The parser session.</em>
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment">	 * @param propertyName The property name encountered in the document.</em>
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>  <em class="jxr_javadoccomment">	 * @param beanClass The bean class.</em>
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>  <em class="jxr_javadoccomment">	 * @param bean The bean.</em>
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>  	<strong class="jxr_keyword">public</strong> &lt;T&gt; <strong class="jxr_keyword">void</strong> onUnknownBeanProperty(<a name="ParserSession" href="../../../../org/apache/juneau/parser/ParserSession.html#ParserSession">ParserSession</a> session, String propertyName, Class&lt;T&gt; beanClass, T bean) {
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>  		onError(session, <strong class="jxr_keyword">null</strong>, f(<span class="jxr_string">"Unknown property ''{0}'' encountered while trying to parse into class ''{1}'' at location {2}"</span>, propertyName, beanClass, session.getPosition()));
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>  	}
+<a class="jxr_linenumber" name="L78" href="#L78">78</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/rest/arg/ArgException.html b/site/xref/org/apache/juneau/rest/arg/ArgException.html
index fbcb63500b..4d4684103c 100644
--- a/site/xref/org/apache/juneau/rest/arg/ArgException.html
+++ b/site/xref/org/apache/juneau/rest/arg/ArgException.html
@@ -25,130 +25,131 @@
 <a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.juneau.<strong class="jxr_keyword">rest</strong>.arg;
 <a class="jxr_linenumber" name="L18" href="#L18">18</a>  
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StringUtils.*;
-<a class="jxr_linenumber" name="L20" href="#L20">20</a>  
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> java.util.*;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.http.*;
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.http.*;
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.http.header.*;
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.http.response.*;
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.common.reflect.*;
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * General exception due to a malformed Java parameter.</em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> * 	&lt;li class='link'&gt;&lt;a class="doclink" href="<a href="https://juneau.apache.org/docs/topics/JavaMethodParameters" target="alexandria_uri">https://juneau.apache.org/docs/topics/JavaMethodParameters</a>"&gt;Java Method Parameters&lt;/a&gt;</em>
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> * @serial exclude</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> <strong class="jxr_keyword">extends</strong> <a name="InternalServerError" href="../../../../../org/apache/juneau/http/response/InternalServerError.html#InternalServerError">InternalServerError</a> {
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">	 * @param pi The parameter with the issue.</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">	 * @param msg The message.</em>
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">	 * @param args The message args.</em>
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a>(<a name="ParameterInfo" href="../../../../../org/apache/juneau/common/reflect/ParameterInfo.html#ParameterInfo">ParameterInfo</a> pi, String msg, Object...args) {
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  		<strong class="jxr_keyword">super</strong>(mformat(msg, args) + <span class="jxr_string">" on parameter "</span> + pi.getIndex() + <span class="jxr_string">" of method "</span> + pi.getMethod().getFullName() + <span class="jxr_string">"."</span>);
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  	}
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">	 * Copy constructor.</em>
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 * @param copyFrom The object to copy.</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  	<strong class="jxr_keyword">protected</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a>(<a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> copyFrom) {
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  		<strong class="jxr_keyword">super</strong>(copyFrom);
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  	}
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  
-<a class="jxr_linenumber" name="L61" href="#L61">61</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L62" href="#L62">62</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> copy() {
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a>(<strong class="jxr_keyword">this</strong>);
-<a class="jxr_linenumber" name="L64" href="#L64">64</a>  	}
-<a class="jxr_linenumber" name="L65" href="#L65">65</a>  
-<a class="jxr_linenumber" name="L66" href="#L66">66</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L67" href="#L67">67</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setContent(HttpEntity value) {
-<a class="jxr_linenumber" name="L68" href="#L68">68</a>  		<strong class="jxr_keyword">super</strong>.setContent(value);
-<a class="jxr_linenumber" name="L69" href="#L69">69</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L70" href="#L70">70</a>  	}
-<a class="jxr_linenumber" name="L71" href="#L71">71</a>  
-<a class="jxr_linenumber" name="L72" href="#L72">72</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setContent(String value) {
-<a class="jxr_linenumber" name="L74" href="#L74">74</a>  		<strong class="jxr_keyword">super</strong>.setContent(value);
-<a class="jxr_linenumber" name="L75" href="#L75">75</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L76" href="#L76">76</a>  	}
-<a class="jxr_linenumber" name="L77" href="#L77">77</a>  
-<a class="jxr_linenumber" name="L78" href="#L78">78</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeader2(String name, Object value) {
-<a class="jxr_linenumber" name="L80" href="#L80">80</a>  		<strong class="jxr_keyword">super</strong>.setHeader2(name, value);
-<a class="jxr_linenumber" name="L81" href="#L81">81</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L82" href="#L82">82</a>  	}
-<a class="jxr_linenumber" name="L83" href="#L83">83</a>  
-<a class="jxr_linenumber" name="L84" href="#L84">84</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L85" href="#L85">85</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeaders(<a name="HeaderList" href="../../../../../org/apache/juneau/http/header/HeaderList.html#HeaderList">HeaderList</a> value) {
-<a class="jxr_linenumber" name="L86" href="#L86">86</a>  		<strong class="jxr_keyword">super</strong>.setHeaders(value);
-<a class="jxr_linenumber" name="L87" href="#L87">87</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  	}
-<a class="jxr_linenumber" name="L89" href="#L89">89</a>  
-<a class="jxr_linenumber" name="L90" href="#L90">90</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L91" href="#L91">91</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeaders(List&lt;Header&gt; values) {
-<a class="jxr_linenumber" name="L92" href="#L92">92</a>  		<strong class="jxr_keyword">super</strong>.setHeaders(values);
-<a class="jxr_linenumber" name="L93" href="#L93">93</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L94" href="#L94">94</a>  	}
-<a class="jxr_linenumber" name="L95" href="#L95">95</a>  
-<a class="jxr_linenumber" name="L96" href="#L96">96</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L97" href="#L97">97</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeaders2(Header...values) {
-<a class="jxr_linenumber" name="L98" href="#L98">98</a>  		<strong class="jxr_keyword">super</strong>.setHeaders2(values);
-<a class="jxr_linenumber" name="L99" href="#L99">99</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L100" href="#L100">100</a> 	}
-<a class="jxr_linenumber" name="L101" href="#L101">101</a> 
-<a class="jxr_linenumber" name="L102" href="#L102">102</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L103" href="#L103">103</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setLocale2(Locale value) {
-<a class="jxr_linenumber" name="L104" href="#L104">104</a> 		<strong class="jxr_keyword">super</strong>.setLocale2(value);
-<a class="jxr_linenumber" name="L105" href="#L105">105</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L106" href="#L106">106</a> 	}
-<a class="jxr_linenumber" name="L107" href="#L107">107</a> 
-<a class="jxr_linenumber" name="L108" href="#L108">108</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L109" href="#L109">109</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setMessage(String message, Object...args) {
-<a class="jxr_linenumber" name="L110" href="#L110">110</a> 		<strong class="jxr_keyword">super</strong>.setMessage(message, args);
-<a class="jxr_linenumber" name="L111" href="#L111">111</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L112" href="#L112">112</a> 	}
-<a class="jxr_linenumber" name="L113" href="#L113">113</a> 
-<a class="jxr_linenumber" name="L114" href="#L114">114</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L115" href="#L115">115</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setProtocolVersion(ProtocolVersion value) {
-<a class="jxr_linenumber" name="L116" href="#L116">116</a> 		<strong class="jxr_keyword">super</strong>.setProtocolVersion(value);
-<a class="jxr_linenumber" name="L117" href="#L117">117</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L118" href="#L118">118</a> 	}
-<a class="jxr_linenumber" name="L119" href="#L119">119</a> 
-<a class="jxr_linenumber" name="L120" href="#L120">120</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L121" href="#L121">121</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setReasonPhrase2(String value) {
-<a class="jxr_linenumber" name="L122" href="#L122">122</a> 		<strong class="jxr_keyword">super</strong>.setReasonPhrase2(value);
-<a class="jxr_linenumber" name="L123" href="#L123">123</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L124" href="#L124">124</a> 	}
-<a class="jxr_linenumber" name="L125" href="#L125">125</a> 
-<a class="jxr_linenumber" name="L126" href="#L126">126</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L127" href="#L127">127</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setReasonPhraseCatalog(ReasonPhraseCatalog value) {
-<a class="jxr_linenumber" name="L128" href="#L128">128</a> 		<strong class="jxr_keyword">super</strong>.setReasonPhraseCatalog(value);
-<a class="jxr_linenumber" name="L129" href="#L129">129</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L130" href="#L130">130</a> 	}
-<a class="jxr_linenumber" name="L131" href="#L131">131</a> 
-<a class="jxr_linenumber" name="L132" href="#L132">132</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L133" href="#L133">133</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setStatusLine(<a name="BasicStatusLine" href="../../../../../org/apache/juneau/http/BasicStatusLine.html#BasicStatusLine">BasicStatusLine</a> value) {
-<a class="jxr_linenumber" name="L134" href="#L134">134</a> 		<strong class="jxr_keyword">super</strong>.setStatusLine(value);
-<a class="jxr_linenumber" name="L135" href="#L135">135</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L136" href="#L136">136</a> 	}
-<a class="jxr_linenumber" name="L137" href="#L137">137</a> 
-<a class="jxr_linenumber" name="L138" href="#L138">138</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
-<a class="jxr_linenumber" name="L139" href="#L139">139</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setUnmodifiable() {
-<a class="jxr_linenumber" name="L140" href="#L140">140</a> 		<strong class="jxr_keyword">super</strong>.setUnmodifiable();
-<a class="jxr_linenumber" name="L141" href="#L141">141</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
-<a class="jxr_linenumber" name="L142" href="#L142">142</a> 	}
-<a class="jxr_linenumber" name="L143" href="#L143">143</a> }
+<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
+<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> java.util.*;
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.http.*;
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.http.*;
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.http.header.*;
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.http.response.*;
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.common.reflect.*;
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> * General exception due to a malformed Java parameter.</em>
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  <em class="jxr_javadoccomment"> * 	&lt;li class='link'&gt;&lt;a class="doclink" href="<a href="https://juneau.apache.org/docs/topics/JavaMethodParameters" target="alexandria_uri">https://juneau.apache.org/docs/topics/JavaMethodParameters</a>"&gt;Java Method Parameters&lt;/a&gt;</em>
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment"> * @serial exclude</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> <strong class="jxr_keyword">extends</strong> <a name="InternalServerError" href="../../../../../org/apache/juneau/http/response/InternalServerError.html#InternalServerError">InternalServerError</a> {
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">	 * Constructor.</em>
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">	 * @param pi The parameter with the issue.</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">	 * @param msg The message.</em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  <em class="jxr_javadoccomment">	 * @param args The message args.</em>
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a>(<a name="ParameterInfo" href="../../../../../org/apache/juneau/common/reflect/ParameterInfo.html#ParameterInfo">ParameterInfo</a> pi, String msg, Object...args) {
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>  		<strong class="jxr_keyword">super</strong>(f(msg, args) + <span class="jxr_string">" on parameter "</span> + pi.getIndex() + <span class="jxr_string">" of method "</span> + pi.getMethod().getFullName() + <span class="jxr_string">"."</span>);
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  	}
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">	 * Copy constructor.</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 * @param copyFrom The object to copy.</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  	<strong class="jxr_keyword">protected</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a>(<a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> copyFrom) {
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  		<strong class="jxr_keyword">super</strong>(copyFrom);
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  	}
+<a class="jxr_linenumber" name="L61" href="#L61">61</a>  
+<a class="jxr_linenumber" name="L62" href="#L62">62</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> copy() {
+<a class="jxr_linenumber" name="L64" href="#L64">64</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a>(<strong class="jxr_keyword">this</strong>);
+<a class="jxr_linenumber" name="L65" href="#L65">65</a>  	}
+<a class="jxr_linenumber" name="L66" href="#L66">66</a>  
+<a class="jxr_linenumber" name="L67" href="#L67">67</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L68" href="#L68">68</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setContent(HttpEntity value) {
+<a class="jxr_linenumber" name="L69" href="#L69">69</a>  		<strong class="jxr_keyword">super</strong>.setContent(value);
+<a class="jxr_linenumber" name="L70" href="#L70">70</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L71" href="#L71">71</a>  	}
+<a class="jxr_linenumber" name="L72" href="#L72">72</a>  
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L74" href="#L74">74</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setContent(String value) {
+<a class="jxr_linenumber" name="L75" href="#L75">75</a>  		<strong class="jxr_keyword">super</strong>.setContent(value);
+<a class="jxr_linenumber" name="L76" href="#L76">76</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L77" href="#L77">77</a>  	}
+<a class="jxr_linenumber" name="L78" href="#L78">78</a>  
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L80" href="#L80">80</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeader2(String name, Object value) {
+<a class="jxr_linenumber" name="L81" href="#L81">81</a>  		<strong class="jxr_keyword">super</strong>.setHeader2(name, value);
+<a class="jxr_linenumber" name="L82" href="#L82">82</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L83" href="#L83">83</a>  	}
+<a class="jxr_linenumber" name="L84" href="#L84">84</a>  
+<a class="jxr_linenumber" name="L85" href="#L85">85</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L86" href="#L86">86</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeaders(<a name="HeaderList" href="../../../../../org/apache/juneau/http/header/HeaderList.html#HeaderList">HeaderList</a> value) {
+<a class="jxr_linenumber" name="L87" href="#L87">87</a>  		<strong class="jxr_keyword">super</strong>.setHeaders(value);
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L89" href="#L89">89</a>  	}
+<a class="jxr_linenumber" name="L90" href="#L90">90</a>  
+<a class="jxr_linenumber" name="L91" href="#L91">91</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L92" href="#L92">92</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeaders(List&lt;Header&gt; values) {
+<a class="jxr_linenumber" name="L93" href="#L93">93</a>  		<strong class="jxr_keyword">super</strong>.setHeaders(values);
+<a class="jxr_linenumber" name="L94" href="#L94">94</a>  		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L95" href="#L95">95</a>  	}
+<a class="jxr_linenumber" name="L96" href="#L96">96</a>  
+<a class="jxr_linenumber" name="L97" href="#L97">97</a>  	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L98" href="#L98">98</a>  	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setHeaders2(Header...values) {
+<a class="jxr_linenumber" name="L99" href="#L99">99</a>  		<strong class="jxr_keyword">super</strong>.setHeaders2(values);
+<a class="jxr_linenumber" name="L100" href="#L100">100</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L101" href="#L101">101</a> 	}
+<a class="jxr_linenumber" name="L102" href="#L102">102</a> 
+<a class="jxr_linenumber" name="L103" href="#L103">103</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L104" href="#L104">104</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setLocale2(Locale value) {
+<a class="jxr_linenumber" name="L105" href="#L105">105</a> 		<strong class="jxr_keyword">super</strong>.setLocale2(value);
+<a class="jxr_linenumber" name="L106" href="#L106">106</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L107" href="#L107">107</a> 	}
+<a class="jxr_linenumber" name="L108" href="#L108">108</a> 
+<a class="jxr_linenumber" name="L109" href="#L109">109</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L110" href="#L110">110</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setMessage(String message, Object...args) {
+<a class="jxr_linenumber" name="L111" href="#L111">111</a> 		<strong class="jxr_keyword">super</strong>.setMessage(message, args);
+<a class="jxr_linenumber" name="L112" href="#L112">112</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L113" href="#L113">113</a> 	}
+<a class="jxr_linenumber" name="L114" href="#L114">114</a> 
+<a class="jxr_linenumber" name="L115" href="#L115">115</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L116" href="#L116">116</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setProtocolVersion(ProtocolVersion value) {
+<a class="jxr_linenumber" name="L117" href="#L117">117</a> 		<strong class="jxr_keyword">super</strong>.setProtocolVersion(value);
+<a class="jxr_linenumber" name="L118" href="#L118">118</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L119" href="#L119">119</a> 	}
+<a class="jxr_linenumber" name="L120" href="#L120">120</a> 
+<a class="jxr_linenumber" name="L121" href="#L121">121</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L122" href="#L122">122</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setReasonPhrase2(String value) {
+<a class="jxr_linenumber" name="L123" href="#L123">123</a> 		<strong class="jxr_keyword">super</strong>.setReasonPhrase2(value);
+<a class="jxr_linenumber" name="L124" href="#L124">124</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L125" href="#L125">125</a> 	}
+<a class="jxr_linenumber" name="L126" href="#L126">126</a> 
+<a class="jxr_linenumber" name="L127" href="#L127">127</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L128" href="#L128">128</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setReasonPhraseCatalog(ReasonPhraseCatalog value) {
+<a class="jxr_linenumber" name="L129" href="#L129">129</a> 		<strong class="jxr_keyword">super</strong>.setReasonPhraseCatalog(value);
+<a class="jxr_linenumber" name="L130" href="#L130">130</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L131" href="#L131">131</a> 	}
+<a class="jxr_linenumber" name="L132" href="#L132">132</a> 
+<a class="jxr_linenumber" name="L133" href="#L133">133</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L134" href="#L134">134</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setStatusLine(<a name="BasicStatusLine" href="../../../../../org/apache/juneau/http/BasicStatusLine.html#BasicStatusLine">BasicStatusLine</a> value) {
+<a class="jxr_linenumber" name="L135" href="#L135">135</a> 		<strong class="jxr_keyword">super</strong>.setStatusLine(value);
+<a class="jxr_linenumber" name="L136" href="#L136">136</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L137" href="#L137">137</a> 	}
+<a class="jxr_linenumber" name="L138" href="#L138">138</a> 
+<a class="jxr_linenumber" name="L139" href="#L139">139</a> 	@Override <em class="jxr_comment">/* Overridden from InternalServerError */</em>
+<a class="jxr_linenumber" name="L140" href="#L140">140</a> 	<strong class="jxr_keyword">public</strong> <a name="ArgException" href="../../../../../org/apache/juneau/rest/arg/ArgException.html#ArgException">ArgException</a> setUnmodifiable() {
+<a class="jxr_linenumber" name="L141" href="#L141">141</a> 		<strong class="jxr_keyword">super</strong>.setUnmodifiable();
+<a class="jxr_linenumber" name="L142" href="#L142">142</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">this</strong>;
+<a class="jxr_linenumber" name="L143" href="#L143">143</a> 	}
+<a class="jxr_linenumber" name="L144" href="#L144">144</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/rest/client/RestClient.html b/site/xref/org/apache/juneau/rest/client/RestClient.html
index 6b1d8d48eb..475f118f97 100644
--- a/site/xref/org/apache/juneau/rest/client/RestClient.html
+++ b/site/xref/org/apache/juneau/rest/client/RestClient.html
@@ -7545,475 +7545,471 @@
 <a class="jxr_linenumber" name="L7537" href="#L7537">7537</a> 		<strong class="jxr_keyword">return</strong> request(op(method, uri, body));
 <a class="jxr_linenumber" name="L7538" href="#L7538">7538</a> 	}
 <a class="jxr_linenumber" name="L7539" href="#L7539">7539</a> 
-<a class="jxr_linenumber" name="L7540" href="#L7540">7540</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Supplier&lt;String&gt; msg(String msg, Object...args) {
-<a class="jxr_linenumber" name="L7541" href="#L7541">7541</a> 		<strong class="jxr_keyword">return</strong> () -&gt; args.length == 0 ? msg : MessageFormat.format(msg, args);
+<a class="jxr_linenumber" name="L7540" href="#L7540">7540</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a name="RestOperation" href="../../../../../org/apache/juneau/rest/client/RestOperation.html#RestOperation">RestOperation</a> op(String method, Object url, Object body) {
+<a class="jxr_linenumber" name="L7541" href="#L7541">7541</a> 		<strong class="jxr_keyword">return</strong> RestOperation.of(method, url, body);
 <a class="jxr_linenumber" name="L7542" href="#L7542">7542</a> 	}
 <a class="jxr_linenumber" name="L7543" href="#L7543">7543</a> 
-<a class="jxr_linenumber" name="L7544" href="#L7544">7544</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <a name="RestOperation" href="../../../../../org/apache/juneau/rest/client/RestOperation.html#RestOperation">RestOperation</a> op(String method, Object url, Object body) {
-<a class="jxr_linenumber" name="L7545" href="#L7545">7545</a> 		<strong class="jxr_keyword">return</strong> RestOperation.of(method, url, body);
+<a class="jxr_linenumber" name="L7544" href="#L7544">7544</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Reader stringBody(String body) {
+<a class="jxr_linenumber" name="L7545" href="#L7545">7545</a> 		<strong class="jxr_keyword">return</strong> body == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : <strong class="jxr_keyword">new</strong> StringReader(s(body));
 <a class="jxr_linenumber" name="L7546" href="#L7546">7546</a> 	}
 <a class="jxr_linenumber" name="L7547" href="#L7547">7547</a> 
-<a class="jxr_linenumber" name="L7548" href="#L7548">7548</a> 	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> Reader stringBody(String body) {
-<a class="jxr_linenumber" name="L7549" href="#L7549">7549</a> 		<strong class="jxr_keyword">return</strong> body == <strong class="jxr_keyword">null</strong> ? <strong class="jxr_keyword">null</strong> : <strong class="jxr_keyword">new</strong> StringReader(s(body));
-<a class="jxr_linenumber" name="L7550" href="#L7550">7550</a> 	}
-<a class="jxr_linenumber" name="L7551" href="#L7551">7551</a> 
-<a class="jxr_linenumber" name="L7552" href="#L7552">7552</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7553" href="#L7553">7553</a> <em class="jxr_javadoccomment">	 * Creates a {@link RestRequest} object from the specified {@link HttpRequest} object.</em>
-<a class="jxr_linenumber" name="L7554" href="#L7554">7554</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7555" href="#L7555">7555</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7556" href="#L7556">7556</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to provide their own specialized {@link RestRequest} objects.</em>
-<a class="jxr_linenumber" name="L7557" href="#L7557">7557</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7558" href="#L7558">7558</a> <em class="jxr_javadoccomment">	 * @param uri The target.</em>
-<a class="jxr_linenumber" name="L7559" href="#L7559">7559</a> <em class="jxr_javadoccomment">	 * @param method The HTTP method (uppercase).</em>
-<a class="jxr_linenumber" name="L7560" href="#L7560">7560</a> <em class="jxr_javadoccomment">	 * @param hasBody Whether this method has a request entity.</em>
-<a class="jxr_linenumber" name="L7561" href="#L7561">7561</a> <em class="jxr_javadoccomment">	 * @return A new {@link RestRequest} object.</em>
-<a class="jxr_linenumber" name="L7562" href="#L7562">7562</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If an exception or non-200 response code occurred during the connection attempt.</em>
-<a class="jxr_linenumber" name="L7563" href="#L7563">7563</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7564" href="#L7564">7564</a> 	<strong class="jxr_keyword">protected</strong> <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> createRequest(URI uri, String method, <strong class="jxr_keyword">boolean</strong> hasBody) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCa [...]
-<a class="jxr_linenumber" name="L7565" href="#L7565">7565</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a>(<strong class="jxr_keyword">this</strong>, uri, method, hasBody);
-<a class="jxr_linenumber" name="L7566" href="#L7566">7566</a> 	}
-<a class="jxr_linenumber" name="L7567" href="#L7567">7567</a> 
-<a class="jxr_linenumber" name="L7568" href="#L7568">7568</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7569" href="#L7569">7569</a> <em class="jxr_javadoccomment">	 * Creates a {@link RestResponse} object from the specified {@link HttpResponse} object.</em>
-<a class="jxr_linenumber" name="L7570" href="#L7570">7570</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7571" href="#L7571">7571</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7572" href="#L7572">7572</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to provide their own specialized {@link RestResponse} objects.</em>
+<a class="jxr_linenumber" name="L7548" href="#L7548">7548</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7549" href="#L7549">7549</a> <em class="jxr_javadoccomment">	 * Creates a {@link RestRequest} object from the specified {@link HttpRequest} object.</em>
+<a class="jxr_linenumber" name="L7550" href="#L7550">7550</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7551" href="#L7551">7551</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7552" href="#L7552">7552</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to provide their own specialized {@link RestRequest} objects.</em>
+<a class="jxr_linenumber" name="L7553" href="#L7553">7553</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7554" href="#L7554">7554</a> <em class="jxr_javadoccomment">	 * @param uri The target.</em>
+<a class="jxr_linenumber" name="L7555" href="#L7555">7555</a> <em class="jxr_javadoccomment">	 * @param method The HTTP method (uppercase).</em>
+<a class="jxr_linenumber" name="L7556" href="#L7556">7556</a> <em class="jxr_javadoccomment">	 * @param hasBody Whether this method has a request entity.</em>
+<a class="jxr_linenumber" name="L7557" href="#L7557">7557</a> <em class="jxr_javadoccomment">	 * @return A new {@link RestRequest} object.</em>
+<a class="jxr_linenumber" name="L7558" href="#L7558">7558</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If an exception or non-200 response code occurred during the connection attempt.</em>
+<a class="jxr_linenumber" name="L7559" href="#L7559">7559</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7560" href="#L7560">7560</a> 	<strong class="jxr_keyword">protected</strong> <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> createRequest(URI uri, String method, <strong class="jxr_keyword">boolean</strong> hasBody) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCa [...]
+<a class="jxr_linenumber" name="L7561" href="#L7561">7561</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a>(<strong class="jxr_keyword">this</strong>, uri, method, hasBody);
+<a class="jxr_linenumber" name="L7562" href="#L7562">7562</a> 	}
+<a class="jxr_linenumber" name="L7563" href="#L7563">7563</a> 
+<a class="jxr_linenumber" name="L7564" href="#L7564">7564</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7565" href="#L7565">7565</a> <em class="jxr_javadoccomment">	 * Creates a {@link RestResponse} object from the specified {@link HttpResponse} object.</em>
+<a class="jxr_linenumber" name="L7566" href="#L7566">7566</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7567" href="#L7567">7567</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7568" href="#L7568">7568</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to provide their own specialized {@link RestResponse} objects.</em>
+<a class="jxr_linenumber" name="L7569" href="#L7569">7569</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7570" href="#L7570">7570</a> <em class="jxr_javadoccomment">	 * @param request The request creating this response.</em>
+<a class="jxr_linenumber" name="L7571" href="#L7571">7571</a> <em class="jxr_javadoccomment">	 * @param httpResponse The response object to wrap.</em>
+<a class="jxr_linenumber" name="L7572" href="#L7572">7572</a> <em class="jxr_javadoccomment">	 * @param parser The parser to use to parse the response.</em>
 <a class="jxr_linenumber" name="L7573" href="#L7573">7573</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7574" href="#L7574">7574</a> <em class="jxr_javadoccomment">	 * @param request The request creating this response.</em>
-<a class="jxr_linenumber" name="L7575" href="#L7575">7575</a> <em class="jxr_javadoccomment">	 * @param httpResponse The response object to wrap.</em>
-<a class="jxr_linenumber" name="L7576" href="#L7576">7576</a> <em class="jxr_javadoccomment">	 * @param parser The parser to use to parse the response.</em>
-<a class="jxr_linenumber" name="L7577" href="#L7577">7577</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7578" href="#L7578">7578</a> <em class="jxr_javadoccomment">	 * @return A new {@link RestResponse} object.</em>
-<a class="jxr_linenumber" name="L7579" href="#L7579">7579</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If an exception or non-200 response code occurred during the connection attempt.</em>
-<a class="jxr_linenumber" name="L7580" href="#L7580">7580</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7581" href="#L7581">7581</a> 	<strong class="jxr_keyword">protected</strong> <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a> createResponse(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> request, HttpResponse httpResponse, <a name="Parser" href="../../../../../org/apache/juneau/parser/Parser.html#Parser">Parser [...]
-<a class="jxr_linenumber" name="L7582" href="#L7582">7582</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a>(<strong class="jxr_keyword">this</strong>, request, httpResponse, parser);
-<a class="jxr_linenumber" name="L7583" href="#L7583">7583</a> 	}
-<a class="jxr_linenumber" name="L7584" href="#L7584">7584</a> 
-<a class="jxr_linenumber" name="L7585" href="#L7585">7585</a> 	@Override
-<a class="jxr_linenumber" name="L7586" href="#L7586">7586</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> finalize() <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="L7587" href="#L7587">7587</a> 		<strong class="jxr_keyword">if</strong> (detectLeaks &amp;&amp; ! isClosed &amp;&amp; ! keepHttpClientOpen) {
-<a class="jxr_linenumber" name="L7588" href="#L7588">7588</a> 			<strong class="jxr_keyword">var</strong> sb = <strong class="jxr_keyword">new</strong> StringBuilder(<span class="jxr_string">"WARNING:  RestClient garbage collected before it was finalized."</span>);  <em class="jxr_comment">// NOT DEBUG</em>
-<a class="jxr_linenumber" name="L7589" href="#L7589">7589</a> 			<strong class="jxr_keyword">if</strong> (nn(creationStack)) {
-<a class="jxr_linenumber" name="L7590" href="#L7590">7590</a> 				sb.append(<span class="jxr_string">"\nCreation Stack:"</span>);  <em class="jxr_comment">// NOT DEBUG</em>
-<a class="jxr_linenumber" name="L7591" href="#L7591">7591</a> 				<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> e : creationStack)
-<a class="jxr_linenumber" name="L7592" href="#L7592">7592</a> 					sb.append(<span class="jxr_string">"\n\t"</span> + e);  <em class="jxr_comment">// NOT DEBUG</em>
-<a class="jxr_linenumber" name="L7593" href="#L7593">7593</a> 			}
-<a class="jxr_linenumber" name="L7594" href="#L7594">7594</a> 			log(WARNING, sb.toString());
-<a class="jxr_linenumber" name="L7595" href="#L7595">7595</a> 		}
-<a class="jxr_linenumber" name="L7596" href="#L7596">7596</a> 	}
-<a class="jxr_linenumber" name="L7597" href="#L7597">7597</a> 
-<a class="jxr_linenumber" name="L7598" href="#L7598">7598</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7599" href="#L7599">7599</a> <em class="jxr_javadoccomment">	 * Returns the part parser associated with this client.</em>
-<a class="jxr_linenumber" name="L7600" href="#L7600">7600</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7601" href="#L7601">7601</a> <em class="jxr_javadoccomment">	 * @return The part parser associated with this client.</em>
-<a class="jxr_linenumber" name="L7602" href="#L7602">7602</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7603" href="#L7603">7603</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartParser" href="../../../../../org/apache/juneau/httppart/HttpPartParser.html#HttpPartParser">HttpPartParser</a> getPartParser() { <strong class="jxr_keyword">return</strong> partParser; }
-<a class="jxr_linenumber" name="L7604" href="#L7604">7604</a> 
-<a class="jxr_linenumber" name="L7605" href="#L7605">7605</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7606" href="#L7606">7606</a> <em class="jxr_javadoccomment">	 * Returns the part parser instance of the specified type.</em>
-<a class="jxr_linenumber" name="L7607" href="#L7607">7607</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7608" href="#L7608">7608</a> <em class="jxr_javadoccomment">	 * @param c The part parser class.</em>
-<a class="jxr_linenumber" name="L7609" href="#L7609">7609</a> <em class="jxr_javadoccomment">	 * @return The part parser.</em>
-<a class="jxr_linenumber" name="L7610" href="#L7610">7610</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7611" href="#L7611">7611</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartParser" href="../../../../../org/apache/juneau/httppart/HttpPartParser.html#HttpPartParser">HttpPartParser</a> getPartParser(Class&lt;? <strong class="jxr_keyword">extends</strong> HttpPartParser&gt; c) {
-<a class="jxr_linenumber" name="L7612" href="#L7612">7612</a> 		<strong class="jxr_keyword">var</strong> x = partParsers.get(c);
-<a class="jxr_linenumber" name="L7613" href="#L7613">7613</a> 		<strong class="jxr_keyword">if</strong> (x == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L7614" href="#L7614">7614</a> 			<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L7615" href="#L7615">7615</a> 				x = beanStore.createBean(c).run();
-<a class="jxr_linenumber" name="L7616" href="#L7616">7616</a> 			} <strong class="jxr_keyword">catch</strong> (<a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> e) {
-<a class="jxr_linenumber" name="L7617" href="#L7617">7617</a> 				<strong class="jxr_keyword">throw</strong> toRex(e);
-<a class="jxr_linenumber" name="L7618" href="#L7618">7618</a> 			}
-<a class="jxr_linenumber" name="L7619" href="#L7619">7619</a> 			partParsers.put(c, x);
-<a class="jxr_linenumber" name="L7620" href="#L7620">7620</a> 		}
-<a class="jxr_linenumber" name="L7621" href="#L7621">7621</a> 		<strong class="jxr_keyword">return</strong> x;
-<a class="jxr_linenumber" name="L7622" href="#L7622">7622</a> 	}
-<a class="jxr_linenumber" name="L7623" href="#L7623">7623</a> 
-<a class="jxr_linenumber" name="L7624" href="#L7624">7624</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7625" href="#L7625">7625</a> <em class="jxr_javadoccomment">	 * Returns the part serializer associated with this client.</em>
-<a class="jxr_linenumber" name="L7626" href="#L7626">7626</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7627" href="#L7627">7627</a> <em class="jxr_javadoccomment">	 * @return The part serializer associated with this client.</em>
-<a class="jxr_linenumber" name="L7628" href="#L7628">7628</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7629" href="#L7629">7629</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartSerializer" href="../../../../../org/apache/juneau/httppart/HttpPartSerializer.html#HttpPartSerializer">HttpPartSerializer</a> getPartSerializer() { <strong class="jxr_keyword">return</strong> partSerializer; }
-<a class="jxr_linenumber" name="L7630" href="#L7630">7630</a> 
-<a class="jxr_linenumber" name="L7631" href="#L7631">7631</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7632" href="#L7632">7632</a> <em class="jxr_javadoccomment">	 * Returns the part serializer instance of the specified type.</em>
-<a class="jxr_linenumber" name="L7633" href="#L7633">7633</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7634" href="#L7634">7634</a> <em class="jxr_javadoccomment">	 * @param c The part serializer class.</em>
-<a class="jxr_linenumber" name="L7635" href="#L7635">7635</a> <em class="jxr_javadoccomment">	 * @return The part serializer.</em>
-<a class="jxr_linenumber" name="L7636" href="#L7636">7636</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7637" href="#L7637">7637</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartSerializer" href="../../../../../org/apache/juneau/httppart/HttpPartSerializer.html#HttpPartSerializer">HttpPartSerializer</a> getPartSerializer(Class&lt;? <strong class="jxr_keyword">extends</strong> HttpPartSerializer&gt; c) {
-<a class="jxr_linenumber" name="L7638" href="#L7638">7638</a> 		<strong class="jxr_keyword">var</strong> x = partSerializers.get(c);
-<a class="jxr_linenumber" name="L7639" href="#L7639">7639</a> 		<strong class="jxr_keyword">if</strong> (x == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L7640" href="#L7640">7640</a> 			<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L7641" href="#L7641">7641</a> 				x = beanStore.createBean(c).run();
-<a class="jxr_linenumber" name="L7642" href="#L7642">7642</a> 			} <strong class="jxr_keyword">catch</strong> (<a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> e) {
-<a class="jxr_linenumber" name="L7643" href="#L7643">7643</a> 				<strong class="jxr_keyword">throw</strong> toRex(e);
-<a class="jxr_linenumber" name="L7644" href="#L7644">7644</a> 			}
-<a class="jxr_linenumber" name="L7645" href="#L7645">7645</a> 			partSerializers.put(c, x);
-<a class="jxr_linenumber" name="L7646" href="#L7646">7646</a> 		}
-<a class="jxr_linenumber" name="L7647" href="#L7647">7647</a> 		<strong class="jxr_keyword">return</strong> x;
-<a class="jxr_linenumber" name="L7648" href="#L7648">7648</a> 	}
-<a class="jxr_linenumber" name="L7649" href="#L7649">7649</a> 
-<a class="jxr_linenumber" name="L7650" href="#L7650">7650</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7651" href="#L7651">7651</a> <em class="jxr_javadoccomment">	 * Gets called add the end of the constructor call to perform any post-initialization.</em>
-<a class="jxr_linenumber" name="L7652" href="#L7652">7652</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7653" href="#L7653">7653</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> init() {}
-<a class="jxr_linenumber" name="L7654" href="#L7654">7654</a> 
-<a class="jxr_linenumber" name="L7655" href="#L7655">7655</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7656" href="#L7656">7656</a> <em class="jxr_javadoccomment">	 * Perform optional initialization on builder before it is used.</em>
-<a class="jxr_linenumber" name="L7657" href="#L7657">7657</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7658" href="#L7658">7658</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7659" href="#L7659">7659</a> <em class="jxr_javadoccomment">	 * Default behavior is a no-op.</em>
-<a class="jxr_linenumber" name="L7660" href="#L7660">7660</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7661" href="#L7661">7661</a> <em class="jxr_javadoccomment">	 * @param builder The builder to initialize.</em>
-<a class="jxr_linenumber" name="L7662" href="#L7662">7662</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7663" href="#L7663">7663</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> init(RestClient.Builder builder) {}
-<a class="jxr_linenumber" name="L7664" href="#L7664">7664</a> 
-<a class="jxr_linenumber" name="L7665" href="#L7665">7665</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7666" href="#L7666">7666</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if empty request form-data parameter values should be ignored.</em>
-<a class="jxr_linenumber" name="L7667" href="#L7667">7667</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7668" href="#L7668">7668</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if empty request form-data parameter values should be ignored.</em>
-<a class="jxr_linenumber" name="L7669" href="#L7669">7669</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7670" href="#L7670">7670</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isSkipEmptyFormData() { <strong class="jxr_keyword">return</strong> skipEmptyFormData; }
-<a class="jxr_linenumber" name="L7671" href="#L7671">7671</a> 
-<a class="jxr_linenumber" name="L7672" href="#L7672">7672</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7673" href="#L7673">7673</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if empty request header values should be ignored.</em>
-<a class="jxr_linenumber" name="L7674" href="#L7674">7674</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7675" href="#L7675">7675</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if empty request header values should be ignored.</em>
-<a class="jxr_linenumber" name="L7676" href="#L7676">7676</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7677" href="#L7677">7677</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isSkipEmptyHeaderData() { <strong class="jxr_keyword">return</strong> skipEmptyHeaderData; }
-<a class="jxr_linenumber" name="L7678" href="#L7678">7678</a> 
-<a class="jxr_linenumber" name="L7679" href="#L7679">7679</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7680" href="#L7680">7680</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if empty request query parameter values should be ignored.</em>
-<a class="jxr_linenumber" name="L7681" href="#L7681">7681</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7682" href="#L7682">7682</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if empty request query parameter values should be ignored.</em>
-<a class="jxr_linenumber" name="L7683" href="#L7683">7683</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7684" href="#L7684">7684</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isSkipEmptyQueryData() { <strong class="jxr_keyword">return</strong> skipEmptyQueryData; }
-<a class="jxr_linenumber" name="L7685" href="#L7685">7685</a> 
-<a class="jxr_linenumber" name="L7686" href="#L7686">7686</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7687" href="#L7687">7687</a> <em class="jxr_javadoccomment">	 * Logs a message.</em>
-<a class="jxr_linenumber" name="L7688" href="#L7688">7688</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7689" href="#L7689">7689</a> <em class="jxr_javadoccomment">	 * @param level The log level.</em>
-<a class="jxr_linenumber" name="L7690" href="#L7690">7690</a> <em class="jxr_javadoccomment">	 * @param msg The message with {@link MessageFormat}-style arguments.</em>
-<a class="jxr_linenumber" name="L7691" href="#L7691">7691</a> <em class="jxr_javadoccomment">	 * @param args The arguments.</em>
-<a class="jxr_linenumber" name="L7692" href="#L7692">7692</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7693" href="#L7693">7693</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg, Object...args) {
-<a class="jxr_linenumber" name="L7694" href="#L7694">7694</a> 		logger.log(level, msg(msg, args));
-<a class="jxr_linenumber" name="L7695" href="#L7695">7695</a> 		<strong class="jxr_keyword">if</strong> (logToConsole)
-<a class="jxr_linenumber" name="L7696" href="#L7696">7696</a> 			console.println(msg(msg, args).get());
-<a class="jxr_linenumber" name="L7697" href="#L7697">7697</a> 	}
-<a class="jxr_linenumber" name="L7698" href="#L7698">7698</a> 
-<a class="jxr_linenumber" name="L7699" href="#L7699">7699</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7700" href="#L7700">7700</a> <em class="jxr_javadoccomment">	 * Logs a message.</em>
-<a class="jxr_linenumber" name="L7701" href="#L7701">7701</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7702" href="#L7702">7702</a> <em class="jxr_javadoccomment">	 * @param level The log level.</em>
-<a class="jxr_linenumber" name="L7703" href="#L7703">7703</a> <em class="jxr_javadoccomment">	 * @param t Thrown exception.  Can be &lt;jk&gt;null&lt;/jk&gt;.</em>
-<a class="jxr_linenumber" name="L7704" href="#L7704">7704</a> <em class="jxr_javadoccomment">	 * @param msg The message.</em>
-<a class="jxr_linenumber" name="L7705" href="#L7705">7705</a> <em class="jxr_javadoccomment">	 * @param args Optional message arguments.</em>
-<a class="jxr_linenumber" name="L7706" href="#L7706">7706</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7707" href="#L7707">7707</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> log(Level level, Throwable t, String msg, Object...args) {
-<a class="jxr_linenumber" name="L7708" href="#L7708">7708</a> 		logger.log(level, t, msg(msg, args));
-<a class="jxr_linenumber" name="L7709" href="#L7709">7709</a> 		<strong class="jxr_keyword">if</strong> (logToConsole) {
-<a class="jxr_linenumber" name="L7710" href="#L7710">7710</a> 			console.println(msg(msg, args).get());
-<a class="jxr_linenumber" name="L7711" href="#L7711">7711</a> 			<strong class="jxr_keyword">if</strong> (nn(t))
-<a class="jxr_linenumber" name="L7712" href="#L7712">7712</a> 				t.printStackTrace(console);
-<a class="jxr_linenumber" name="L7713" href="#L7713">7713</a> 		}
-<a class="jxr_linenumber" name="L7714" href="#L7714">7714</a> 	}
-<a class="jxr_linenumber" name="L7715" href="#L7715">7715</a> 
-<a class="jxr_linenumber" name="L7716" href="#L7716">7716</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7717" href="#L7717">7717</a> <em class="jxr_javadoccomment">	 * Interceptor method called immediately after the RestRequest object is created and all headers/query/form-data has been set on the request from the client.</em>
-<a class="jxr_linenumber" name="L7718" href="#L7718">7718</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7719" href="#L7719">7719</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7720" href="#L7720">7720</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to handle any cleanup operations.</em>
+<a class="jxr_linenumber" name="L7574" href="#L7574">7574</a> <em class="jxr_javadoccomment">	 * @return A new {@link RestResponse} object.</em>
+<a class="jxr_linenumber" name="L7575" href="#L7575">7575</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If an exception or non-200 response code occurred during the connection attempt.</em>
+<a class="jxr_linenumber" name="L7576" href="#L7576">7576</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7577" href="#L7577">7577</a> 	<strong class="jxr_keyword">protected</strong> <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a> createResponse(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> request, HttpResponse httpResponse, <a name="Parser" href="../../../../../org/apache/juneau/parser/Parser.html#Parser">Parser [...]
+<a class="jxr_linenumber" name="L7578" href="#L7578">7578</a> 		<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a>(<strong class="jxr_keyword">this</strong>, request, httpResponse, parser);
+<a class="jxr_linenumber" name="L7579" href="#L7579">7579</a> 	}
+<a class="jxr_linenumber" name="L7580" href="#L7580">7580</a> 
+<a class="jxr_linenumber" name="L7581" href="#L7581">7581</a> 	@Override
+<a class="jxr_linenumber" name="L7582" href="#L7582">7582</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> finalize() <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="L7583" href="#L7583">7583</a> 		<strong class="jxr_keyword">if</strong> (detectLeaks &amp;&amp; ! isClosed &amp;&amp; ! keepHttpClientOpen) {
+<a class="jxr_linenumber" name="L7584" href="#L7584">7584</a> 			<strong class="jxr_keyword">var</strong> sb = <strong class="jxr_keyword">new</strong> StringBuilder(<span class="jxr_string">"WARNING:  RestClient garbage collected before it was finalized."</span>);  <em class="jxr_comment">// NOT DEBUG</em>
+<a class="jxr_linenumber" name="L7585" href="#L7585">7585</a> 			<strong class="jxr_keyword">if</strong> (nn(creationStack)) {
+<a class="jxr_linenumber" name="L7586" href="#L7586">7586</a> 				sb.append(<span class="jxr_string">"\nCreation Stack:"</span>);  <em class="jxr_comment">// NOT DEBUG</em>
+<a class="jxr_linenumber" name="L7587" href="#L7587">7587</a> 				<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> e : creationStack)
+<a class="jxr_linenumber" name="L7588" href="#L7588">7588</a> 					sb.append(<span class="jxr_string">"\n\t"</span> + e);  <em class="jxr_comment">// NOT DEBUG</em>
+<a class="jxr_linenumber" name="L7589" href="#L7589">7589</a> 			}
+<a class="jxr_linenumber" name="L7590" href="#L7590">7590</a> 			log(WARNING, sb.toString());
+<a class="jxr_linenumber" name="L7591" href="#L7591">7591</a> 		}
+<a class="jxr_linenumber" name="L7592" href="#L7592">7592</a> 	}
+<a class="jxr_linenumber" name="L7593" href="#L7593">7593</a> 
+<a class="jxr_linenumber" name="L7594" href="#L7594">7594</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7595" href="#L7595">7595</a> <em class="jxr_javadoccomment">	 * Returns the part parser associated with this client.</em>
+<a class="jxr_linenumber" name="L7596" href="#L7596">7596</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7597" href="#L7597">7597</a> <em class="jxr_javadoccomment">	 * @return The part parser associated with this client.</em>
+<a class="jxr_linenumber" name="L7598" href="#L7598">7598</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7599" href="#L7599">7599</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartParser" href="../../../../../org/apache/juneau/httppart/HttpPartParser.html#HttpPartParser">HttpPartParser</a> getPartParser() { <strong class="jxr_keyword">return</strong> partParser; }
+<a class="jxr_linenumber" name="L7600" href="#L7600">7600</a> 
+<a class="jxr_linenumber" name="L7601" href="#L7601">7601</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7602" href="#L7602">7602</a> <em class="jxr_javadoccomment">	 * Returns the part parser instance of the specified type.</em>
+<a class="jxr_linenumber" name="L7603" href="#L7603">7603</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7604" href="#L7604">7604</a> <em class="jxr_javadoccomment">	 * @param c The part parser class.</em>
+<a class="jxr_linenumber" name="L7605" href="#L7605">7605</a> <em class="jxr_javadoccomment">	 * @return The part parser.</em>
+<a class="jxr_linenumber" name="L7606" href="#L7606">7606</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7607" href="#L7607">7607</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartParser" href="../../../../../org/apache/juneau/httppart/HttpPartParser.html#HttpPartParser">HttpPartParser</a> getPartParser(Class&lt;? <strong class="jxr_keyword">extends</strong> HttpPartParser&gt; c) {
+<a class="jxr_linenumber" name="L7608" href="#L7608">7608</a> 		<strong class="jxr_keyword">var</strong> x = partParsers.get(c);
+<a class="jxr_linenumber" name="L7609" href="#L7609">7609</a> 		<strong class="jxr_keyword">if</strong> (x == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L7610" href="#L7610">7610</a> 			<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L7611" href="#L7611">7611</a> 				x = beanStore.createBean(c).run();
+<a class="jxr_linenumber" name="L7612" href="#L7612">7612</a> 			} <strong class="jxr_keyword">catch</strong> (<a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> e) {
+<a class="jxr_linenumber" name="L7613" href="#L7613">7613</a> 				<strong class="jxr_keyword">throw</strong> toRex(e);
+<a class="jxr_linenumber" name="L7614" href="#L7614">7614</a> 			}
+<a class="jxr_linenumber" name="L7615" href="#L7615">7615</a> 			partParsers.put(c, x);
+<a class="jxr_linenumber" name="L7616" href="#L7616">7616</a> 		}
+<a class="jxr_linenumber" name="L7617" href="#L7617">7617</a> 		<strong class="jxr_keyword">return</strong> x;
+<a class="jxr_linenumber" name="L7618" href="#L7618">7618</a> 	}
+<a class="jxr_linenumber" name="L7619" href="#L7619">7619</a> 
+<a class="jxr_linenumber" name="L7620" href="#L7620">7620</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7621" href="#L7621">7621</a> <em class="jxr_javadoccomment">	 * Returns the part serializer associated with this client.</em>
+<a class="jxr_linenumber" name="L7622" href="#L7622">7622</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7623" href="#L7623">7623</a> <em class="jxr_javadoccomment">	 * @return The part serializer associated with this client.</em>
+<a class="jxr_linenumber" name="L7624" href="#L7624">7624</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7625" href="#L7625">7625</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartSerializer" href="../../../../../org/apache/juneau/httppart/HttpPartSerializer.html#HttpPartSerializer">HttpPartSerializer</a> getPartSerializer() { <strong class="jxr_keyword">return</strong> partSerializer; }
+<a class="jxr_linenumber" name="L7626" href="#L7626">7626</a> 
+<a class="jxr_linenumber" name="L7627" href="#L7627">7627</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7628" href="#L7628">7628</a> <em class="jxr_javadoccomment">	 * Returns the part serializer instance of the specified type.</em>
+<a class="jxr_linenumber" name="L7629" href="#L7629">7629</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7630" href="#L7630">7630</a> <em class="jxr_javadoccomment">	 * @param c The part serializer class.</em>
+<a class="jxr_linenumber" name="L7631" href="#L7631">7631</a> <em class="jxr_javadoccomment">	 * @return The part serializer.</em>
+<a class="jxr_linenumber" name="L7632" href="#L7632">7632</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7633" href="#L7633">7633</a> 	<strong class="jxr_keyword">protected</strong> <a name="HttpPartSerializer" href="../../../../../org/apache/juneau/httppart/HttpPartSerializer.html#HttpPartSerializer">HttpPartSerializer</a> getPartSerializer(Class&lt;? <strong class="jxr_keyword">extends</strong> HttpPartSerializer&gt; c) {
+<a class="jxr_linenumber" name="L7634" href="#L7634">7634</a> 		<strong class="jxr_keyword">var</strong> x = partSerializers.get(c);
+<a class="jxr_linenumber" name="L7635" href="#L7635">7635</a> 		<strong class="jxr_keyword">if</strong> (x == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L7636" href="#L7636">7636</a> 			<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L7637" href="#L7637">7637</a> 				x = beanStore.createBean(c).run();
+<a class="jxr_linenumber" name="L7638" href="#L7638">7638</a> 			} <strong class="jxr_keyword">catch</strong> (<a name="ExecutableException" href="../../../../../org/apache/juneau/common/reflect/ExecutableException.html#ExecutableException">ExecutableException</a> e) {
+<a class="jxr_linenumber" name="L7639" href="#L7639">7639</a> 				<strong class="jxr_keyword">throw</strong> toRex(e);
+<a class="jxr_linenumber" name="L7640" href="#L7640">7640</a> 			}
+<a class="jxr_linenumber" name="L7641" href="#L7641">7641</a> 			partSerializers.put(c, x);
+<a class="jxr_linenumber" name="L7642" href="#L7642">7642</a> 		}
+<a class="jxr_linenumber" name="L7643" href="#L7643">7643</a> 		<strong class="jxr_keyword">return</strong> x;
+<a class="jxr_linenumber" name="L7644" href="#L7644">7644</a> 	}
+<a class="jxr_linenumber" name="L7645" href="#L7645">7645</a> 
+<a class="jxr_linenumber" name="L7646" href="#L7646">7646</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7647" href="#L7647">7647</a> <em class="jxr_javadoccomment">	 * Gets called add the end of the constructor call to perform any post-initialization.</em>
+<a class="jxr_linenumber" name="L7648" href="#L7648">7648</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7649" href="#L7649">7649</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> init() {}
+<a class="jxr_linenumber" name="L7650" href="#L7650">7650</a> 
+<a class="jxr_linenumber" name="L7651" href="#L7651">7651</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7652" href="#L7652">7652</a> <em class="jxr_javadoccomment">	 * Perform optional initialization on builder before it is used.</em>
+<a class="jxr_linenumber" name="L7653" href="#L7653">7653</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7654" href="#L7654">7654</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7655" href="#L7655">7655</a> <em class="jxr_javadoccomment">	 * Default behavior is a no-op.</em>
+<a class="jxr_linenumber" name="L7656" href="#L7656">7656</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7657" href="#L7657">7657</a> <em class="jxr_javadoccomment">	 * @param builder The builder to initialize.</em>
+<a class="jxr_linenumber" name="L7658" href="#L7658">7658</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7659" href="#L7659">7659</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> init(RestClient.Builder builder) {}
+<a class="jxr_linenumber" name="L7660" href="#L7660">7660</a> 
+<a class="jxr_linenumber" name="L7661" href="#L7661">7661</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7662" href="#L7662">7662</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if empty request form-data parameter values should be ignored.</em>
+<a class="jxr_linenumber" name="L7663" href="#L7663">7663</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7664" href="#L7664">7664</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if empty request form-data parameter values should be ignored.</em>
+<a class="jxr_linenumber" name="L7665" href="#L7665">7665</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7666" href="#L7666">7666</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isSkipEmptyFormData() { <strong class="jxr_keyword">return</strong> skipEmptyFormData; }
+<a class="jxr_linenumber" name="L7667" href="#L7667">7667</a> 
+<a class="jxr_linenumber" name="L7668" href="#L7668">7668</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7669" href="#L7669">7669</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if empty request header values should be ignored.</em>
+<a class="jxr_linenumber" name="L7670" href="#L7670">7670</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7671" href="#L7671">7671</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if empty request header values should be ignored.</em>
+<a class="jxr_linenumber" name="L7672" href="#L7672">7672</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7673" href="#L7673">7673</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isSkipEmptyHeaderData() { <strong class="jxr_keyword">return</strong> skipEmptyHeaderData; }
+<a class="jxr_linenumber" name="L7674" href="#L7674">7674</a> 
+<a class="jxr_linenumber" name="L7675" href="#L7675">7675</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7676" href="#L7676">7676</a> <em class="jxr_javadoccomment">	 * Returns &lt;jk&gt;true&lt;/jk&gt; if empty request query parameter values should be ignored.</em>
+<a class="jxr_linenumber" name="L7677" href="#L7677">7677</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7678" href="#L7678">7678</a> <em class="jxr_javadoccomment">	 * @return &lt;jk&gt;true&lt;/jk&gt; if empty request query parameter values should be ignored.</em>
+<a class="jxr_linenumber" name="L7679" href="#L7679">7679</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7680" href="#L7680">7680</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">boolean</strong> isSkipEmptyQueryData() { <strong class="jxr_keyword">return</strong> skipEmptyQueryData; }
+<a class="jxr_linenumber" name="L7681" href="#L7681">7681</a> 
+<a class="jxr_linenumber" name="L7682" href="#L7682">7682</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7683" href="#L7683">7683</a> <em class="jxr_javadoccomment">	 * Logs a message.</em>
+<a class="jxr_linenumber" name="L7684" href="#L7684">7684</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7685" href="#L7685">7685</a> <em class="jxr_javadoccomment">	 * @param level The log level.</em>
+<a class="jxr_linenumber" name="L7686" href="#L7686">7686</a> <em class="jxr_javadoccomment">	 * @param msg The message with {@link MessageFormat}-style arguments.</em>
+<a class="jxr_linenumber" name="L7687" href="#L7687">7687</a> <em class="jxr_javadoccomment">	 * @param args The arguments.</em>
+<a class="jxr_linenumber" name="L7688" href="#L7688">7688</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7689" href="#L7689">7689</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg, Object...args) {
+<a class="jxr_linenumber" name="L7690" href="#L7690">7690</a> 		logger.log(level, f(msg, args));
+<a class="jxr_linenumber" name="L7691" href="#L7691">7691</a> 		<strong class="jxr_keyword">if</strong> (logToConsole)
+<a class="jxr_linenumber" name="L7692" href="#L7692">7692</a> 			console.println(f(msg, args));
+<a class="jxr_linenumber" name="L7693" href="#L7693">7693</a> 	}
+<a class="jxr_linenumber" name="L7694" href="#L7694">7694</a> 
+<a class="jxr_linenumber" name="L7695" href="#L7695">7695</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7696" href="#L7696">7696</a> <em class="jxr_javadoccomment">	 * Logs a message.</em>
+<a class="jxr_linenumber" name="L7697" href="#L7697">7697</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7698" href="#L7698">7698</a> <em class="jxr_javadoccomment">	 * @param level The log level.</em>
+<a class="jxr_linenumber" name="L7699" href="#L7699">7699</a> <em class="jxr_javadoccomment">	 * @param t Thrown exception.  Can be &lt;jk&gt;null&lt;/jk&gt;.</em>
+<a class="jxr_linenumber" name="L7700" href="#L7700">7700</a> <em class="jxr_javadoccomment">	 * @param msg The message.</em>
+<a class="jxr_linenumber" name="L7701" href="#L7701">7701</a> <em class="jxr_javadoccomment">	 * @param args Optional message arguments.</em>
+<a class="jxr_linenumber" name="L7702" href="#L7702">7702</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7703" href="#L7703">7703</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> log(Level level, Throwable t, String msg, Object...args) {
+<a class="jxr_linenumber" name="L7704" href="#L7704">7704</a> 		logger.log(level, t, fs(msg, args));
+<a class="jxr_linenumber" name="L7705" href="#L7705">7705</a> 		<strong class="jxr_keyword">if</strong> (logToConsole) {
+<a class="jxr_linenumber" name="L7706" href="#L7706">7706</a> 			console.println(f(msg, args));
+<a class="jxr_linenumber" name="L7707" href="#L7707">7707</a> 			<strong class="jxr_keyword">if</strong> (nn(t))
+<a class="jxr_linenumber" name="L7708" href="#L7708">7708</a> 				t.printStackTrace(console);
+<a class="jxr_linenumber" name="L7709" href="#L7709">7709</a> 		}
+<a class="jxr_linenumber" name="L7710" href="#L7710">7710</a> 	}
+<a class="jxr_linenumber" name="L7711" href="#L7711">7711</a> 
+<a class="jxr_linenumber" name="L7712" href="#L7712">7712</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7713" href="#L7713">7713</a> <em class="jxr_javadoccomment">	 * Interceptor method called immediately after the RestRequest object is created and all headers/query/form-data has been set on the request from the client.</em>
+<a class="jxr_linenumber" name="L7714" href="#L7714">7714</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7715" href="#L7715">7715</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7716" href="#L7716">7716</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to handle any cleanup operations.</em>
+<a class="jxr_linenumber" name="L7717" href="#L7717">7717</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7718" href="#L7718">7718</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
+<a class="jxr_linenumber" name="L7719" href="#L7719">7719</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#interceptors(Object...)}</em>
+<a class="jxr_linenumber" name="L7720" href="#L7720">7720</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
 <a class="jxr_linenumber" name="L7721" href="#L7721">7721</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7722" href="#L7722">7722</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L7723" href="#L7723">7723</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#interceptors(Object...)}</em>
-<a class="jxr_linenumber" name="L7724" href="#L7724">7724</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L7725" href="#L7725">7725</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7726" href="#L7726">7726</a> <em class="jxr_javadoccomment">	 * @param req The HTTP request.</em>
-<a class="jxr_linenumber" name="L7727" href="#L7727">7727</a> <em class="jxr_javadoccomment">	 * @param res The HTTP response.</em>
-<a class="jxr_linenumber" name="L7728" href="#L7728">7728</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any of the interceptors threw an exception.</em>
-<a class="jxr_linenumber" name="L7729" href="#L7729">7729</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7730" href="#L7730">7730</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onCallClose(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> req, <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a> res) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href [...]
-<a class="jxr_linenumber" name="L7731" href="#L7731">7731</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L7732" href="#L7732">7732</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rci : interceptors)
-<a class="jxr_linenumber" name="L7733" href="#L7733">7733</a> 				rci.onClose(req, res);
-<a class="jxr_linenumber" name="L7734" href="#L7734">7734</a> 		} <strong class="jxr_keyword">catch</strong> (RuntimeException | <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
-<a class="jxr_linenumber" name="L7735" href="#L7735">7735</a> 			<strong class="jxr_keyword">throw</strong> e;
-<a class="jxr_linenumber" name="L7736" href="#L7736">7736</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="L7737" href="#L7737">7737</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(res, e, <span class="jxr_string">"Interceptor threw an exception on close."</span>);
-<a class="jxr_linenumber" name="L7738" href="#L7738">7738</a> 		}
-<a class="jxr_linenumber" name="L7739" href="#L7739">7739</a> 	}
-<a class="jxr_linenumber" name="L7740" href="#L7740">7740</a> 
-<a class="jxr_linenumber" name="L7741" href="#L7741">7741</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7742" href="#L7742">7742</a> <em class="jxr_javadoccomment">	 * Interceptor method called immediately after an HTTP response has been received.</em>
-<a class="jxr_linenumber" name="L7743" href="#L7743">7743</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7744" href="#L7744">7744</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7745" href="#L7745">7745</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to intercept the response and perform special modifications.</em>
+<a class="jxr_linenumber" name="L7722" href="#L7722">7722</a> <em class="jxr_javadoccomment">	 * @param req The HTTP request.</em>
+<a class="jxr_linenumber" name="L7723" href="#L7723">7723</a> <em class="jxr_javadoccomment">	 * @param res The HTTP response.</em>
+<a class="jxr_linenumber" name="L7724" href="#L7724">7724</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any of the interceptors threw an exception.</em>
+<a class="jxr_linenumber" name="L7725" href="#L7725">7725</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7726" href="#L7726">7726</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onCallClose(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> req, <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a> res) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href [...]
+<a class="jxr_linenumber" name="L7727" href="#L7727">7727</a> 		<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L7728" href="#L7728">7728</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rci : interceptors)
+<a class="jxr_linenumber" name="L7729" href="#L7729">7729</a> 				rci.onClose(req, res);
+<a class="jxr_linenumber" name="L7730" href="#L7730">7730</a> 		} <strong class="jxr_keyword">catch</strong> (RuntimeException | <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
+<a class="jxr_linenumber" name="L7731" href="#L7731">7731</a> 			<strong class="jxr_keyword">throw</strong> e;
+<a class="jxr_linenumber" name="L7732" href="#L7732">7732</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="L7733" href="#L7733">7733</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(res, e, <span class="jxr_string">"Interceptor threw an exception on close."</span>);
+<a class="jxr_linenumber" name="L7734" href="#L7734">7734</a> 		}
+<a class="jxr_linenumber" name="L7735" href="#L7735">7735</a> 	}
+<a class="jxr_linenumber" name="L7736" href="#L7736">7736</a> 
+<a class="jxr_linenumber" name="L7737" href="#L7737">7737</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7738" href="#L7738">7738</a> <em class="jxr_javadoccomment">	 * Interceptor method called immediately after an HTTP response has been received.</em>
+<a class="jxr_linenumber" name="L7739" href="#L7739">7739</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7740" href="#L7740">7740</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7741" href="#L7741">7741</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to intercept the response and perform special modifications.</em>
+<a class="jxr_linenumber" name="L7742" href="#L7742">7742</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7743" href="#L7743">7743</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
+<a class="jxr_linenumber" name="L7744" href="#L7744">7744</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#interceptors(Object...)}</em>
+<a class="jxr_linenumber" name="L7745" href="#L7745">7745</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
 <a class="jxr_linenumber" name="L7746" href="#L7746">7746</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7747" href="#L7747">7747</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L7748" href="#L7748">7748</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#interceptors(Object...)}</em>
-<a class="jxr_linenumber" name="L7749" href="#L7749">7749</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L7750" href="#L7750">7750</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7751" href="#L7751">7751</a> <em class="jxr_javadoccomment">	 * @param req The HTTP request.</em>
-<a class="jxr_linenumber" name="L7752" href="#L7752">7752</a> <em class="jxr_javadoccomment">	 * @param res The HTTP response.</em>
-<a class="jxr_linenumber" name="L7753" href="#L7753">7753</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any of the interceptors threw an exception.</em>
-<a class="jxr_linenumber" name="L7754" href="#L7754">7754</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7755" href="#L7755">7755</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onCallConnect(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> req, <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a> res) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" hr [...]
-<a class="jxr_linenumber" name="L7756" href="#L7756">7756</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L7757" href="#L7757">7757</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rci : interceptors)
-<a class="jxr_linenumber" name="L7758" href="#L7758">7758</a> 				rci.onConnect(req, res);
-<a class="jxr_linenumber" name="L7759" href="#L7759">7759</a> 		} <strong class="jxr_keyword">catch</strong> (RuntimeException | <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
-<a class="jxr_linenumber" name="L7760" href="#L7760">7760</a> 			<strong class="jxr_keyword">throw</strong> e;
-<a class="jxr_linenumber" name="L7761" href="#L7761">7761</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="L7762" href="#L7762">7762</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(res, e, <span class="jxr_string">"Interceptor threw an exception on connect."</span>);
-<a class="jxr_linenumber" name="L7763" href="#L7763">7763</a> 		}
-<a class="jxr_linenumber" name="L7764" href="#L7764">7764</a> 	}
-<a class="jxr_linenumber" name="L7765" href="#L7765">7765</a> 
-<a class="jxr_linenumber" name="L7766" href="#L7766">7766</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7767" href="#L7767">7767</a> <em class="jxr_javadoccomment">	 * Interceptor method called immediately after the RestRequest object is created and all headers/query/form-data has been copied from the client.</em>
-<a class="jxr_linenumber" name="L7768" href="#L7768">7768</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7769" href="#L7769">7769</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7770" href="#L7770">7770</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to intercept the request and perform special modifications.</em>
+<a class="jxr_linenumber" name="L7747" href="#L7747">7747</a> <em class="jxr_javadoccomment">	 * @param req The HTTP request.</em>
+<a class="jxr_linenumber" name="L7748" href="#L7748">7748</a> <em class="jxr_javadoccomment">	 * @param res The HTTP response.</em>
+<a class="jxr_linenumber" name="L7749" href="#L7749">7749</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any of the interceptors threw an exception.</em>
+<a class="jxr_linenumber" name="L7750" href="#L7750">7750</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7751" href="#L7751">7751</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onCallConnect(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> req, <a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a> res) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" hr [...]
+<a class="jxr_linenumber" name="L7752" href="#L7752">7752</a> 		<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L7753" href="#L7753">7753</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rci : interceptors)
+<a class="jxr_linenumber" name="L7754" href="#L7754">7754</a> 				rci.onConnect(req, res);
+<a class="jxr_linenumber" name="L7755" href="#L7755">7755</a> 		} <strong class="jxr_keyword">catch</strong> (RuntimeException | <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
+<a class="jxr_linenumber" name="L7756" href="#L7756">7756</a> 			<strong class="jxr_keyword">throw</strong> e;
+<a class="jxr_linenumber" name="L7757" href="#L7757">7757</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="L7758" href="#L7758">7758</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(res, e, <span class="jxr_string">"Interceptor threw an exception on connect."</span>);
+<a class="jxr_linenumber" name="L7759" href="#L7759">7759</a> 		}
+<a class="jxr_linenumber" name="L7760" href="#L7760">7760</a> 	}
+<a class="jxr_linenumber" name="L7761" href="#L7761">7761</a> 
+<a class="jxr_linenumber" name="L7762" href="#L7762">7762</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7763" href="#L7763">7763</a> <em class="jxr_javadoccomment">	 * Interceptor method called immediately after the RestRequest object is created and all headers/query/form-data has been copied from the client.</em>
+<a class="jxr_linenumber" name="L7764" href="#L7764">7764</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7765" href="#L7765">7765</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7766" href="#L7766">7766</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to intercept the request and perform special modifications.</em>
+<a class="jxr_linenumber" name="L7767" href="#L7767">7767</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7768" href="#L7768">7768</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
+<a class="jxr_linenumber" name="L7769" href="#L7769">7769</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#interceptors(Object...)}</em>
+<a class="jxr_linenumber" name="L7770" href="#L7770">7770</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
 <a class="jxr_linenumber" name="L7771" href="#L7771">7771</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7772" href="#L7772">7772</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L7773" href="#L7773">7773</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#interceptors(Object...)}</em>
-<a class="jxr_linenumber" name="L7774" href="#L7774">7774</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L7775" href="#L7775">7775</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7776" href="#L7776">7776</a> <em class="jxr_javadoccomment">	 * @param req The HTTP request.</em>
-<a class="jxr_linenumber" name="L7777" href="#L7777">7777</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any of the interceptors threw an exception.</em>
-<a class="jxr_linenumber" name="L7778" href="#L7778">7778</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7779" href="#L7779">7779</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onCallInit(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> req) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> {
-<a class="jxr_linenumber" name="L7780" href="#L7780">7780</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L7781" href="#L7781">7781</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rci : interceptors)
-<a class="jxr_linenumber" name="L7782" href="#L7782">7782</a> 				rci.onInit(req);
-<a class="jxr_linenumber" name="L7783" href="#L7783">7783</a> 		} <strong class="jxr_keyword">catch</strong> (RuntimeException | <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
-<a class="jxr_linenumber" name="L7784" href="#L7784">7784</a> 			<strong class="jxr_keyword">throw</strong> e;
-<a class="jxr_linenumber" name="L7785" href="#L7785">7785</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
-<a class="jxr_linenumber" name="L7786" href="#L7786">7786</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, e, <span class="jxr_string">"Interceptor threw an exception on init."</span>);
-<a class="jxr_linenumber" name="L7787" href="#L7787">7787</a> 		}
-<a class="jxr_linenumber" name="L7788" href="#L7788">7788</a> 	}
-<a class="jxr_linenumber" name="L7789" href="#L7789">7789</a> 
-<a class="jxr_linenumber" name="L7790" href="#L7790">7790</a> 	@Override <em class="jxr_comment">/* Overridden from Context */</em>
-<a class="jxr_linenumber" name="L7791" href="#L7791">7791</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="L7792" href="#L7792">7792</a> 		<em class="jxr_comment">// @formatter:off</em>
-<a class="jxr_linenumber" name="L7793" href="#L7793">7793</a> 		<strong class="jxr_keyword">return</strong> filteredMap()
-<a class="jxr_linenumber" name="L7794" href="#L7794">7794</a> 			.append(<span class="jxr_string">"errorCodes"</span>, errorCodes)
-<a class="jxr_linenumber" name="L7795" href="#L7795">7795</a> 			.append(<span class="jxr_string">"executorService"</span>, executorService)
-<a class="jxr_linenumber" name="L7796" href="#L7796">7796</a> 			.append(<span class="jxr_string">"executorServiceShutdownOnClose"</span>, executorServiceShutdownOnClose)
-<a class="jxr_linenumber" name="L7797" href="#L7797">7797</a> 			.append(<span class="jxr_string">"headerData"</span>, headerData)
-<a class="jxr_linenumber" name="L7798" href="#L7798">7798</a> 			.append(<span class="jxr_string">"interceptors"</span>, interceptors)
-<a class="jxr_linenumber" name="L7799" href="#L7799">7799</a> 			.append(<span class="jxr_string">"keepHttpClientOpen"</span>, keepHttpClientOpen)
-<a class="jxr_linenumber" name="L7800" href="#L7800">7800</a> 			.append(<span class="jxr_string">"partParser"</span>, partParser)
-<a class="jxr_linenumber" name="L7801" href="#L7801">7801</a> 			.append(<span class="jxr_string">"partSerializer"</span>, partSerializer)
-<a class="jxr_linenumber" name="L7802" href="#L7802">7802</a> 			.append(<span class="jxr_string">"queryData"</span>, queryData)
-<a class="jxr_linenumber" name="L7803" href="#L7803">7803</a> 			.append(<span class="jxr_string">"rootUrl"</span>, rootUrl);
-<a class="jxr_linenumber" name="L7804" href="#L7804">7804</a> 		<em class="jxr_comment">// @formatter:on</em>
-<a class="jxr_linenumber" name="L7805" href="#L7805">7805</a> 	}
-<a class="jxr_linenumber" name="L7806" href="#L7806">7806</a> 
-<a class="jxr_linenumber" name="L7807" href="#L7807">7807</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7808" href="#L7808">7808</a> <em class="jxr_javadoccomment">	 * Perform an arbitrary request against the specified URI.</em>
+<a class="jxr_linenumber" name="L7772" href="#L7772">7772</a> <em class="jxr_javadoccomment">	 * @param req The HTTP request.</em>
+<a class="jxr_linenumber" name="L7773" href="#L7773">7773</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any of the interceptors threw an exception.</em>
+<a class="jxr_linenumber" name="L7774" href="#L7774">7774</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7775" href="#L7775">7775</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onCallInit(<a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> req) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> {
+<a class="jxr_linenumber" name="L7776" href="#L7776">7776</a> 		<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L7777" href="#L7777">7777</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> rci : interceptors)
+<a class="jxr_linenumber" name="L7778" href="#L7778">7778</a> 				rci.onInit(req);
+<a class="jxr_linenumber" name="L7779" href="#L7779">7779</a> 		} <strong class="jxr_keyword">catch</strong> (RuntimeException | <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
+<a class="jxr_linenumber" name="L7780" href="#L7780">7780</a> 			<strong class="jxr_keyword">throw</strong> e;
+<a class="jxr_linenumber" name="L7781" href="#L7781">7781</a> 		} <strong class="jxr_keyword">catch</strong> (Exception e) {
+<a class="jxr_linenumber" name="L7782" href="#L7782">7782</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, e, <span class="jxr_string">"Interceptor threw an exception on init."</span>);
+<a class="jxr_linenumber" name="L7783" href="#L7783">7783</a> 		}
+<a class="jxr_linenumber" name="L7784" href="#L7784">7784</a> 	}
+<a class="jxr_linenumber" name="L7785" href="#L7785">7785</a> 
+<a class="jxr_linenumber" name="L7786" href="#L7786">7786</a> 	@Override <em class="jxr_comment">/* Overridden from Context */</em>
+<a class="jxr_linenumber" name="L7787" href="#L7787">7787</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="L7788" href="#L7788">7788</a> 		<em class="jxr_comment">// @formatter:off</em>
+<a class="jxr_linenumber" name="L7789" href="#L7789">7789</a> 		<strong class="jxr_keyword">return</strong> filteredMap()
+<a class="jxr_linenumber" name="L7790" href="#L7790">7790</a> 			.append(<span class="jxr_string">"errorCodes"</span>, errorCodes)
+<a class="jxr_linenumber" name="L7791" href="#L7791">7791</a> 			.append(<span class="jxr_string">"executorService"</span>, executorService)
+<a class="jxr_linenumber" name="L7792" href="#L7792">7792</a> 			.append(<span class="jxr_string">"executorServiceShutdownOnClose"</span>, executorServiceShutdownOnClose)
+<a class="jxr_linenumber" name="L7793" href="#L7793">7793</a> 			.append(<span class="jxr_string">"headerData"</span>, headerData)
+<a class="jxr_linenumber" name="L7794" href="#L7794">7794</a> 			.append(<span class="jxr_string">"interceptors"</span>, interceptors)
+<a class="jxr_linenumber" name="L7795" href="#L7795">7795</a> 			.append(<span class="jxr_string">"keepHttpClientOpen"</span>, keepHttpClientOpen)
+<a class="jxr_linenumber" name="L7796" href="#L7796">7796</a> 			.append(<span class="jxr_string">"partParser"</span>, partParser)
+<a class="jxr_linenumber" name="L7797" href="#L7797">7797</a> 			.append(<span class="jxr_string">"partSerializer"</span>, partSerializer)
+<a class="jxr_linenumber" name="L7798" href="#L7798">7798</a> 			.append(<span class="jxr_string">"queryData"</span>, queryData)
+<a class="jxr_linenumber" name="L7799" href="#L7799">7799</a> 			.append(<span class="jxr_string">"rootUrl"</span>, rootUrl);
+<a class="jxr_linenumber" name="L7800" href="#L7800">7800</a> 		<em class="jxr_comment">// @formatter:on</em>
+<a class="jxr_linenumber" name="L7801" href="#L7801">7801</a> 	}
+<a class="jxr_linenumber" name="L7802" href="#L7802">7802</a> 
+<a class="jxr_linenumber" name="L7803" href="#L7803">7803</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7804" href="#L7804">7804</a> <em class="jxr_javadoccomment">	 * Perform an arbitrary request against the specified URI.</em>
+<a class="jxr_linenumber" name="L7805" href="#L7805">7805</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7806" href="#L7806">7806</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7807" href="#L7807">7807</a> <em class="jxr_javadoccomment">	 * All requests feed through this method so it can be used to intercept request creations and make modifications</em>
+<a class="jxr_linenumber" name="L7808" href="#L7808">7808</a> <em class="jxr_javadoccomment">	 * (such as add headers).</em>
 <a class="jxr_linenumber" name="L7809" href="#L7809">7809</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7810" href="#L7810">7810</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7811" href="#L7811">7811</a> <em class="jxr_javadoccomment">	 * All requests feed through this method so it can be used to intercept request creations and make modifications</em>
-<a class="jxr_linenumber" name="L7812" href="#L7812">7812</a> <em class="jxr_javadoccomment">	 * (such as add headers).</em>
-<a class="jxr_linenumber" name="L7813" href="#L7813">7813</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7814" href="#L7814">7814</a> <em class="jxr_javadoccomment">	 * @param op The operation that identifies the HTTP method, URL, and optional payload.</em>
-<a class="jxr_linenumber" name="L7815" href="#L7815">7815</a> <em class="jxr_javadoccomment">	 * @return</em>
-<a class="jxr_linenumber" name="L7816" href="#L7816">7816</a> <em class="jxr_javadoccomment">	 * 	A {@link RestRequest} object that can be further tailored before executing the request and getting the response</em>
-<a class="jxr_linenumber" name="L7817" href="#L7817">7817</a> <em class="jxr_javadoccomment">	 * 	as a parsed object.</em>
-<a class="jxr_linenumber" name="L7818" href="#L7818">7818</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any authentication errors occurred.</em>
-<a class="jxr_linenumber" name="L7819" href="#L7819">7819</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7820" href="#L7820">7820</a> 	<strong class="jxr_keyword">protected</strong> <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> request(<a name="RestOperation" href="../../../../../org/apache/juneau/rest/client/RestOperation.html#RestOperation">RestOperation</a> op) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/R [...]
-<a class="jxr_linenumber" name="L7821" href="#L7821">7821</a> 		<strong class="jxr_keyword">if</strong> (isClosed) {
-<a class="jxr_linenumber" name="L7822" href="#L7822">7822</a> 			<strong class="jxr_keyword">var</strong> e2 = (Exception)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L7823" href="#L7823">7823</a> 			<strong class="jxr_keyword">if</strong> (nn(closedStack)) {
-<a class="jxr_linenumber" name="L7824" href="#L7824">7824</a> 				e2 = <strong class="jxr_keyword">new</strong> Exception(<span class="jxr_string">"Creation stack:"</span>);
-<a class="jxr_linenumber" name="L7825" href="#L7825">7825</a> 				e2.setStackTrace(closedStack);
-<a class="jxr_linenumber" name="L7826" href="#L7826">7826</a> 				<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, e2, <span class="jxr_string">"RestClient.close() has already been called.  This client cannot be reused."</span>);
-<a class="jxr_linenumber" name="L7827" href="#L7827">7827</a> 			}
-<a class="jxr_linenumber" name="L7828" href="#L7828">7828</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>,
-<a class="jxr_linenumber" name="L7829" href="#L7829">7829</a> 				<span class="jxr_string">"RestClient.close() has already been called.  This client cannot be reused.  Closed location stack trace can be displayed by setting the system property 'org.apache.juneau.rest.client2.RestClient.trackCreation' to true."</span>);
-<a class="jxr_linenumber" name="L7830" href="#L7830">7830</a> 		}
+<a class="jxr_linenumber" name="L7810" href="#L7810">7810</a> <em class="jxr_javadoccomment">	 * @param op The operation that identifies the HTTP method, URL, and optional payload.</em>
+<a class="jxr_linenumber" name="L7811" href="#L7811">7811</a> <em class="jxr_javadoccomment">	 * @return</em>
+<a class="jxr_linenumber" name="L7812" href="#L7812">7812</a> <em class="jxr_javadoccomment">	 * 	A {@link RestRequest} object that can be further tailored before executing the request and getting the response</em>
+<a class="jxr_linenumber" name="L7813" href="#L7813">7813</a> <em class="jxr_javadoccomment">	 * 	as a parsed object.</em>
+<a class="jxr_linenumber" name="L7814" href="#L7814">7814</a> <em class="jxr_javadoccomment">	 * @throws RestCallException If any authentication errors occurred.</em>
+<a class="jxr_linenumber" name="L7815" href="#L7815">7815</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7816" href="#L7816">7816</a> 	<strong class="jxr_keyword">protected</strong> <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> request(<a name="RestOperation" href="../../../../../org/apache/juneau/rest/client/RestOperation.html#RestOperation">RestOperation</a> op) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/R [...]
+<a class="jxr_linenumber" name="L7817" href="#L7817">7817</a> 		<strong class="jxr_keyword">if</strong> (isClosed) {
+<a class="jxr_linenumber" name="L7818" href="#L7818">7818</a> 			<strong class="jxr_keyword">var</strong> e2 = (Exception)<strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L7819" href="#L7819">7819</a> 			<strong class="jxr_keyword">if</strong> (nn(closedStack)) {
+<a class="jxr_linenumber" name="L7820" href="#L7820">7820</a> 				e2 = <strong class="jxr_keyword">new</strong> Exception(<span class="jxr_string">"Creation stack:"</span>);
+<a class="jxr_linenumber" name="L7821" href="#L7821">7821</a> 				e2.setStackTrace(closedStack);
+<a class="jxr_linenumber" name="L7822" href="#L7822">7822</a> 				<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, e2, <span class="jxr_string">"RestClient.close() has already been called.  This client cannot be reused."</span>);
+<a class="jxr_linenumber" name="L7823" href="#L7823">7823</a> 			}
+<a class="jxr_linenumber" name="L7824" href="#L7824">7824</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, <strong class="jxr_keyword">null</strong>,
+<a class="jxr_linenumber" name="L7825" href="#L7825">7825</a> 				<span class="jxr_string">"RestClient.close() has already been called.  This client cannot be reused.  Closed location stack trace can be displayed by setting the system property 'org.apache.juneau.rest.client2.RestClient.trackCreation' to true."</span>);
+<a class="jxr_linenumber" name="L7826" href="#L7826">7826</a> 		}
+<a class="jxr_linenumber" name="L7827" href="#L7827">7827</a> 
+<a class="jxr_linenumber" name="L7828" href="#L7828">7828</a> 		<strong class="jxr_keyword">var</strong> req = createRequest(toURI(op.getUri(), rootUrl), op.getMethod(), op.hasContent());
+<a class="jxr_linenumber" name="L7829" href="#L7829">7829</a> 
+<a class="jxr_linenumber" name="L7830" href="#L7830">7830</a> 		onCallInit(req);
 <a class="jxr_linenumber" name="L7831" href="#L7831">7831</a> 
-<a class="jxr_linenumber" name="L7832" href="#L7832">7832</a> 		<strong class="jxr_keyword">var</strong> req = createRequest(toURI(op.getUri(), rootUrl), op.getMethod(), op.hasContent());
+<a class="jxr_linenumber" name="L7832" href="#L7832">7832</a> 		req.content(op.getContent());
 <a class="jxr_linenumber" name="L7833" href="#L7833">7833</a> 
-<a class="jxr_linenumber" name="L7834" href="#L7834">7834</a> 		onCallInit(req);
-<a class="jxr_linenumber" name="L7835" href="#L7835">7835</a> 
-<a class="jxr_linenumber" name="L7836" href="#L7836">7836</a> 		req.content(op.getContent());
-<a class="jxr_linenumber" name="L7837" href="#L7837">7837</a> 
-<a class="jxr_linenumber" name="L7838" href="#L7838">7838</a> 		<strong class="jxr_keyword">return</strong> req;
-<a class="jxr_linenumber" name="L7839" href="#L7839">7839</a> 	}
-<a class="jxr_linenumber" name="L7840" href="#L7840">7840</a> 
-<a class="jxr_linenumber" name="L7841" href="#L7841">7841</a> 	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L7842" href="#L7842">7842</a> <em class="jxr_javadoccomment">	 * Entrypoint for executing all requests and returning a response.</em>
-<a class="jxr_linenumber" name="L7843" href="#L7843">7843</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7844" href="#L7844">7844</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7845" href="#L7845">7845</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to provide specialized handling.</em>
-<a class="jxr_linenumber" name="L7846" href="#L7846">7846</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7847" href="#L7847">7847</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
-<a class="jxr_linenumber" name="L7848" href="#L7848">7848</a> <em class="jxr_javadoccomment">	 * The behavior of this method can also be modified by specifying a different {@link RestCallHandler}.</em>
+<a class="jxr_linenumber" name="L7834" href="#L7834">7834</a> 		<strong class="jxr_keyword">return</strong> req;
+<a class="jxr_linenumber" name="L7835" href="#L7835">7835</a> 	}
+<a class="jxr_linenumber" name="L7836" href="#L7836">7836</a> 
+<a class="jxr_linenumber" name="L7837" href="#L7837">7837</a> 	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L7838" href="#L7838">7838</a> <em class="jxr_javadoccomment">	 * Entrypoint for executing all requests and returning a response.</em>
+<a class="jxr_linenumber" name="L7839" href="#L7839">7839</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7840" href="#L7840">7840</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7841" href="#L7841">7841</a> <em class="jxr_javadoccomment">	 * Subclasses can override this method to provide specialized handling.</em>
+<a class="jxr_linenumber" name="L7842" href="#L7842">7842</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7843" href="#L7843">7843</a> <em class="jxr_javadoccomment">	 * &lt;p&gt;</em>
+<a class="jxr_linenumber" name="L7844" href="#L7844">7844</a> <em class="jxr_javadoccomment">	 * The behavior of this method can also be modified by specifying a different {@link RestCallHandler}.</em>
+<a class="jxr_linenumber" name="L7845" href="#L7845">7845</a> <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L7846" href="#L7846">7846</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
+<a class="jxr_linenumber" name="L7847" href="#L7847">7847</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#callHandler()}</em>
+<a class="jxr_linenumber" name="L7848" href="#L7848">7848</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
 <a class="jxr_linenumber" name="L7849" href="#L7849">7849</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7850" href="#L7850">7850</a> <em class="jxr_javadoccomment">	 * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L7851" href="#L7851">7851</a> <em class="jxr_javadoccomment">	 * 	&lt;li class='jm'&gt;{@link Builder#callHandler()}</em>
-<a class="jxr_linenumber" name="L7852" href="#L7852">7852</a> <em class="jxr_javadoccomment">	 * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L7853" href="#L7853">7853</a> <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L7854" href="#L7854">7854</a> <em class="jxr_javadoccomment">	 * @param target The target host for the request.</em>
-<a class="jxr_linenumber" name="L7855" href="#L7855">7855</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;Implementations may accept &lt;jk&gt;null&lt;/jk&gt; if they can still determine a route, for example to a default</em>
-<a class="jxr_linenumber" name="L7856" href="#L7856">7856</a> <em class="jxr_javadoccomment">	 * 		target or by inspecting the request.</em>
-<a class="jxr_linenumber" name="L7857" href="#L7857">7857</a> <em class="jxr_javadoccomment">	 * @param request The request to execute.</em>
-<a class="jxr_linenumber" name="L7858" href="#L7858">7858</a> <em class="jxr_javadoccomment">	 * @param context The context to use for the execution, or &lt;jk&gt;null&lt;/jk&gt; to use the default context.</em>
-<a class="jxr_linenumber" name="L7859" href="#L7859">7859</a> <em class="jxr_javadoccomment">	 * @return</em>
-<a class="jxr_linenumber" name="L7860" href="#L7860">7860</a> <em class="jxr_javadoccomment">	 * 	The response to the request.</em>
-<a class="jxr_linenumber" name="L7861" href="#L7861">7861</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;This is always a final response, never an intermediate response with an 1xx status code.</em>
-<a class="jxr_linenumber" name="L7862" href="#L7862">7862</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;Whether redirects or authentication challenges will be returned or handled automatically depends on the</em>
-<a class="jxr_linenumber" name="L7863" href="#L7863">7863</a> <em class="jxr_javadoccomment">	 * 		implementation and configuration of this client.</em>
-<a class="jxr_linenumber" name="L7864" href="#L7864">7864</a> <em class="jxr_javadoccomment">	 * @throws IOException In case of a problem or the connection was aborted.</em>
-<a class="jxr_linenumber" name="L7865" href="#L7865">7865</a> <em class="jxr_javadoccomment">	 * @throws ClientProtocolException In case of an http protocol error.</em>
-<a class="jxr_linenumber" name="L7866" href="#L7866">7866</a> <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L7867" href="#L7867">7867</a> 	<strong class="jxr_keyword">protected</strong> HttpResponse run(HttpHost target, HttpRequest request, HttpContext context) <strong class="jxr_keyword">throws</strong> ClientProtocolException, IOException {
-<a class="jxr_linenumber" name="L7868" href="#L7868">7868</a> 		<strong class="jxr_keyword">return</strong> callHandler.run(target, request, context);
-<a class="jxr_linenumber" name="L7869" href="#L7869">7869</a> 	}
-<a class="jxr_linenumber" name="L7870" href="#L7870">7870</a> 
-<a class="jxr_linenumber" name="L7871" href="#L7871">7871</a> 	Object executeRemote(Class&lt;?&gt; interfaceClass, <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> rc, Method method, <a name="RemoteOperationMeta" href="../../../../../org/apache/juneau/rest/client/remote/RemoteOperationMeta.html#RemoteOperationMeta">RemoteOperationMeta</a> rom) <strong class="jxr_keyword">throws</strong> Throwable {
-<a class="jxr_linenumber" name="L7872" href="#L7872">7872</a> 		RemoteOperationReturn ror = rom.getReturns();
-<a class="jxr_linenumber" name="L7873" href="#L7873">7873</a> 
-<a class="jxr_linenumber" name="L7874" href="#L7874">7874</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L7875" href="#L7875">7875</a> 			<strong class="jxr_keyword">var</strong> ret = (Object)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L7876" href="#L7876">7876</a> 			<strong class="jxr_keyword">var</strong> res = (<a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a>)<strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L7877" href="#L7877">7877</a> 			rc.rethrow(RuntimeException.<strong class="jxr_keyword">class</strong>);
-<a class="jxr_linenumber" name="L7878" href="#L7878">7878</a> 			rom.forEachException(x -&gt; rc.rethrow(x));
-<a class="jxr_linenumber" name="L7879" href="#L7879">7879</a> 			<strong class="jxr_keyword">if</strong> (ror.getReturnValue() == RemoteReturn.NONE) {
-<a class="jxr_linenumber" name="L7880" href="#L7880">7880</a> 				res = rc.complete();
-<a class="jxr_linenumber" name="L7881" href="#L7881">7881</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ror.getReturnValue() == RemoteReturn.STATUS) {
-<a class="jxr_linenumber" name="L7882" href="#L7882">7882</a> 				res = rc.complete();
-<a class="jxr_linenumber" name="L7883" href="#L7883">7883</a> 				<strong class="jxr_keyword">int</strong> returnCode = res.getStatusCode();
-<a class="jxr_linenumber" name="L7884" href="#L7884">7884</a> 				<strong class="jxr_keyword">var</strong> rt = method.getReturnType();
-<a class="jxr_linenumber" name="L7885" href="#L7885">7885</a> 				<strong class="jxr_keyword">if</strong> (rt == Integer.<strong class="jxr_keyword">class</strong> || rt == <strong class="jxr_keyword">int</strong>.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L7886" href="#L7886">7886</a> 					ret = returnCode;
-<a class="jxr_linenumber" name="L7887" href="#L7887">7887</a> 				<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rt == Boolean.<strong class="jxr_keyword">class</strong> || rt == <strong class="jxr_keyword">boolean</strong>.<strong class="jxr_keyword">class</strong>)
-<a class="jxr_linenumber" name="L7888" href="#L7888">7888</a> 					ret = returnCode &lt; 400;
-<a class="jxr_linenumber" name="L7889" href="#L7889">7889</a> 				<strong class="jxr_keyword">else</strong>
-<a class="jxr_linenumber" name="L7890" href="#L7890">7890</a> 					<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(res, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"Invalid return type on method annotated with @RemoteOp(returns=RemoteReturn.STATUS).  Only integer and booleans types are va [...]
-<a class="jxr_linenumber" name="L7891" href="#L7891">7891</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ror.getReturnValue() == RemoteReturn.BEAN) {
-<a class="jxr_linenumber" name="L7892" href="#L7892">7892</a> 				rc.ignoreErrors();
-<a class="jxr_linenumber" name="L7893" href="#L7893">7893</a> 				res = rc.run();
-<a class="jxr_linenumber" name="L7894" href="#L7894">7894</a> 				ret = res.as(ror.getResponseBeanMeta());
-<a class="jxr_linenumber" name="L7895" href="#L7895">7895</a> 			} <strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L7896" href="#L7896">7896</a> 				<strong class="jxr_keyword">var</strong> rt = method.getReturnType();
-<a class="jxr_linenumber" name="L7897" href="#L7897">7897</a> 				<strong class="jxr_keyword">if</strong> (Throwable.<strong class="jxr_keyword">class</strong>.isAssignableFrom(rt))
-<a class="jxr_linenumber" name="L7898" href="#L7898">7898</a> 					rc.ignoreErrors();
-<a class="jxr_linenumber" name="L7899" href="#L7899">7899</a> 				res = rc.run();
-<a class="jxr_linenumber" name="L7900" href="#L7900">7900</a> 				Object v = res.getContent().as(ror.getReturnType());
-<a class="jxr_linenumber" name="L7901" href="#L7901">7901</a> 				<strong class="jxr_keyword">if</strong> (v == <strong class="jxr_keyword">null</strong> &amp;&amp; rt.isPrimitive())
-<a class="jxr_linenumber" name="L7902" href="#L7902">7902</a> 					v = ClassInfo.of(rt).getPrimitiveDefault();
-<a class="jxr_linenumber" name="L7903" href="#L7903">7903</a> 				ret = v;
-<a class="jxr_linenumber" name="L7904" href="#L7904">7904</a> 			}
-<a class="jxr_linenumber" name="L7905" href="#L7905">7905</a> 			<strong class="jxr_keyword">return</strong> ret;
-<a class="jxr_linenumber" name="L7906" href="#L7906">7906</a> 		} <strong class="jxr_keyword">catch</strong> (<a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
-<a class="jxr_linenumber" name="L7907" href="#L7907">7907</a> 			Throwable t = e.getCause();
-<a class="jxr_linenumber" name="L7908" href="#L7908">7908</a> 			<strong class="jxr_keyword">if</strong> (t instanceof RuntimeException t2)
-<a class="jxr_linenumber" name="L7909" href="#L7909">7909</a> 				<strong class="jxr_keyword">throw</strong> t2;
-<a class="jxr_linenumber" name="L7910" href="#L7910">7910</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> t3 : method.getExceptionTypes())
-<a class="jxr_linenumber" name="L7911" href="#L7911">7911</a> 				<strong class="jxr_keyword">if</strong> (t3.isInstance(t))
-<a class="jxr_linenumber" name="L7912" href="#L7912">7912</a> 					<strong class="jxr_keyword">throw</strong> t;
-<a class="jxr_linenumber" name="L7913" href="#L7913">7913</a> 			<strong class="jxr_keyword">throw</strong> toRex(e);
-<a class="jxr_linenumber" name="L7914" href="#L7914">7914</a> 		}
-<a class="jxr_linenumber" name="L7915" href="#L7915">7915</a> 	}
-<a class="jxr_linenumber" name="L7916" href="#L7916">7916</a> 
-<a class="jxr_linenumber" name="L7917" href="#L7917">7917</a> 	ExecutorService getExecutorService() {
-<a class="jxr_linenumber" name="L7918" href="#L7918">7918</a> 		<strong class="jxr_keyword">if</strong> (nn(executorService))
-<a class="jxr_linenumber" name="L7919" href="#L7919">7919</a> 			<strong class="jxr_keyword">return</strong> executorService;
-<a class="jxr_linenumber" name="L7920" href="#L7920">7920</a> 		<strong class="jxr_keyword">synchronized</strong> (<strong class="jxr_keyword">this</strong>) {
-<a class="jxr_linenumber" name="L7921" href="#L7921">7921</a> 			executorService = <strong class="jxr_keyword">new</strong> ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, <strong class="jxr_keyword">new</strong> ArrayBlockingQueue&lt;&gt;(10));
-<a class="jxr_linenumber" name="L7922" href="#L7922">7922</a> 			<strong class="jxr_keyword">return</strong> executorService;
-<a class="jxr_linenumber" name="L7923" href="#L7923">7923</a> 		}
-<a class="jxr_linenumber" name="L7924" href="#L7924">7924</a> 	}
-<a class="jxr_linenumber" name="L7925" href="#L7925">7925</a> 
-<a class="jxr_linenumber" name="L7926" href="#L7926">7926</a> 	@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
-<a class="jxr_linenumber" name="L7927" href="#L7927">7927</a> 	&lt;T <strong class="jxr_keyword">extends</strong> Context&gt; T getInstance(Class&lt;T&gt; c) {
-<a class="jxr_linenumber" name="L7928" href="#L7928">7928</a> 		<strong class="jxr_keyword">var</strong> o = requestContexts.get(c);
-<a class="jxr_linenumber" name="L7929" href="#L7929">7929</a> 		<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
-<a class="jxr_linenumber" name="L7930" href="#L7930">7930</a> 			<strong class="jxr_keyword">if</strong> (Serializer.<strong class="jxr_keyword">class</strong>.isAssignableFrom(c)) {
-<a class="jxr_linenumber" name="L7931" href="#L7931">7931</a> 				o = Serializer.createSerializerBuilder((Class&lt;? <strong class="jxr_keyword">extends</strong> Serializer&gt;)c).beanContext(getBeanContext()).build();
-<a class="jxr_linenumber" name="L7932" href="#L7932">7932</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (Parser.<strong class="jxr_keyword">class</strong>.isAssignableFrom(c)) {
-<a class="jxr_linenumber" name="L7933" href="#L7933">7933</a> 				o = Parser.createParserBuilder((Class&lt;? <strong class="jxr_keyword">extends</strong> Parser&gt;)c).beanContext(getBeanContext()).build();
-<a class="jxr_linenumber" name="L7934" href="#L7934">7934</a> 			}
-<a class="jxr_linenumber" name="L7935" href="#L7935">7935</a> 			requestContexts.put(c, o);
-<a class="jxr_linenumber" name="L7936" href="#L7936">7936</a> 		}
-<a class="jxr_linenumber" name="L7937" href="#L7937">7937</a> 		<strong class="jxr_keyword">return</strong> (T)o;
-<a class="jxr_linenumber" name="L7938" href="#L7938">7938</a> 	}
-<a class="jxr_linenumber" name="L7939" href="#L7939">7939</a> 
-<a class="jxr_linenumber" name="L7940" href="#L7940">7940</a> 	<em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L7941" href="#L7941">7941</a> <em class="jxr_comment">	 * Returns the parser that best matches the specified content type.</em>
-<a class="jxr_linenumber" name="L7942" href="#L7942">7942</a> <em class="jxr_comment">	 * If no match found or the content type is null, returns the parser in the list if it's a list of one.</em>
-<a class="jxr_linenumber" name="L7943" href="#L7943">7943</a> <em class="jxr_comment">	 * Returns null if no parsers are defined.</em>
-<a class="jxr_linenumber" name="L7944" href="#L7944">7944</a> <em class="jxr_comment">	 */</em>
-<a class="jxr_linenumber" name="L7945" href="#L7945">7945</a> 	Parser getMatchingParser(String mediaType) {
-<a class="jxr_linenumber" name="L7946" href="#L7946">7946</a> 		<strong class="jxr_keyword">if</strong> (parsers.isEmpty())
-<a class="jxr_linenumber" name="L7947" href="#L7947">7947</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L7948" href="#L7948">7948</a> 		<strong class="jxr_keyword">if</strong> (nn(mediaType)) {
-<a class="jxr_linenumber" name="L7949" href="#L7949">7949</a> 			<strong class="jxr_keyword">var</strong> p = parsers.getParser(mediaType);
-<a class="jxr_linenumber" name="L7950" href="#L7950">7950</a> 			<strong class="jxr_keyword">if</strong> (nn(p))
-<a class="jxr_linenumber" name="L7951" href="#L7951">7951</a> 				<strong class="jxr_keyword">return</strong> p;
-<a class="jxr_linenumber" name="L7952" href="#L7952">7952</a> 		}
-<a class="jxr_linenumber" name="L7953" href="#L7953">7953</a> 		<strong class="jxr_keyword">var</strong> l = parsers.getParsers();
-<a class="jxr_linenumber" name="L7954" href="#L7954">7954</a> 		<strong class="jxr_keyword">return</strong> (l.size() == 1 ? l.get(0) : <strong class="jxr_keyword">null</strong>);
-<a class="jxr_linenumber" name="L7955" href="#L7955">7955</a> 	}
-<a class="jxr_linenumber" name="L7956" href="#L7956">7956</a> 
-<a class="jxr_linenumber" name="L7957" href="#L7957">7957</a> 	<em class="jxr_comment">/*</em>
-<a class="jxr_linenumber" name="L7958" href="#L7958">7958</a> <em class="jxr_comment">	 * Returns the serializer that best matches the specified content type.</em>
-<a class="jxr_linenumber" name="L7959" href="#L7959">7959</a> <em class="jxr_comment">	 * If no match found or the content type is null, returns the serializer in the list if it's a list of one.</em>
-<a class="jxr_linenumber" name="L7960" href="#L7960">7960</a> <em class="jxr_comment">	 * Returns null if no serializers are defined.</em>
-<a class="jxr_linenumber" name="L7961" href="#L7961">7961</a> <em class="jxr_comment">	 */</em>
-<a class="jxr_linenumber" name="L7962" href="#L7962">7962</a> 	Serializer getMatchingSerializer(String mediaType) {
-<a class="jxr_linenumber" name="L7963" href="#L7963">7963</a> 		<strong class="jxr_keyword">if</strong> (serializers.isEmpty())
-<a class="jxr_linenumber" name="L7964" href="#L7964">7964</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
-<a class="jxr_linenumber" name="L7965" href="#L7965">7965</a> 		<strong class="jxr_keyword">if</strong> (nn(mediaType)) {
-<a class="jxr_linenumber" name="L7966" href="#L7966">7966</a> 			<strong class="jxr_keyword">var</strong> s = serializers.getSerializer(mediaType);
-<a class="jxr_linenumber" name="L7967" href="#L7967">7967</a> 			<strong class="jxr_keyword">if</strong> (nn(s))
-<a class="jxr_linenumber" name="L7968" href="#L7968">7968</a> 				<strong class="jxr_keyword">return</strong> s;
-<a class="jxr_linenumber" name="L7969" href="#L7969">7969</a> 		}
-<a class="jxr_linenumber" name="L7970" href="#L7970">7970</a> 		<strong class="jxr_keyword">var</strong> l = serializers.getSerializers();
-<a class="jxr_linenumber" name="L7971" href="#L7971">7971</a> 		<strong class="jxr_keyword">return</strong> (l.size() == 1 ? l.get(0) : <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L7850" href="#L7850">7850</a> <em class="jxr_javadoccomment">	 * @param target The target host for the request.</em>
+<a class="jxr_linenumber" name="L7851" href="#L7851">7851</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;Implementations may accept &lt;jk&gt;null&lt;/jk&gt; if they can still determine a route, for example to a default</em>
+<a class="jxr_linenumber" name="L7852" href="#L7852">7852</a> <em class="jxr_javadoccomment">	 * 		target or by inspecting the request.</em>
+<a class="jxr_linenumber" name="L7853" href="#L7853">7853</a> <em class="jxr_javadoccomment">	 * @param request The request to execute.</em>
+<a class="jxr_linenumber" name="L7854" href="#L7854">7854</a> <em class="jxr_javadoccomment">	 * @param context The context to use for the execution, or &lt;jk&gt;null&lt;/jk&gt; to use the default context.</em>
+<a class="jxr_linenumber" name="L7855" href="#L7855">7855</a> <em class="jxr_javadoccomment">	 * @return</em>
+<a class="jxr_linenumber" name="L7856" href="#L7856">7856</a> <em class="jxr_javadoccomment">	 * 	The response to the request.</em>
+<a class="jxr_linenumber" name="L7857" href="#L7857">7857</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;This is always a final response, never an intermediate response with an 1xx status code.</em>
+<a class="jxr_linenumber" name="L7858" href="#L7858">7858</a> <em class="jxr_javadoccomment">	 * 	&lt;br&gt;Whether redirects or authentication challenges will be returned or handled automatically depends on the</em>
+<a class="jxr_linenumber" name="L7859" href="#L7859">7859</a> <em class="jxr_javadoccomment">	 * 		implementation and configuration of this client.</em>
+<a class="jxr_linenumber" name="L7860" href="#L7860">7860</a> <em class="jxr_javadoccomment">	 * @throws IOException In case of a problem or the connection was aborted.</em>
+<a class="jxr_linenumber" name="L7861" href="#L7861">7861</a> <em class="jxr_javadoccomment">	 * @throws ClientProtocolException In case of an http protocol error.</em>
+<a class="jxr_linenumber" name="L7862" href="#L7862">7862</a> <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L7863" href="#L7863">7863</a> 	<strong class="jxr_keyword">protected</strong> HttpResponse run(HttpHost target, HttpRequest request, HttpContext context) <strong class="jxr_keyword">throws</strong> ClientProtocolException, IOException {
+<a class="jxr_linenumber" name="L7864" href="#L7864">7864</a> 		<strong class="jxr_keyword">return</strong> callHandler.run(target, request, context);
+<a class="jxr_linenumber" name="L7865" href="#L7865">7865</a> 	}
+<a class="jxr_linenumber" name="L7866" href="#L7866">7866</a> 
+<a class="jxr_linenumber" name="L7867" href="#L7867">7867</a> 	Object executeRemote(Class&lt;?&gt; interfaceClass, <a name="RestRequest" href="../../../../../org/apache/juneau/rest/client/RestRequest.html#RestRequest">RestRequest</a> rc, Method method, <a name="RemoteOperationMeta" href="../../../../../org/apache/juneau/rest/client/remote/RemoteOperationMeta.html#RemoteOperationMeta">RemoteOperationMeta</a> rom) <strong class="jxr_keyword">throws</strong> Throwable {
+<a class="jxr_linenumber" name="L7868" href="#L7868">7868</a> 		RemoteOperationReturn ror = rom.getReturns();
+<a class="jxr_linenumber" name="L7869" href="#L7869">7869</a> 
+<a class="jxr_linenumber" name="L7870" href="#L7870">7870</a> 		<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L7871" href="#L7871">7871</a> 			<strong class="jxr_keyword">var</strong> ret = (Object)<strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L7872" href="#L7872">7872</a> 			<strong class="jxr_keyword">var</strong> res = (<a name="RestResponse" href="../../../../../org/apache/juneau/rest/client/RestResponse.html#RestResponse">RestResponse</a>)<strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L7873" href="#L7873">7873</a> 			rc.rethrow(RuntimeException.<strong class="jxr_keyword">class</strong>);
+<a class="jxr_linenumber" name="L7874" href="#L7874">7874</a> 			rom.forEachException(x -&gt; rc.rethrow(x));
+<a class="jxr_linenumber" name="L7875" href="#L7875">7875</a> 			<strong class="jxr_keyword">if</strong> (ror.getReturnValue() == RemoteReturn.NONE) {
+<a class="jxr_linenumber" name="L7876" href="#L7876">7876</a> 				res = rc.complete();
+<a class="jxr_linenumber" name="L7877" href="#L7877">7877</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ror.getReturnValue() == RemoteReturn.STATUS) {
+<a class="jxr_linenumber" name="L7878" href="#L7878">7878</a> 				res = rc.complete();
+<a class="jxr_linenumber" name="L7879" href="#L7879">7879</a> 				<strong class="jxr_keyword">int</strong> returnCode = res.getStatusCode();
+<a class="jxr_linenumber" name="L7880" href="#L7880">7880</a> 				<strong class="jxr_keyword">var</strong> rt = method.getReturnType();
+<a class="jxr_linenumber" name="L7881" href="#L7881">7881</a> 				<strong class="jxr_keyword">if</strong> (rt == Integer.<strong class="jxr_keyword">class</strong> || rt == <strong class="jxr_keyword">int</strong>.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L7882" href="#L7882">7882</a> 					ret = returnCode;
+<a class="jxr_linenumber" name="L7883" href="#L7883">7883</a> 				<strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (rt == Boolean.<strong class="jxr_keyword">class</strong> || rt == <strong class="jxr_keyword">boolean</strong>.<strong class="jxr_keyword">class</strong>)
+<a class="jxr_linenumber" name="L7884" href="#L7884">7884</a> 					ret = returnCode &lt; 400;
+<a class="jxr_linenumber" name="L7885" href="#L7885">7885</a> 				<strong class="jxr_keyword">else</strong>
+<a class="jxr_linenumber" name="L7886" href="#L7886">7886</a> 					<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(res, <strong class="jxr_keyword">null</strong>, <span class="jxr_string">"Invalid return type on method annotated with @RemoteOp(returns=RemoteReturn.STATUS).  Only integer and booleans types are va [...]
+<a class="jxr_linenumber" name="L7887" href="#L7887">7887</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (ror.getReturnValue() == RemoteReturn.BEAN) {
+<a class="jxr_linenumber" name="L7888" href="#L7888">7888</a> 				rc.ignoreErrors();
+<a class="jxr_linenumber" name="L7889" href="#L7889">7889</a> 				res = rc.run();
+<a class="jxr_linenumber" name="L7890" href="#L7890">7890</a> 				ret = res.as(ror.getResponseBeanMeta());
+<a class="jxr_linenumber" name="L7891" href="#L7891">7891</a> 			} <strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L7892" href="#L7892">7892</a> 				<strong class="jxr_keyword">var</strong> rt = method.getReturnType();
+<a class="jxr_linenumber" name="L7893" href="#L7893">7893</a> 				<strong class="jxr_keyword">if</strong> (Throwable.<strong class="jxr_keyword">class</strong>.isAssignableFrom(rt))
+<a class="jxr_linenumber" name="L7894" href="#L7894">7894</a> 					rc.ignoreErrors();
+<a class="jxr_linenumber" name="L7895" href="#L7895">7895</a> 				res = rc.run();
+<a class="jxr_linenumber" name="L7896" href="#L7896">7896</a> 				Object v = res.getContent().as(ror.getReturnType());
+<a class="jxr_linenumber" name="L7897" href="#L7897">7897</a> 				<strong class="jxr_keyword">if</strong> (v == <strong class="jxr_keyword">null</strong> &amp;&amp; rt.isPrimitive())
+<a class="jxr_linenumber" name="L7898" href="#L7898">7898</a> 					v = ClassInfo.of(rt).getPrimitiveDefault();
+<a class="jxr_linenumber" name="L7899" href="#L7899">7899</a> 				ret = v;
+<a class="jxr_linenumber" name="L7900" href="#L7900">7900</a> 			}
+<a class="jxr_linenumber" name="L7901" href="#L7901">7901</a> 			<strong class="jxr_keyword">return</strong> ret;
+<a class="jxr_linenumber" name="L7902" href="#L7902">7902</a> 		} <strong class="jxr_keyword">catch</strong> (<a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> e) {
+<a class="jxr_linenumber" name="L7903" href="#L7903">7903</a> 			Throwable t = e.getCause();
+<a class="jxr_linenumber" name="L7904" href="#L7904">7904</a> 			<strong class="jxr_keyword">if</strong> (t instanceof RuntimeException t2)
+<a class="jxr_linenumber" name="L7905" href="#L7905">7905</a> 				<strong class="jxr_keyword">throw</strong> t2;
+<a class="jxr_linenumber" name="L7906" href="#L7906">7906</a> 			<strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">var</strong> t3 : method.getExceptionTypes())
+<a class="jxr_linenumber" name="L7907" href="#L7907">7907</a> 				<strong class="jxr_keyword">if</strong> (t3.isInstance(t))
+<a class="jxr_linenumber" name="L7908" href="#L7908">7908</a> 					<strong class="jxr_keyword">throw</strong> t;
+<a class="jxr_linenumber" name="L7909" href="#L7909">7909</a> 			<strong class="jxr_keyword">throw</strong> toRex(e);
+<a class="jxr_linenumber" name="L7910" href="#L7910">7910</a> 		}
+<a class="jxr_linenumber" name="L7911" href="#L7911">7911</a> 	}
+<a class="jxr_linenumber" name="L7912" href="#L7912">7912</a> 
+<a class="jxr_linenumber" name="L7913" href="#L7913">7913</a> 	ExecutorService getExecutorService() {
+<a class="jxr_linenumber" name="L7914" href="#L7914">7914</a> 		<strong class="jxr_keyword">if</strong> (nn(executorService))
+<a class="jxr_linenumber" name="L7915" href="#L7915">7915</a> 			<strong class="jxr_keyword">return</strong> executorService;
+<a class="jxr_linenumber" name="L7916" href="#L7916">7916</a> 		<strong class="jxr_keyword">synchronized</strong> (<strong class="jxr_keyword">this</strong>) {
+<a class="jxr_linenumber" name="L7917" href="#L7917">7917</a> 			executorService = <strong class="jxr_keyword">new</strong> ThreadPoolExecutor(1, 1, 30, TimeUnit.SECONDS, <strong class="jxr_keyword">new</strong> ArrayBlockingQueue&lt;&gt;(10));
+<a class="jxr_linenumber" name="L7918" href="#L7918">7918</a> 			<strong class="jxr_keyword">return</strong> executorService;
+<a class="jxr_linenumber" name="L7919" href="#L7919">7919</a> 		}
+<a class="jxr_linenumber" name="L7920" href="#L7920">7920</a> 	}
+<a class="jxr_linenumber" name="L7921" href="#L7921">7921</a> 
+<a class="jxr_linenumber" name="L7922" href="#L7922">7922</a> 	@SuppressWarnings(<span class="jxr_string">"unchecked"</span>)
+<a class="jxr_linenumber" name="L7923" href="#L7923">7923</a> 	&lt;T <strong class="jxr_keyword">extends</strong> Context&gt; T getInstance(Class&lt;T&gt; c) {
+<a class="jxr_linenumber" name="L7924" href="#L7924">7924</a> 		<strong class="jxr_keyword">var</strong> o = requestContexts.get(c);
+<a class="jxr_linenumber" name="L7925" href="#L7925">7925</a> 		<strong class="jxr_keyword">if</strong> (o == <strong class="jxr_keyword">null</strong>) {
+<a class="jxr_linenumber" name="L7926" href="#L7926">7926</a> 			<strong class="jxr_keyword">if</strong> (Serializer.<strong class="jxr_keyword">class</strong>.isAssignableFrom(c)) {
+<a class="jxr_linenumber" name="L7927" href="#L7927">7927</a> 				o = Serializer.createSerializerBuilder((Class&lt;? <strong class="jxr_keyword">extends</strong> Serializer&gt;)c).beanContext(getBeanContext()).build();
+<a class="jxr_linenumber" name="L7928" href="#L7928">7928</a> 			} <strong class="jxr_keyword">else</strong> <strong class="jxr_keyword">if</strong> (Parser.<strong class="jxr_keyword">class</strong>.isAssignableFrom(c)) {
+<a class="jxr_linenumber" name="L7929" href="#L7929">7929</a> 				o = Parser.createParserBuilder((Class&lt;? <strong class="jxr_keyword">extends</strong> Parser&gt;)c).beanContext(getBeanContext()).build();
+<a class="jxr_linenumber" name="L7930" href="#L7930">7930</a> 			}
+<a class="jxr_linenumber" name="L7931" href="#L7931">7931</a> 			requestContexts.put(c, o);
+<a class="jxr_linenumber" name="L7932" href="#L7932">7932</a> 		}
+<a class="jxr_linenumber" name="L7933" href="#L7933">7933</a> 		<strong class="jxr_keyword">return</strong> (T)o;
+<a class="jxr_linenumber" name="L7934" href="#L7934">7934</a> 	}
+<a class="jxr_linenumber" name="L7935" href="#L7935">7935</a> 
+<a class="jxr_linenumber" name="L7936" href="#L7936">7936</a> 	<em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="L7937" href="#L7937">7937</a> <em class="jxr_comment">	 * Returns the parser that best matches the specified content type.</em>
+<a class="jxr_linenumber" name="L7938" href="#L7938">7938</a> <em class="jxr_comment">	 * If no match found or the content type is null, returns the parser in the list if it's a list of one.</em>
+<a class="jxr_linenumber" name="L7939" href="#L7939">7939</a> <em class="jxr_comment">	 * Returns null if no parsers are defined.</em>
+<a class="jxr_linenumber" name="L7940" href="#L7940">7940</a> <em class="jxr_comment">	 */</em>
+<a class="jxr_linenumber" name="L7941" href="#L7941">7941</a> 	Parser getMatchingParser(String mediaType) {
+<a class="jxr_linenumber" name="L7942" href="#L7942">7942</a> 		<strong class="jxr_keyword">if</strong> (parsers.isEmpty())
+<a class="jxr_linenumber" name="L7943" href="#L7943">7943</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L7944" href="#L7944">7944</a> 		<strong class="jxr_keyword">if</strong> (nn(mediaType)) {
+<a class="jxr_linenumber" name="L7945" href="#L7945">7945</a> 			<strong class="jxr_keyword">var</strong> p = parsers.getParser(mediaType);
+<a class="jxr_linenumber" name="L7946" href="#L7946">7946</a> 			<strong class="jxr_keyword">if</strong> (nn(p))
+<a class="jxr_linenumber" name="L7947" href="#L7947">7947</a> 				<strong class="jxr_keyword">return</strong> p;
+<a class="jxr_linenumber" name="L7948" href="#L7948">7948</a> 		}
+<a class="jxr_linenumber" name="L7949" href="#L7949">7949</a> 		<strong class="jxr_keyword">var</strong> l = parsers.getParsers();
+<a class="jxr_linenumber" name="L7950" href="#L7950">7950</a> 		<strong class="jxr_keyword">return</strong> (l.size() == 1 ? l.get(0) : <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L7951" href="#L7951">7951</a> 	}
+<a class="jxr_linenumber" name="L7952" href="#L7952">7952</a> 
+<a class="jxr_linenumber" name="L7953" href="#L7953">7953</a> 	<em class="jxr_comment">/*</em>
+<a class="jxr_linenumber" name="L7954" href="#L7954">7954</a> <em class="jxr_comment">	 * Returns the serializer that best matches the specified content type.</em>
+<a class="jxr_linenumber" name="L7955" href="#L7955">7955</a> <em class="jxr_comment">	 * If no match found or the content type is null, returns the serializer in the list if it's a list of one.</em>
+<a class="jxr_linenumber" name="L7956" href="#L7956">7956</a> <em class="jxr_comment">	 * Returns null if no serializers are defined.</em>
+<a class="jxr_linenumber" name="L7957" href="#L7957">7957</a> <em class="jxr_comment">	 */</em>
+<a class="jxr_linenumber" name="L7958" href="#L7958">7958</a> 	Serializer getMatchingSerializer(String mediaType) {
+<a class="jxr_linenumber" name="L7959" href="#L7959">7959</a> 		<strong class="jxr_keyword">if</strong> (serializers.isEmpty())
+<a class="jxr_linenumber" name="L7960" href="#L7960">7960</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">null</strong>;
+<a class="jxr_linenumber" name="L7961" href="#L7961">7961</a> 		<strong class="jxr_keyword">if</strong> (nn(mediaType)) {
+<a class="jxr_linenumber" name="L7962" href="#L7962">7962</a> 			<strong class="jxr_keyword">var</strong> s = serializers.getSerializer(mediaType);
+<a class="jxr_linenumber" name="L7963" href="#L7963">7963</a> 			<strong class="jxr_keyword">if</strong> (nn(s))
+<a class="jxr_linenumber" name="L7964" href="#L7964">7964</a> 				<strong class="jxr_keyword">return</strong> s;
+<a class="jxr_linenumber" name="L7965" href="#L7965">7965</a> 		}
+<a class="jxr_linenumber" name="L7966" href="#L7966">7966</a> 		<strong class="jxr_keyword">var</strong> l = serializers.getSerializers();
+<a class="jxr_linenumber" name="L7967" href="#L7967">7967</a> 		<strong class="jxr_keyword">return</strong> (l.size() == 1 ? l.get(0) : <strong class="jxr_keyword">null</strong>);
+<a class="jxr_linenumber" name="L7968" href="#L7968">7968</a> 	}
+<a class="jxr_linenumber" name="L7969" href="#L7969">7969</a> 
+<a class="jxr_linenumber" name="L7970" href="#L7970">7970</a> 	<strong class="jxr_keyword">boolean</strong> hasParsers() {
+<a class="jxr_linenumber" name="L7971" href="#L7971">7971</a> 		<strong class="jxr_keyword">return</strong> ! parsers.getParsers().isEmpty();
 <a class="jxr_linenumber" name="L7972" href="#L7972">7972</a> 	}
 <a class="jxr_linenumber" name="L7973" href="#L7973">7973</a> 
-<a class="jxr_linenumber" name="L7974" href="#L7974">7974</a> 	<strong class="jxr_keyword">boolean</strong> hasParsers() {
-<a class="jxr_linenumber" name="L7975" href="#L7975">7975</a> 		<strong class="jxr_keyword">return</strong> ! parsers.getParsers().isEmpty();
+<a class="jxr_linenumber" name="L7974" href="#L7974">7974</a> 	<strong class="jxr_keyword">boolean</strong> hasSerializers() {
+<a class="jxr_linenumber" name="L7975" href="#L7975">7975</a> 		<strong class="jxr_keyword">return</strong> ! serializers.getSerializers().isEmpty();
 <a class="jxr_linenumber" name="L7976" href="#L7976">7976</a> 	}
 <a class="jxr_linenumber" name="L7977" href="#L7977">7977</a> 
-<a class="jxr_linenumber" name="L7978" href="#L7978">7978</a> 	<strong class="jxr_keyword">boolean</strong> hasSerializers() {
-<a class="jxr_linenumber" name="L7979" href="#L7979">7979</a> 		<strong class="jxr_keyword">return</strong> ! serializers.getSerializers().isEmpty();
-<a class="jxr_linenumber" name="L7980" href="#L7980">7980</a> 	}
-<a class="jxr_linenumber" name="L7981" href="#L7981">7981</a> 
-<a class="jxr_linenumber" name="L7982" href="#L7982">7982</a> 	URI toURI(Object x, String rootUrl) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> {
-<a class="jxr_linenumber" name="L7983" href="#L7983">7983</a> 		<strong class="jxr_keyword">try</strong> {
-<a class="jxr_linenumber" name="L7984" href="#L7984">7984</a> 			<strong class="jxr_keyword">if</strong> (x instanceof URI x2)
-<a class="jxr_linenumber" name="L7985" href="#L7985">7985</a> 				<strong class="jxr_keyword">return</strong> x2;
-<a class="jxr_linenumber" name="L7986" href="#L7986">7986</a> 			<strong class="jxr_keyword">if</strong> (x instanceof URL x3)
-<a class="jxr_linenumber" name="L7987" href="#L7987">7987</a> 				x3.toURI();
-<a class="jxr_linenumber" name="L7988" href="#L7988">7988</a> 			<strong class="jxr_keyword">if</strong> (x instanceof URIBuilder x4)
-<a class="jxr_linenumber" name="L7989" href="#L7989">7989</a> 				<strong class="jxr_keyword">return</strong> x4.build();
-<a class="jxr_linenumber" name="L7990" href="#L7990">7990</a> 			<strong class="jxr_keyword">var</strong> s = x == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">""</span> : x.toString();
-<a class="jxr_linenumber" name="L7991" href="#L7991">7991</a> 			<strong class="jxr_keyword">if</strong> (nn(rootUrl) &amp;&amp; ! absUrlPattern.matcher(s).matches()) {
-<a class="jxr_linenumber" name="L7992" href="#L7992">7992</a> 				<strong class="jxr_keyword">if</strong> (s.isEmpty())
-<a class="jxr_linenumber" name="L7993" href="#L7993">7993</a> 					s = rootUrl;
-<a class="jxr_linenumber" name="L7994" href="#L7994">7994</a> 				<strong class="jxr_keyword">else</strong> {
-<a class="jxr_linenumber" name="L7995" href="#L7995">7995</a> 					<strong class="jxr_keyword">var</strong> sb = <strong class="jxr_keyword">new</strong> StringBuilder(rootUrl);
-<a class="jxr_linenumber" name="L7996" href="#L7996">7996</a> 					<strong class="jxr_keyword">if</strong> (! s.startsWith(<span class="jxr_string">"/"</span>))
-<a class="jxr_linenumber" name="L7997" href="#L7997">7997</a> 						sb.append('/');
-<a class="jxr_linenumber" name="L7998" href="#L7998">7998</a> 					sb.append(s);
-<a class="jxr_linenumber" name="L7999" href="#L7999">7999</a> 					s = sb.toString();
-<a class="jxr_linenumber" name="L8000" href="#L8000">8000</a> 				}
-<a class="jxr_linenumber" name="L8001" href="#L8001">8001</a> 			}
-<a class="jxr_linenumber" name="L8002" href="#L8002">8002</a> 			s = fixUrl(s);
-<a class="jxr_linenumber" name="L8003" href="#L8003">8003</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> URI(s);
-<a class="jxr_linenumber" name="L8004" href="#L8004">8004</a> 		} <strong class="jxr_keyword">catch</strong> (URISyntaxException e) {
-<a class="jxr_linenumber" name="L8005" href="#L8005">8005</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, e, <span class="jxr_string">"Invalid URI encountered:  {0}"</span>, x);  <em class="jxr_comment">// Shouldn't happen.</em>
-<a class="jxr_linenumber" name="L8006" href="#L8006">8006</a> 		}
-<a class="jxr_linenumber" name="L8007" href="#L8007">8007</a> 	}
-<a class="jxr_linenumber" name="L8008" href="#L8008">8008</a> }
+<a class="jxr_linenumber" name="L7978" href="#L7978">7978</a> 	URI toURI(Object x, String rootUrl) <strong class="jxr_keyword">throws</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a> {
+<a class="jxr_linenumber" name="L7979" href="#L7979">7979</a> 		<strong class="jxr_keyword">try</strong> {
+<a class="jxr_linenumber" name="L7980" href="#L7980">7980</a> 			<strong class="jxr_keyword">if</strong> (x instanceof URI x2)
+<a class="jxr_linenumber" name="L7981" href="#L7981">7981</a> 				<strong class="jxr_keyword">return</strong> x2;
+<a class="jxr_linenumber" name="L7982" href="#L7982">7982</a> 			<strong class="jxr_keyword">if</strong> (x instanceof URL x3)
+<a class="jxr_linenumber" name="L7983" href="#L7983">7983</a> 				x3.toURI();
+<a class="jxr_linenumber" name="L7984" href="#L7984">7984</a> 			<strong class="jxr_keyword">if</strong> (x instanceof URIBuilder x4)
+<a class="jxr_linenumber" name="L7985" href="#L7985">7985</a> 				<strong class="jxr_keyword">return</strong> x4.build();
+<a class="jxr_linenumber" name="L7986" href="#L7986">7986</a> 			<strong class="jxr_keyword">var</strong> s = x == <strong class="jxr_keyword">null</strong> ? <span class="jxr_string">""</span> : x.toString();
+<a class="jxr_linenumber" name="L7987" href="#L7987">7987</a> 			<strong class="jxr_keyword">if</strong> (nn(rootUrl) &amp;&amp; ! absUrlPattern.matcher(s).matches()) {
+<a class="jxr_linenumber" name="L7988" href="#L7988">7988</a> 				<strong class="jxr_keyword">if</strong> (s.isEmpty())
+<a class="jxr_linenumber" name="L7989" href="#L7989">7989</a> 					s = rootUrl;
+<a class="jxr_linenumber" name="L7990" href="#L7990">7990</a> 				<strong class="jxr_keyword">else</strong> {
+<a class="jxr_linenumber" name="L7991" href="#L7991">7991</a> 					<strong class="jxr_keyword">var</strong> sb = <strong class="jxr_keyword">new</strong> StringBuilder(rootUrl);
+<a class="jxr_linenumber" name="L7992" href="#L7992">7992</a> 					<strong class="jxr_keyword">if</strong> (! s.startsWith(<span class="jxr_string">"/"</span>))
+<a class="jxr_linenumber" name="L7993" href="#L7993">7993</a> 						sb.append('/');
+<a class="jxr_linenumber" name="L7994" href="#L7994">7994</a> 					sb.append(s);
+<a class="jxr_linenumber" name="L7995" href="#L7995">7995</a> 					s = sb.toString();
+<a class="jxr_linenumber" name="L7996" href="#L7996">7996</a> 				}
+<a class="jxr_linenumber" name="L7997" href="#L7997">7997</a> 			}
+<a class="jxr_linenumber" name="L7998" href="#L7998">7998</a> 			s = fixUrl(s);
+<a class="jxr_linenumber" name="L7999" href="#L7999">7999</a> 			<strong class="jxr_keyword">return</strong> <strong class="jxr_keyword">new</strong> URI(s);
+<a class="jxr_linenumber" name="L8000" href="#L8000">8000</a> 		} <strong class="jxr_keyword">catch</strong> (URISyntaxException e) {
+<a class="jxr_linenumber" name="L8001" href="#L8001">8001</a> 			<strong class="jxr_keyword">throw</strong> <strong class="jxr_keyword">new</strong> <a name="RestCallException" href="../../../../../org/apache/juneau/rest/client/RestCallException.html#RestCallException">RestCallException</a>(<strong class="jxr_keyword">null</strong>, e, <span class="jxr_string">"Invalid URI encountered:  {0}"</span>, x);  <em class="jxr_comment">// Shouldn't happen.</em>
+<a class="jxr_linenumber" name="L8002" href="#L8002">8002</a> 		}
+<a class="jxr_linenumber" name="L8003" href="#L8003">8003</a> 	}
+<a class="jxr_linenumber" name="L8004" href="#L8004">8004</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/rest/mock/MockServletRequest.html b/site/xref/org/apache/juneau/rest/mock/MockServletRequest.html
index ca7db160da..6cd09c4424 100644
--- a/site/xref/org/apache/juneau/rest/mock/MockServletRequest.html
+++ b/site/xref/org/apache/juneau/rest/mock/MockServletRequest.html
@@ -84,7 +84,7 @@
 <a class="jxr_linenumber" name="L76" href="#L76">76</a>  <em class="jxr_javadoccomment">	 * @return A new request.</em>
 <a class="jxr_linenumber" name="L77" href="#L77">77</a>  <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L78" href="#L78">78</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <a name="MockServletRequest" href="../../../../../org/apache/juneau/rest/mock/MockServletRequest.html#MockServletRequest">MockServletRequest</a> create(String method, String uri, Object...pathArgs) {
-<a class="jxr_linenumber" name="L79" href="#L79">79</a>  		<strong class="jxr_keyword">return</strong> create().method(method).uri(mformat(uri, pathArgs));
+<a class="jxr_linenumber" name="L79" href="#L79">79</a>  		<strong class="jxr_keyword">return</strong> create().method(method).uri(f(uri, pathArgs));
 <a class="jxr_linenumber" name="L80" href="#L80">80</a>  	}
 <a class="jxr_linenumber" name="L81" href="#L81">81</a>  
 <a class="jxr_linenumber" name="L82" href="#L82">82</a>  	<strong class="jxr_keyword">private</strong> String method = <span class="jxr_string">"GET"</span>;
diff --git a/site/xref/org/apache/juneau/rest/servlet/RestObject.html b/site/xref/org/apache/juneau/rest/servlet/RestObject.html
index 95fdbe512b..c7ba72b263 100644
--- a/site/xref/org/apache/juneau/rest/servlet/RestObject.html
+++ b/site/xref/org/apache/juneau/rest/servlet/RestObject.html
@@ -78,7 +78,7 @@
 <a class="jxr_linenumber" name="L70" href="#L70">70</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
 <a class="jxr_linenumber" name="L71" href="#L71">71</a>  <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L72" href="#L72">72</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level, String msg, Object...args) {
-<a class="jxr_linenumber" name="L73" href="#L73">73</a>  		doLog(level, <strong class="jxr_keyword">null</strong>, () -&gt; mformat(msg, args));
+<a class="jxr_linenumber" name="L73" href="#L73">73</a>  		doLog(level, <strong class="jxr_keyword">null</strong>, fs(msg, args));
 <a class="jxr_linenumber" name="L74" href="#L74">74</a>  	}
 <a class="jxr_linenumber" name="L75" href="#L75">75</a>  
 <a class="jxr_linenumber" name="L76" href="#L76">76</a>  	<em class="jxr_javadoccomment">/**</em>
@@ -93,7 +93,7 @@
 <a class="jxr_linenumber" name="L85" href="#L85">85</a>  <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
 <a class="jxr_linenumber" name="L86" href="#L86">86</a>  <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L87" href="#L87">87</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level, Throwable cause, String msg, Object...args) {
-<a class="jxr_linenumber" name="L88" href="#L88">88</a>  		doLog(level, cause, () -&gt; mformat(msg, args));
+<a class="jxr_linenumber" name="L88" href="#L88">88</a>  		doLog(level, cause, fs(msg, args));
 <a class="jxr_linenumber" name="L89" href="#L89">89</a>  	}
 <a class="jxr_linenumber" name="L90" href="#L90">90</a>  
 <a class="jxr_linenumber" name="L91" href="#L91">91</a>  	<em class="jxr_javadoccomment">/**</em>
diff --git a/site/xref/org/apache/juneau/rest/servlet/RestServlet.html b/site/xref/org/apache/juneau/rest/servlet/RestServlet.html
index 90a73f31e5..8921a98a55 100644
--- a/site/xref/org/apache/juneau/rest/servlet/RestServlet.html
+++ b/site/xref/org/apache/juneau/rest/servlet/RestServlet.html
@@ -177,7 +177,7 @@
 <a class="jxr_linenumber" name="L169" href="#L169">169</a> <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</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">void</strong> log(Level level, String msg, Object...args) {
-<a class="jxr_linenumber" name="L172" href="#L172">172</a> 		doLog(level, <strong class="jxr_keyword">null</strong>, () -&gt; StringUtils.mformat(msg, args));
+<a class="jxr_linenumber" name="L172" href="#L172">172</a> 		doLog(level, <strong class="jxr_keyword">null</strong>, fs(msg, args));
 <a class="jxr_linenumber" name="L173" href="#L173">173</a> 	}
 <a class="jxr_linenumber" name="L174" href="#L174">174</a> 
 <a class="jxr_linenumber" name="L175" href="#L175">175</a> 	<em class="jxr_javadoccomment">/**</em>
@@ -192,7 +192,7 @@
 <a class="jxr_linenumber" name="L184" href="#L184">184</a> <em class="jxr_javadoccomment">	 * @param args Optional {@link MessageFormat}-style arguments.</em>
 <a class="jxr_linenumber" name="L185" href="#L185">185</a> <em class="jxr_javadoccomment">	 */</em>
 <a class="jxr_linenumber" name="L186" href="#L186">186</a> 	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> log(Level level, Throwable cause, String msg, Object...args) {
-<a class="jxr_linenumber" name="L187" href="#L187">187</a> 		doLog(level, cause, () -&gt; StringUtils.mformat(msg, args));
+<a class="jxr_linenumber" name="L187" href="#L187">187</a> 		doLog(level, cause, fs(msg, args));
 <a class="jxr_linenumber" name="L188" href="#L188">188</a> 	}
 <a class="jxr_linenumber" name="L189" href="#L189">189</a> 
 <a class="jxr_linenumber" name="L190" href="#L190">190</a> 	<em class="jxr_javadoccomment">/**</em>
diff --git a/site/xref/org/apache/juneau/rest/swagger/SwaggerException.html b/site/xref/org/apache/juneau/rest/swagger/SwaggerException.html
index 9d0caa2d0d..e18686bc45 100644
--- a/site/xref/org/apache/juneau/rest/swagger/SwaggerException.html
+++ b/site/xref/org/apache/juneau/rest/swagger/SwaggerException.html
@@ -25,16 +25,17 @@
 <a class="jxr_linenumber" name="L17" href="#L17">17</a>  <strong class="jxr_keyword">package</strong> org.apache.juneau.<strong class="jxr_keyword">rest</strong>.swagger;
 <a class="jxr_linenumber" name="L18" href="#L18">18</a>  
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StringUtils.*;
-<a class="jxr_linenumber" name="L20" href="#L20">20</a>  
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.parser.*;
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">class</strong> <a name="SwaggerException" href="../../../../../org/apache/juneau/rest/swagger/SwaggerException.html#SwaggerException">SwaggerException</a> <strong class="jxr_keyword">extends</strong> <a name="ParseException" href="../../../../../org/apache/juneau/parser/ParseException.html#ParseException">ParseException</a> {
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  	SwaggerException(Exception e, String location, Object...locationArgs) {
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  		<strong class="jxr_keyword">super</strong>(e, <span class="jxr_string">"Swagger exception:  at "</span> + mformat(location, locationArgs));
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  	}
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  }
+<a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
+<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.parser.*;
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <strong class="jxr_keyword">class</strong> <a name="SwaggerException" href="../../../../../org/apache/juneau/rest/swagger/SwaggerException.html#SwaggerException">SwaggerException</a> <strong class="jxr_keyword">extends</strong> <a name="ParseException" href="../../../../../org/apache/juneau/parser/ParseException.html#ParseException">ParseException</a> {
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">long</strong> serialVersionUID = 1L;
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  	SwaggerException(Exception e, String location, Object...locationArgs) {
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  		<strong class="jxr_keyword">super</strong>(e, <span class="jxr_string">"Swagger exception:  at "</span> + f(location, locationArgs));
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  	}
+<a class="jxr_linenumber" name="L30" href="#L30">30</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/serializer/SerializeException.html b/site/xref/org/apache/juneau/serializer/SerializeException.html
index a462ed0a46..f49a813821 100644
--- a/site/xref/org/apache/juneau/serializer/SerializeException.html
+++ b/site/xref/org/apache/juneau/serializer/SerializeException.html
@@ -68,7 +68,7 @@
 <a class="jxr_linenumber" name="L60" href="#L60">60</a>  	}
 <a class="jxr_linenumber" name="L61" href="#L61">61</a>  
 <a class="jxr_linenumber" name="L62" href="#L62">62</a>  	<strong class="jxr_keyword">private</strong> <strong class="jxr_keyword">static</strong> String getMessage(<a name="SerializerSession" href="../../../../org/apache/juneau/serializer/SerializerSession.html#SerializerSession">SerializerSession</a> session, String msg, Object...args) {
-<a class="jxr_linenumber" name="L63" href="#L63">63</a>  		msg = mformat(msg, args);
+<a class="jxr_linenumber" name="L63" href="#L63">63</a>  		msg = f(msg, args);
 <a class="jxr_linenumber" name="L64" href="#L64">64</a>  		<strong class="jxr_keyword">if</strong> (nn(session)) {
 <a class="jxr_linenumber" name="L65" href="#L65">65</a>  			Map&lt;String,Object&gt; m = session.getLastLocation();
 <a class="jxr_linenumber" name="L66" href="#L66">66</a>  			<strong class="jxr_keyword">if</strong> (nn(m) &amp;&amp; ! m.isEmpty())
diff --git a/site/xref/org/apache/juneau/serializer/SerializerListener.html b/site/xref/org/apache/juneau/serializer/SerializerListener.html
index 8f18655b69..c4c8881abe 100644
--- a/site/xref/org/apache/juneau/serializer/SerializerListener.html
+++ b/site/xref/org/apache/juneau/serializer/SerializerListener.html
@@ -26,46 +26,47 @@
 <a class="jxr_linenumber" name="L18" href="#L18">18</a>  
 <a class="jxr_linenumber" name="L19" href="#L19">19</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.StringUtils.*;
 <a class="jxr_linenumber" name="L20" href="#L20">20</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.ThrowableUtils.*;
-<a class="jxr_linenumber" name="L21" href="#L21">21</a>  
-<a class="jxr_linenumber" name="L22" href="#L22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.*;
-<a class="jxr_linenumber" name="L23" href="#L23">23</a>  
-<a class="jxr_linenumber" name="L24" href="#L24">24</a>  <em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment"> * Class for listening for serialize events during a serialization.</em>
-<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> *</em>
-<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
-<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * 	&lt;li class='link'&gt;&lt;a class="doclink" href="<a href="https://juneau.apache.org/docs/topics/SerializersAndParsers" target="alexandria_uri">https://juneau.apache.org/docs/topics/SerializersAndParsers</a>"&gt;Serializers and Parsers&lt;/a&gt;</em>
-<a class="jxr_linenumber" name="L29" href="#L29">29</a>  
-<a class="jxr_linenumber" name="L30" href="#L30">30</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
-<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> */</em>
-<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="SerializerListener" href="../../../../org/apache/juneau/serializer/SerializerListener.html#SerializerListener">SerializerListener</a> {
-<a class="jxr_linenumber" name="L33" href="#L33">33</a>  
-<a class="jxr_linenumber" name="L34" href="#L34">34</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L35" href="#L35">35</a>  <em class="jxr_javadoccomment">	 * Represents no serializer listener.</em>
-<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L37" href="#L37">37</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> Void <strong class="jxr_keyword">extends</strong> <a name="SerializerListener" href="../../../../org/apache/juneau/serializer/SerializerListener.html#SerializerListener">SerializerListener</a> {}
-<a class="jxr_linenumber" name="L38" href="#L38">38</a>  
-<a class="jxr_linenumber" name="L39" href="#L39">39</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L40" href="#L40">40</a>  <em class="jxr_javadoccomment">	 * Called when an exception is thrown when trying to call a bean getter method.</em>
-<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">	 * @param session The serializer session.</em>
-<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the getter method.</em>
-<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">	 * @param p The bean property we had an issue on.</em>
-<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L46" href="#L46">46</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onBeanGetterException(<a name="SerializerSession" href="../../../../org/apache/juneau/serializer/SerializerSession.html#SerializerSession">SerializerSession</a> session, Throwable t, BeanPropertyMeta p) {
-<a class="jxr_linenumber" name="L47" href="#L47">47</a>  		onError(session, t, mformat(<span class="jxr_string">"Could not call getValue() on property ''{0}'' of class ''{1}'', exception = {2}"</span>, p.getName(), p.getBeanMeta().getClassMeta(), lm(t)));
-<a class="jxr_linenumber" name="L48" href="#L48">48</a>  	}
-<a class="jxr_linenumber" name="L49" href="#L49">49</a>  
-<a class="jxr_linenumber" name="L50" href="#L50">50</a>  	<em class="jxr_javadoccomment">/**</em>
-<a class="jxr_linenumber" name="L51" href="#L51">51</a>  <em class="jxr_javadoccomment">	 * Called when an error occurs during serialization but is ignored.</em>
-<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">	 *</em>
-<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">	 * @param session The serializer session.</em>
-<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the getter method.</em>
-<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 * @param msg The error message.</em>
-<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 */</em>
-<a class="jxr_linenumber" name="L57" href="#L57">57</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onError(<a name="SerializerSession" href="../../../../org/apache/juneau/serializer/SerializerSession.html#SerializerSession">SerializerSession</a> session, Throwable t, String msg) {
-<a class="jxr_linenumber" name="L58" href="#L58">58</a>  		<em class="jxr_comment">// Do something with this information.</em>
-<a class="jxr_linenumber" name="L59" href="#L59">59</a>  	}
-<a class="jxr_linenumber" name="L60" href="#L60">60</a>  }
+<a class="jxr_linenumber" name="L21" href="#L21">21</a>  <strong class="jxr_keyword">import</strong> <strong class="jxr_keyword">static</strong> org.apache.juneau.common.utils.Utils.*;
+<a class="jxr_linenumber" name="L22" href="#L22">22</a>  
+<a class="jxr_linenumber" name="L23" href="#L23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.juneau.*;
+<a class="jxr_linenumber" name="L24" href="#L24">24</a>  
+<a class="jxr_linenumber" name="L25" href="#L25">25</a>  <em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L26" href="#L26">26</a>  <em class="jxr_javadoccomment"> * Class for listening for serialize events during a serialization.</em>
+<a class="jxr_linenumber" name="L27" href="#L27">27</a>  <em class="jxr_javadoccomment"> *</em>
+<a class="jxr_linenumber" name="L28" href="#L28">28</a>  <em class="jxr_javadoccomment"> * &lt;h5 class='section'&gt;See Also:&lt;/h5&gt;&lt;ul&gt;</em>
+<a class="jxr_linenumber" name="L29" href="#L29">29</a>  <em class="jxr_javadoccomment"> * 	&lt;li class='link'&gt;&lt;a class="doclink" href="<a href="https://juneau.apache.org/docs/topics/SerializersAndParsers" target="alexandria_uri">https://juneau.apache.org/docs/topics/SerializersAndParsers</a>"&gt;Serializers and Parsers&lt;/a&gt;</em>
+<a class="jxr_linenumber" name="L30" href="#L30">30</a>  
+<a class="jxr_linenumber" name="L31" href="#L31">31</a>  <em class="jxr_javadoccomment"> * &lt;/ul&gt;</em>
+<a class="jxr_linenumber" name="L32" href="#L32">32</a>  <em class="jxr_javadoccomment"> */</em>
+<a class="jxr_linenumber" name="L33" href="#L33">33</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a name="SerializerListener" href="../../../../org/apache/juneau/serializer/SerializerListener.html#SerializerListener">SerializerListener</a> {
+<a class="jxr_linenumber" name="L34" href="#L34">34</a>  
+<a class="jxr_linenumber" name="L35" href="#L35">35</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L36" href="#L36">36</a>  <em class="jxr_javadoccomment">	 * Represents no serializer listener.</em>
+<a class="jxr_linenumber" name="L37" href="#L37">37</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L38" href="#L38">38</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">static</strong> <strong class="jxr_keyword">final</strong> <strong class="jxr_keyword">class</strong> Void <strong class="jxr_keyword">extends</strong> <a name="SerializerListener" href="../../../../org/apache/juneau/serializer/SerializerListener.html#SerializerListener">SerializerListener</a> {}
+<a class="jxr_linenumber" name="L39" href="#L39">39</a>  
+<a class="jxr_linenumber" name="L40" href="#L40">40</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L41" href="#L41">41</a>  <em class="jxr_javadoccomment">	 * Called when an exception is thrown when trying to call a bean getter method.</em>
+<a class="jxr_linenumber" name="L42" href="#L42">42</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L43" href="#L43">43</a>  <em class="jxr_javadoccomment">	 * @param session The serializer session.</em>
+<a class="jxr_linenumber" name="L44" href="#L44">44</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the getter method.</em>
+<a class="jxr_linenumber" name="L45" href="#L45">45</a>  <em class="jxr_javadoccomment">	 * @param p The bean property we had an issue on.</em>
+<a class="jxr_linenumber" name="L46" href="#L46">46</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L47" href="#L47">47</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onBeanGetterException(<a name="SerializerSession" href="../../../../org/apache/juneau/serializer/SerializerSession.html#SerializerSession">SerializerSession</a> session, Throwable t, BeanPropertyMeta p) {
+<a class="jxr_linenumber" name="L48" href="#L48">48</a>  		onError(session, t, f(<span class="jxr_string">"Could not call getValue() on property ''{0}'' of class ''{1}'', exception = {2}"</span>, p.getName(), p.getBeanMeta().getClassMeta(), lm(t)));
+<a class="jxr_linenumber" name="L49" href="#L49">49</a>  	}
+<a class="jxr_linenumber" name="L50" href="#L50">50</a>  
+<a class="jxr_linenumber" name="L51" href="#L51">51</a>  	<em class="jxr_javadoccomment">/**</em>
+<a class="jxr_linenumber" name="L52" href="#L52">52</a>  <em class="jxr_javadoccomment">	 * Called when an error occurs during serialization but is ignored.</em>
+<a class="jxr_linenumber" name="L53" href="#L53">53</a>  <em class="jxr_javadoccomment">	 *</em>
+<a class="jxr_linenumber" name="L54" href="#L54">54</a>  <em class="jxr_javadoccomment">	 * @param session The serializer session.</em>
+<a class="jxr_linenumber" name="L55" href="#L55">55</a>  <em class="jxr_javadoccomment">	 * @param t The throwable that was thrown by the getter method.</em>
+<a class="jxr_linenumber" name="L56" href="#L56">56</a>  <em class="jxr_javadoccomment">	 * @param msg The error message.</em>
+<a class="jxr_linenumber" name="L57" href="#L57">57</a>  <em class="jxr_javadoccomment">	 */</em>
+<a class="jxr_linenumber" name="L58" href="#L58">58</a>  	<strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">void</strong> onError(<a name="SerializerSession" href="../../../../org/apache/juneau/serializer/SerializerSession.html#SerializerSession">SerializerSession</a> session, Throwable t, String msg) {
+<a class="jxr_linenumber" name="L59" href="#L59">59</a>  		<em class="jxr_comment">// Do something with this information.</em>
+<a class="jxr_linenumber" name="L60" href="#L60">60</a>  	}
+<a class="jxr_linenumber" name="L61" href="#L61">61</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/serializer/SerializerSession.html b/site/xref/org/apache/juneau/serializer/SerializerSession.html
index 2e649040a6..4ef8bf36b0 100644
--- a/site/xref/org/apache/juneau/serializer/SerializerSession.html
+++ b/site/xref/org/apache/juneau/serializer/SerializerSession.html
@@ -988,7 +988,7 @@
 <a class="jxr_linenumber" name="L980" href="#L980">980</a> 	@Override
 <a class="jxr_linenumber" name="L981" href="#L981">981</a> 	<strong class="jxr_keyword">protected</strong> <strong class="jxr_keyword">void</strong> onError(Throwable t, String msg, Object...args) {
 <a class="jxr_linenumber" name="L982" href="#L982">982</a> 		<strong class="jxr_keyword">if</strong> (nn(listener))
-<a class="jxr_linenumber" name="L983" href="#L983">983</a> 			listener.onError(<strong class="jxr_keyword">this</strong>, t, mformat(msg, args));
+<a class="jxr_linenumber" name="L983" href="#L983">983</a> 			listener.onError(<strong class="jxr_keyword">this</strong>, t, f(msg, args));
 <a class="jxr_linenumber" name="L984" href="#L984">984</a> 		<strong class="jxr_keyword">super</strong>.onError(t, msg, args);
 <a class="jxr_linenumber" name="L985" href="#L985">985</a> 	}
 <a class="jxr_linenumber" name="L986" href="#L986">986</a>