juneau-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jamesbog...@apache.org
Subject [juneau-website] branch asf-site updated: Update Javadocs.
Date Wed, 07 Mar 2018 01:50:23 GMT
This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/juneau-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 4d41d75  Update Javadocs.
4d41d75 is described below

commit 4d41d757856801760a97c30263043a1077d14e16
Author: JamesBognar <jamesbognar@apache.org>
AuthorDate: Tue Mar 6 20:50:21 2018 -0500

    Update Javadocs.
---
 .../juneau/xml => }/doc-files/Example_HTML.png     |  Bin
 .../juneau/json => }/doc-files/Example_JSON.png    |  Bin
 .../json => }/doc-files/Example_JSONSchema.png     |  Bin
 .../json => }/doc-files/Example_JSONSimple.png     |  Bin
 .../juneau/jena => }/doc-files/Example_N3.png      |  Bin
 .../juneau/jena => }/doc-files/Example_NTriple.png |  Bin
 .../juneau/jena => }/doc-files/Example_RDFXML.png  |  Bin
 .../jena => }/doc-files/Example_RDFXMLABBREV.png   |  Bin
 .../juneau/jena => }/doc-files/Example_Turtle.png  |  Bin
 .../juneau/xml => }/doc-files/Example_XML.png      |  Bin
 .../xml => }/doc-files/Example_XMLSchema.png       |  Bin
 .../xml => }/doc-files/Example_XMLSimple.png       |  Bin
 .../html => }/doc-files/HTML_DESCRIPTION.png       |  Bin
 .../juneau/html => }/doc-files/HTML_LINKS.png      |  Bin
 .../juneau/html => }/doc-files/HTML_TITLE.png      |  Bin
 .../juneau/html => }/doc-files/HtmlRender_1.png    |  Bin
 .../juneau/urlencoding => }/doc-files/rfc_uon.txt  |    0
 .../org/apache/juneau/html/package-summary.html    |  557 +--
 .../apache/juneau/jena/doc-files/Example_HTML.png  |  Bin 35528 -> 0 bytes
 .../org/apache/juneau/jena/package-summary.html    | 1015 +---
 .../org/apache/juneau/json/annotation/Json.html    |    6 +-
 .../apache/juneau/json/doc-files/Example_HTML.png  |  Bin 35528 -> 0 bytes
 .../org/apache/juneau/json/package-summary.html    |  961 +---
 .../org/apache/juneau/msgpack/package-summary.html |   23 +-
 .../apache/juneau/uon/doc-files/Example_HTML.png   |  Bin 136001 -> 0 bytes
 .../org/apache/juneau/uon/doc-files/rfc_uon.txt    |  294 --
 .../org/apache/juneau/uon/package-summary.html     |  968 +---
 .../juneau/urlencoding/doc-files/Example_HTML.png  |  Bin 136001 -> 0 bytes
 .../apache/juneau/urlencoding/package-summary.html |  970 +---
 .../org/apache/juneau/xml/package-summary.html     | 2926 +-----------
 content/site/apidocs/overview-summary.html         | 5004 ++++++++++++++++++--
 .../org/apache/juneau/json/annotation/Json.html    |    6 +-
 32 files changed, 4715 insertions(+), 8015 deletions(-)

diff --git a/content/site/apidocs/org/apache/juneau/xml/doc-files/Example_HTML.png b/content/site/apidocs/doc-files/Example_HTML.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/xml/doc-files/Example_HTML.png
rename to content/site/apidocs/doc-files/Example_HTML.png
diff --git a/content/site/apidocs/org/apache/juneau/json/doc-files/Example_JSON.png b/content/site/apidocs/doc-files/Example_JSON.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/json/doc-files/Example_JSON.png
rename to content/site/apidocs/doc-files/Example_JSON.png
diff --git a/content/site/apidocs/org/apache/juneau/json/doc-files/Example_JSONSchema.png b/content/site/apidocs/doc-files/Example_JSONSchema.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/json/doc-files/Example_JSONSchema.png
rename to content/site/apidocs/doc-files/Example_JSONSchema.png
diff --git a/content/site/apidocs/org/apache/juneau/json/doc-files/Example_JSONSimple.png b/content/site/apidocs/doc-files/Example_JSONSimple.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/json/doc-files/Example_JSONSimple.png
rename to content/site/apidocs/doc-files/Example_JSONSimple.png
diff --git a/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_N3.png b/content/site/apidocs/doc-files/Example_N3.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/jena/doc-files/Example_N3.png
rename to content/site/apidocs/doc-files/Example_N3.png
diff --git a/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_NTriple.png b/content/site/apidocs/doc-files/Example_NTriple.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/jena/doc-files/Example_NTriple.png
rename to content/site/apidocs/doc-files/Example_NTriple.png
diff --git a/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_RDFXML.png b/content/site/apidocs/doc-files/Example_RDFXML.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/jena/doc-files/Example_RDFXML.png
rename to content/site/apidocs/doc-files/Example_RDFXML.png
diff --git a/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_RDFXMLABBREV.png b/content/site/apidocs/doc-files/Example_RDFXMLABBREV.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/jena/doc-files/Example_RDFXMLABBREV.png
rename to content/site/apidocs/doc-files/Example_RDFXMLABBREV.png
diff --git a/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_Turtle.png b/content/site/apidocs/doc-files/Example_Turtle.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/jena/doc-files/Example_Turtle.png
rename to content/site/apidocs/doc-files/Example_Turtle.png
diff --git a/content/site/apidocs/org/apache/juneau/xml/doc-files/Example_XML.png b/content/site/apidocs/doc-files/Example_XML.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/xml/doc-files/Example_XML.png
rename to content/site/apidocs/doc-files/Example_XML.png
diff --git a/content/site/apidocs/org/apache/juneau/xml/doc-files/Example_XMLSchema.png b/content/site/apidocs/doc-files/Example_XMLSchema.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/xml/doc-files/Example_XMLSchema.png
rename to content/site/apidocs/doc-files/Example_XMLSchema.png
diff --git a/content/site/apidocs/org/apache/juneau/xml/doc-files/Example_XMLSimple.png b/content/site/apidocs/doc-files/Example_XMLSimple.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/xml/doc-files/Example_XMLSimple.png
rename to content/site/apidocs/doc-files/Example_XMLSimple.png
diff --git a/content/site/apidocs/org/apache/juneau/html/doc-files/HTML_DESCRIPTION.png b/content/site/apidocs/doc-files/HTML_DESCRIPTION.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/html/doc-files/HTML_DESCRIPTION.png
rename to content/site/apidocs/doc-files/HTML_DESCRIPTION.png
diff --git a/content/site/apidocs/org/apache/juneau/html/doc-files/HTML_LINKS.png b/content/site/apidocs/doc-files/HTML_LINKS.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/html/doc-files/HTML_LINKS.png
rename to content/site/apidocs/doc-files/HTML_LINKS.png
diff --git a/content/site/apidocs/org/apache/juneau/html/doc-files/HTML_TITLE.png b/content/site/apidocs/doc-files/HTML_TITLE.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/html/doc-files/HTML_TITLE.png
rename to content/site/apidocs/doc-files/HTML_TITLE.png
diff --git a/content/site/apidocs/org/apache/juneau/html/doc-files/HtmlRender_1.png b/content/site/apidocs/doc-files/HtmlRender_1.png
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/html/doc-files/HtmlRender_1.png
rename to content/site/apidocs/doc-files/HtmlRender_1.png
diff --git a/content/site/apidocs/org/apache/juneau/urlencoding/doc-files/rfc_uon.txt b/content/site/apidocs/doc-files/rfc_uon.txt
similarity index 100%
rename from content/site/apidocs/org/apache/juneau/urlencoding/doc-files/rfc_uon.txt
rename to content/site/apidocs/doc-files/rfc_uon.txt
diff --git a/content/site/apidocs/org/apache/juneau/html/package-summary.html b/content/site/apidocs/org/apache/juneau/html/package-summary.html
index e6dcda9..dd9a63e 100644
--- a/content/site/apidocs/org/apache/juneau/html/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/html/package-summary.html
@@ -250,562 +250,7 @@
 <!--   -->
 </a>
 <h2 title="Package org.apache.juneau.html Description">Package org.apache.juneau.html Description</h2>
-<div class="block"><p>HTML Marshalling Support</p>
-<script>
-   function toggle(x) {
-      var div = x.nextSibling;
-      while (div != null && div.nodeType != 1)
-         div = div.nextSibling;
-      if (div != null) {
-         var d = div.style.display;
-         if (d == 'block' || d == '') {
-            div.style.display = 'none';
-            x.className += " closed";
-         } else {
-            div.style.display = 'block';
-            x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-         }
-      }
-   }
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-   <li><p><a class='doclink' href='#HtmlSerializer'>HTML serialization support</a></p> 
-   <li><p><a class='doclink' href='#HtmlParser'>HTML parsing support</a></p> 
-</ol>
-
-<!-- ======================================================================================================== -->
-<a id="HtmlSerializer"></a>
-<h2 class='topic' onclick='toggle(this)'>1 - HTML serialization support</h2>
-<div class='topic'>
-   
-   <!-- ======================================================================================================== -->
-   <a id="Methodology"></a>
-   <h3 class='topic' onclick='toggle(this)'>1.1 - HTML support methodology</h3>
-   <div class='topic'>
-      <p>
-         The following examples show how different data types are represented in HTML.
-         They mirror how the data structures are represented in JSON.
-      </p>
-      
-      <h5 class='topic'>Simple types</h5>
-      <p>
-         The representation for simple types mirror those produced by the XML serializer.
-         Tags are added to help differentiate data types when they cannot be inferred through reflection.
-         These tags are ignored by browsers and treated as plain text.
-      </p>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>HTML</th>
-         </tr>
-         <tr>
-            <td>string</td>
-            <td class='code'><js>'foo'</js></td>
-            <td class='code'><xt>&lt;string&gt;</xt>foo<xt>&lt;/string&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>boolean</td>
-            <td class='code'><jk>true</jk></td>
-            <td class='code'><xt>&lt;boolean&gt;</xt>true<xt>&lt;/boolean&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>integer</td>
-            <td class='code'>123</td>
-            <td class='code'><xt>&lt;number&gt;</xt>123<xt>&lt;/number&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>float</td>
-            <td class='code'>1.23</td>
-            <td class='code'><xt>&lt;number&gt;</xt>1.23<xt>&lt;/number&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>null</td>
-            <td class='code'><jk>null</jk></td>
-            <td class='code'><xt>&lt;null/&gt;</xt></td>
-         </tr>
-      </table>
-      
-      <h5 class='topic'>Maps</h5>
-      <p>
-         Maps and beans are represented as tables.
-      </p>
-      <p>
-         The <xa>_type</xa> attribute is added to differentiate between objects (maps/beans) and arrays 
-         (arrays/collections).
-      </p>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>HTML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   Map&lt;String,String&gt;
-            </td>
-            <td class='code'>
-   {
-      k1: <js>'v1'</js>
-      k2: <jk>null</jk>
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;table <xa>_type</xa>=<xs>'object'</xs>&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k1</xv>&lt;/td&gt;
-         &lt;td&gt;<xv>v1</xv>&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k2</xv>&lt;/td&gt;
-         &lt;td&gt;&lt;null/&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-   &lt;/table&gt;
-         </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Map&lt;String,Number&gt;
-            </td>
-            <td class='code'>
-   {
-      k1: 123,
-      k2: 1.23,
-      k3: <jk>null</jk>
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;table <xa>_type</xa>=<xs>'object'</xs>&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k1</xv>&lt;/td&gt;
-         &lt;td&gt;<xv>123</xv>&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k2</xv>&lt;/td&gt;
-         &lt;td&gt;<xv>1.23</xv>&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k3</xv>&lt;/td&gt;
-         &lt;td&gt;&lt;null/&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-   &lt;/table&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Map&lt;String,Object&gt;
-            </td>
-            <td class='code'>
-   {
-      k1: <js>'v1'</js>
-      k2: 123,
-      k3: 1.23,
-      k4: <jk>true</jk>,
-      k5: <jk>null</jk>
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;table <xa>_type</xa>=<xs>'object'</xs>&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k1</xv>&lt;/td&gt;
-         &lt;td&gt;<xv>v1</xv>&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k2</xv>&lt;/td&gt;
-         &lt;td&gt;&lt;number&gt;<xv>123</xv>&lt;/number&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k3</xv>&lt;/td&gt;
-         &lt;td&gt;&lt;number&gt;<xv>1.23</xv>&lt;/number&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k4</xv>&lt;/td&gt;
-         &lt;td&gt;&lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>k5</xv>&lt;/td&gt;
-         &lt;td&gt;&lt;null/&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-   &lt;/table&gt;
-            </xt></td>
-         </tr>
-      </table>
-      
-      <h5 class='topic'>Arrays</h5>
-      <p>
-         Collections and arrays are represented as ordered lists.
-      </p>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>HTML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   String[]
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>foo</xv>&lt;/li&gt;
-      &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Number[]
-            </td>
-            <td class='code'>
-   [
-      123,
-      1.23,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>123</xv>&lt;/li&gt;
-      &lt;li&gt;<xv>1.23</xv>&lt;/li&gt;
-      &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Object[]
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>,
-      123,
-      1.23,
-      <jk>true</jk>,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>foo</xv>&lt;/li&gt;
-      &lt;li&gt;&lt;number&gt;<xv>123</xv>&lt;/number&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;number&gt;<xv>1.23</xv>&lt;/number&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   String[][]
-            </td>
-            <td class='code'>
-   [
-      [<js>'foo'</js>, <jk>null</jk>],
-      <jk>null</jk>,
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;
-         &lt;ul&gt;
-            &lt;li&gt;<xv>foo</xv>&lt;/li&gt;
-            &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-         &lt;/ul&gt;
-      &lt;/li&gt;
-      &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>int</jk>[]
-            </td>
-            <td class='code'>
-   [
-      123
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>123</xv>&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>boolean</jk>[]
-            </td>
-            <td class='code'>
-   [
-      <jk>true</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>true</xv>&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-      </table>
-      
-      <h5 class='topic'>Collections</h5>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>HTML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   List&lt;String&gt;
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>foo</xv>&lt;/li&gt;
-      &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   List&lt;Number&gt;
-            </td>
-            <td class='code'>
-   [
-      123,
-      1.23,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>123</xv>&lt;/li&gt;
-      &lt;li&gt;<xv>1.23</xv>&lt;/li&gt;
-      &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   List&lt;Object&gt;
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>,
-      123,
-      1.23,
-      <jk>true</jk>,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;ul&gt;
-      &lt;li&gt;<xv>foo</xv>&lt;/li&gt;
-      &lt;li&gt;&lt;number&gt;<xv>123</xv>&lt;/number&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;number&gt;<xv>1.23</xv>&lt;/number&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;&lt;/li&gt;
-      &lt;li&gt;&lt;null/&gt;&lt;/li&gt;
-   &lt;/ul&gt;
-            </xt></td>
-         </tr>
-      </table>
-
-      <h5 class='topic'>Beans</h5>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>HTML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>class</jk> MyBean {
-      <jk>public</jk> String a;
-      <jk>public</jk> <jk>int</jk> b;
-      <jk>public</jk> Object c;  <jc>// String value</jc>
-      <jk>public</jk> Object d;  <jc>// Integer value</jc>     
-      <jk>public</jk> MyBean2 e;  
-      <jk>public</jk> String[] f;  
-      <jk>public</jk> <jk>int</jk>[] g;   
-   }
-   <jk>class</jk> MyBean2 {
-      String h;  
-   }
-            </td>
-            <td class='code'>
-   {
-      a: <js>'foo'</js>,
-      b: 123,
-      c: <js>'bar'</js>,
-      d: 456,
-      e: {
-         h: <js>'baz'</js>
-      }
-      f: [<js>'qux'</js>]
-      g: [789]
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;table <xa>_type</xa>=<xs>'object'</xs>&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>a</xv>&lt;/td&gt;
-         &lt;td&gt;<xv>foo</xv>&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>b</xv>&lt;/td&gt;
-         &lt;td&gt;<xv>123</xv>&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>c</xv>&lt;/td&gt;
-         &lt;td&gt;<xv>bar</xv>&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>d</xv>&lt;/td&gt;
-         &lt;td&gt;&lt;number&gt;<xv>456</xv>&lt;/number&gt;&lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>e</xv>&lt;/td&gt;
-         &lt;td&gt;
-            &lt;table <xa>_type</xa>=<xs>'object'</xs>&gt;
-               &lt;tr&gt;
-                  &lt;td&gt;<xv>h</xv>&lt;/td&gt;
-                  &lt;td&gt;<xv>qux</xv>&lt;/td&gt;
-               &lt;/tr&gt;
-            &lt;/table&gt;
-         &lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>f</xv>&lt;/td&gt;
-         &lt;td&gt;
-            &lt;ul&gt;
-               &lt;li&gt;<xv>baz</xv>&lt;/li&gt;
-            &lt;/ul&gt;
-         &lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>g</xv>&lt;/td&gt;
-         &lt;td&gt;
-            &lt;ul&gt;
-               &lt;li&gt;<xv>789</xv>&lt;/li&gt;
-            &lt;/ul&gt;
-         &lt;/td&gt;
-      &lt;/tr&gt;
-   &lt;/table&gt;
-            </xt></td>
-         </tr>
-      </table>
-      
-      <h5 class='topic'>Beans with Map properties</h5>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>HTML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>class</jk> MyBean {
-      <jk>public</jk> Map&lt;String,String&gt; a;
-      <jk>public</jk> Map&lt;String,Number&gt; b;
-      <jk>public</jk> Map&lt;String,Object&gt; c; 
-   }
-            </td>
-            <td class='code'>
-   {
-      a: {
-         k1: <js>'foo'</js>
-      },
-      b: {
-         k2: 123
-      },
-      c: {
-         k3: <js>'bar'</js>,
-         k4: 456,
-         k5: <jk>true</jk>,
-         k6: <jk>null</jk>
-      }
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;table <xa>_type</xa>=<xs>'object'</xs>&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>a</xv>&lt;/td&gt;
-         &lt;td&gt;
-            &lt;table _type='object'&gt;
-               &lt;tr&gt;
-                  &lt;td&gt;<xv>k1</xv>&lt;/td&gt;
-                  &lt;td&gt;<xv>foo</xv>&lt;/td&gt;
-               &lt;/tr&gt;
-            &lt;/table&gt;
-         &lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>b</xv>&lt;/td&gt;
-         &lt;td&gt;
-            &lt;table _type='object'&gt;
-               &lt;tr&gt;
-                  &lt;td&gt;<xv>k2</xv>&lt;/td&gt;
-                  &lt;td&gt;<xv>123</xv>&lt;/td&gt;
-               &lt;/tr&gt;
-            &lt;/table&gt;
-         &lt;/td&gt;
-      &lt;/tr&gt;
-      &lt;tr&gt;
-         &lt;td&gt;<xv>c</xv>&lt;/td&gt;
-         &lt;td&gt;
-            &lt;table <xa>_type</xa>=<xs>'object'</xs>&gt;
-               &lt;tr&gt;
-                  &lt;td&gt;<xv>k3</xv>&lt;/td&gt;
-                  &lt;td&gt;<xv>bar</xv>&lt;/td&gt;
-               &lt;/tr&gt;
-               &lt;tr&gt;
-                  &lt;td&gt;<xv>k4</xv>&lt;/td&gt;
-                  &lt;td&gt;&lt;number&gt;<xv>456</xv>&lt;/number&gt;&lt;/td&gt;
-               &lt;/tr&gt;
-               &lt;tr&gt;
-                  &lt;td&gt;<xv>k5</xv>&lt;/td&gt;
-                  &lt;td&gt;&lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;&lt;/td&gt;
-               &lt;/tr&gt;
-               &lt;tr&gt;
-                  &lt;td&gt;<xv>k6</xv>&lt;/td&gt;
-                  &lt;td&gt;&lt;null/&gt;&lt;/td&gt;
-               &lt;/tr&gt;
-            &lt;/table&gt;
-         &lt;/td&gt;
-      &lt;/tr&gt;
-   &lt;/table&gt;
-            </xt></td>
-         </tr>
-      </table>
-      
-      TODO - Special characters - \n\t\b\f
-      TODO BeanWithPropertiesWithTypeNames...
-      TODO 
-      
-   </div>
-   
-</div>
-
-<!-- ======================================================================================================== -->
-<a id="HtmlParser"></a>
-<h2 class='topic' onclick='toggle(this)'>2 - HTML parsing support</h2>
-<div class='topic'>
-   The parser will handle anything produced by the serializer.
-</div></div>
+<div class="block">HTML Marshalling Support</div>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
diff --git a/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_HTML.png b/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_HTML.png
deleted file mode 100644
index b4a3576..0000000
Binary files a/content/site/apidocs/org/apache/juneau/jena/doc-files/Example_HTML.png and /dev/null differ
diff --git a/content/site/apidocs/org/apache/juneau/jena/package-summary.html b/content/site/apidocs/org/apache/juneau/jena/package-summary.html
index 612ce14..7b7d9ee 100644
--- a/content/site/apidocs/org/apache/juneau/jena/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/jena/package-summary.html
@@ -251,1020 +251,7 @@
 <!--   -->
 </a>
 <h2 title="Package org.apache.juneau.jena Description">Package org.apache.juneau.jena Description</h2>
-<div class="block"><p>RDF Marshalling Support</p>
-<script>
-   function toggle(x) {
-      var div = x.nextSibling;
-      while (div != null && div.nodeType != 1)
-         div = div.nextSibling;
-      if (div != null) {
-         var d = div.style.display;
-         if (d == 'block' || d == '') {
-            div.style.display = 'none';
-            x.className += " closed";
-         } else {
-            div.style.display = 'block';
-            x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-         }
-      }
-   }
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-   <li><p><a class='doclink' href='#RdfOverview'>RDF support overview</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#RdfOverviewExample'>Example</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#RdfSerializer'>RdfSerializer class</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#Namespaces'>Namespaces</a></p>
-      <li><p><a class='doclink' href='#UriProperties'>URI properties</a></p>
-      <li><p><a class='doclink' href='#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-      <li><p><a class='doclink' href='#Collections'>Collections</a></p>
-      <li><p><a class='doclink' href='#RootProperty'>Root property</a></p>
-      <li><p><a class='doclink' href='#TypedLiterals'>Typed literals</a></p>
-      <li><p><a class='doclink' href='#Recursion'>Non-tree models and recursion detection</a></p>
-      <li><p><a class='doclink' href='#SerializerConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#SerializerOtherNotes'>Other notes</a></p>
-   </ol> 
-   <li><p><a class='doclink' href='#RdfParser'>RdfParser class</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#GenericParsing'>Parsing into generic POJO models</a></p>
-      <li><p><a class='doclink' href='#ParserConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#ParserOtherNotes'>Other notes</a></p>
-   </ol> 
-</ol>
-
-
-<!-- ======================================================================================================== -->
-<a id="RdfOverview"></a>
-<h2 class='topic' onclick='toggle(this)'>1 - RDF support overview</h2>
-<div class='topic'>
-   <p>
-      Juneau supports serializing and parsing arbitrary POJOs to and from the following RDF formats:
-   </p>
-   <ul>
-      <li>RDF/XML
-      <li>Abbreviated RDF/XML
-      <li>N-Triple
-      <li>Turtle
-      <li>N3
-   </ul>
-   <p>
-      Juneau can serialize and parse instances of any of the following POJO types:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Java primitive objects (e.g. <code>String</code>, <code>Integer</code>, <code>Boolean</code>, 
-         <code>Float</code>).
-      <li>
-         Java collections framework objects (e.g. <code>HashSet</code>, <code>TreeMap</code>) containing anything on 
-            this list.
-      <li>
-         Multi-dimensional arrays of any type on this list.
-      <li>
-         Java Beans with properties of any type on this list.
-      <li>
-         Classes with standard transformations to and from <code>Strings</code> (e.g. classes containing 
-         <code>toString()</code>, <code>fromString()</code>, <code>valueOf()</code>, <code>constructor(String)</code>).
-   </ul>
-   <p>
-      In addition to the types shown above, Juneau includes the ability to define 'swaps' to transform non-standard 
-      object and property types to serializable forms (e.g. to transform <code>Calendars</code> to and from 
-      <code>ISO8601</code> strings, or <code>byte[]</code> arrays to and from base-64 encoded strings).
-      <br>These  can be associated with serializers/parsers, or can be associated with classes or bean properties through 
-      type and method annotations.
-   </p>
-   <p>
-      Refer to <a href='../../../../overview-summary.html#juneau-marshall.PojoCategories' class='doclink'>POJO Categories</a> 
-      for a complete definition of supported POJOs.
-   </p>
-   
-   <h5 class='topic'>Prerequisites</h5>
-   <p>
-      Juneau uses the Jena library for these formats.  
-      <br>The predefined serializers and parsers convert POJOs to and from RDF models and then uses Jena to convert 
-      them to and from the various RDF languages.  
-   </p>
-   <p>
-      Jena libraries must be provided on the classpath separately if you plan on making use of the RDF support.
-   </p>
-   <p>
-      The minimum list of required jars are:
-   </p>
-   <ul>
-      <li><code>jena-core-2.7.1.jar</code>   
-      <li><code>jena-iri-0.9.2.jar</code>    
-      <li><code>log4j-1.2.16.jar</code>   
-      <li><code>slf4j-api-1.6.4.jar</code>   
-      <li><code>slf4j-log4j12-1.6.4.jar</code>  
-   </ul>
-
-   <!-- ======================================================================================================== -->
-   <a id="RdfOverviewExample"></a>
-   <h3 class='topic' onclick='toggle(this)'>1.1 - RDF support overview - example</h3>
-   <div class='topic'>
-      <p>
-         The example shown here is from the Address Book resource located in the 
-         <code>org.apache.juneau.sample.war</code> application.
-      </p>
-      <p>
-         The POJO model consists of a <code>List</code> of <code>Person</code> beans, with each <code>Person</code> 
-         containing zero or more <code>Address</code> beans.
-      </p>
-      <p>
-         When you point a browser at <code>/sample/addressBook</code>, the POJO is rendered as HTML:
-      </p>
-      <img class='bordered' src="doc-files/Example_HTML.png">
-      <p>
-         By appending <code>?Accept=<i>mediaType</i>&amp;plainText=true</code> to the URL, you can view the data 
-         in the various RDF supported formats.
-      </p>
-      
-      <h5 class='figure'>RDF/XML</h5>
-      <img class='bordered' src="doc-files/Example_RDFXML.png">
-      
-      <h5 class='figure'>Abbreviated RDF/XML</h5>
-      <img class='bordered' src="doc-files/Example_RDFXMLABBREV.png">
-
-      <h5 class='figure'>N-Triple</h5>
-      <img class='bordered' src="doc-files/Example_NTriple.png">
-
-      <h5 class='figure'>Turtle</h5>
-      <img class='bordered' src="doc-files/Example_Turtle.png">
-      
-      <h5 class='figure'>N3</h5>
-      <img class='bordered' src="doc-files/Example_N3.png">
-   </div>
-</div>
-
-<!-- ======================================================================================================== -->
-<a id="RdfSerializer"></a>
-<h2 class='topic' onclick='toggle(this)'>2 - RdfSerializer class</h2>
-<div class='topic'>
-   <p>
-      The <a href="../../../../org/apache/juneau/jena/RdfSerializer.html" title="class in org.apache.juneau.jena"><code>RdfSerializer</code></a> class is the top-level class for all Jena-based serializers.
-      <br>Language-specific serializers are defined as inner subclasses of the <code>RdfSerializer</code> class:
-   </p>  
-   <ul>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.Xml.html" title="class in org.apache.juneau.jena"><code>RdfSerializer.Xml</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.XmlAbbrev.html" title="class in org.apache.juneau.jena"><code>RdfSerializer.XmlAbbrev</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.NTriple.html" title="class in org.apache.juneau.jena"><code>RdfSerializer.NTriple</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.Turtle.html" title="class in org.apache.juneau.jena"><code>RdfSerializer.Turtle</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.N3.html" title="class in org.apache.juneau.jena"><code>RdfSerializer.N3</code></a>
-   </ul>
-   <p>
-      Static reusable instances of serializers are also provided with default settings:
-   </p>
-   <ul>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.html#DEFAULT_XML"><code>RdfSerializer.DEFAULT_XML</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.html#DEFAULT_XMLABBREV"><code>RdfSerializer.DEFAULT_XMLABBREV</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.html#DEFAULT_TURTLE"><code>RdfSerializer.DEFAULT_TURTLE</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.html#DEFAULT_NTRIPLE"><code>RdfSerializer.DEFAULT_NTRIPLE</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfSerializer.html#DEFAULT_N3"><code>RdfSerializer.DEFAULT_N3</code></a>
-   </ul>
-   <p>
-      Abbreviated RDF/XML is currently the most widely accepted and readable RDF syntax, so the examples shown here 
-      will use that format.
-   </p>
-   <p>
-      For brevity, the examples will use public fields instead of getters/setters to reduce the size of the examples.
-      <br>In the real world, you'll typically want to use standard bean getters and setters.
-   </p>
-   <p>
-      To start off simple, we'll begin with the following simplified bean and build it up.
-   </p>
-   <p class='bcode'>
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name) {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-      }
-   }
-   </p>
-   <p>
-      The following code shows how to convert this to abbreviated RDF/XML:
-   </p>
-   <p class='bcode'>
-   <jc>// Create a new serializer with readable output.</jc>
-   RdfSerializer s = RdfSerializer.<jsm>create</jsm>().xmlabbrev()
-      .set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3).build();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>);
-
-   <jc>// Serialize the bean to RDF/XML.</jc>
-   String rdfXml = s.serialize(p);
-   </p>
-   <p>
-      It should be noted that serializers can also be created by cloning existing serializers:
-   </p>
-   <p class='bcode'>
-   <jc>// Create a new serializer with readable output by cloning an existing serializer.</jc>
-   RdfSerializer s = RdfSerializer.<jsf>DEFAULT_XMLABBREV</jsf>.builder()
-      .set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3).build();
-   </p>
-   <p>
-      This code produces the following output:
-   </p>
-   <p class='bcode'>
-   <xt>&lt;rdf:RDF</xt>
-       <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-       <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-       <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs><xt>&gt;</xt>
-      <xt>&lt;rdf:Description&gt;</xt>
-         <xt>&lt;jp:id&gt;</xt>1<xt>&lt;/jp:id&gt;</xt>
-         <xt>&lt;jp:name&gt;</xt>John Smith<xt>&lt;/jp:name&gt;</xt>
-      <xt>&lt;/rdf:Description&gt;</xt>
-   <xt>&lt;/rdf:RDF&gt;</xt>
-   </p>
-   <p>
-      Notice that we've taken an arbitrary POJO and converted it to RDF.
-      <br>The Juneau serializers and parsers are designed to work with arbitrary POJOs without requiring any annotations.
-      <br>That being said, several annotations are provided to customize how POJOs are handled to produce usable RDF.
-   </p>
-   
-   <!-- ======================================================================================================== -->
-   <a id="Namespaces"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.1 - Namespaces</h3>
-   <div class='topic'>
-      <p>
-         You'll notice in the previous example that Juneau namespaces are used to represent bean property names.
-         <br>These are used by default when namespaces are not explicitly specified.
-      </p>
-      <p>
-         The <code>juneau</code> namespace is used for generic names for objects that don't have namespaces 
-         associated with them.
-      </p>
-      <p>
-         The <code>juneaubp</code> namespace is used on bean properties that don't have namespaces associated with 
-         them.
-      </p>
-      <p>
-         The easiest way to specify namespaces is through annotations.
-         <br>In this example, we're going to associate the prefix <code>'per'</code> to our bean class and all properties 
-         of this class.
-         <br>We do this by adding the following annotation to our class:
-      </p>
-      <p class='bcode'>
-   <ja>@Rdf</ja>(prefix=<js>"per"</js>)
-   <jk>public class</jk> Person {
-   </p>
-   <p>
-      In general, the best approach is to define the namespace URIs at the package level using a 
-      <code>package-info.java</code> class, like so:
-   </p>
-   <p class='bcode'>
-   <jc>// RDF namespaces used in this package</jc>
-   <ja>@RdfSchema</ja>(
-      prefix=<js>"ab"</js>,
-      rdfNs={
-         <ja>@RdfNs</ja>(prefix=<js>"ab"</js>, namespaceURI=<js>"http://www.apache.org/addressBook/"</js>),
-         <ja>@RdfNs</ja>(prefix=<js>"per"</js>, namespaceURI=<js>"http://www.apache.org/person/"</js>),
-         <ja>@RdfNs</ja>(prefix=<js>"addr"</js>, namespaceURI=<js>"http://www.apache.org/address/"</js>),
-         <ja>@RdfNs</ja>(prefix=<js>"mail"</js>, namespaceURI=<js>"http://www.apache.org/mail/"</js>)
-      }
-   )
-   <jk>package</jk> org.apache.juneau.sample.addressbook;
-   <jk>import</jk> org.apache.juneau.xml.annotation.*;
-      </p>
-      <p>
-         This assigns a default prefix of <js>"ab"</js> for all classes and properties within the project, and 
-         specifies various other prefixes used within this project.
-      </p>
-      <p>
-         Now when we rerun the sample code, we'll get the following:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;rdf:RDF</xt>
-       <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-       <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-       <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-       <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs><xt>&gt;</xt>
-      <xt>&lt;rdf:Description&gt;</xt>
-         <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-         <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-      <xt>&lt;/rdf:Description&gt;</xt>
-   <xt>&lt;/rdf:RDF&gt;</xt>
-      </p>
-      <p>
-         Namespace auto-detection (<a href="../../../../org/apache/juneau/xml/XmlSerializer.html#XML_autoDetectNamespaces"><code>XmlSerializer.XML_autoDetectNamespaces</code></a>) is 
-         enabled on serializers by default.
-         <br>This causes the serializer to make a first-pass over the data structure to look for namespaces.
-         <br>In high-performance environments, you may want to consider disabling auto-detection and providing an 
-         explicit list of namespaces to the serializer to avoid this scanning step.
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer, but manually specify the namespaces.</jc>
-   RdfSerializer s = RdfSerializer.<jsm>create</jsm>()
-      .xmlabbrev()
-      .set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3)
-      .autoDetectNamespaces(<jk>false</jk>)
-      .namespaces(<js>"{per:'http://www.apache.org/person/'}"</js>)
-      .build();
-   </p>
-      <p>
-         This code change will produce the same output as before, but will perform slightly better since it doesn't 
-         have to crawl the POJO tree before serializing the result.
-      </p>
-   </div>
-
-   <!-- ======================================================================================================== -->
-   <a id="UriProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.2 - URI properties</h3>
-   <div class='topic'>
-      <p>
-         Bean properties of type <code>java.net.URI</code> or <code>java.net.URL</code> have special meaning to the 
-         RDF serializer.
-         <br>They are interpreted as resource identifiers.
-      </p>
-      <p>
-         In the following code, we're adding 2 new properties.
-         <br>The first property is annotated with <ja>@BeanProperty</ja> to identify that this property is the resource 
-         identifier for this bean.
-         <br>The second un-annotated property is interpreted as a reference to another resource.
-      </p>
-      <p class='bcode'> 
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <ja>@Rdf</ja>(beanUri=<jk>true</jk>) 
-      <jk>public</jk> URI <jf>uri</jf>;
-      
-      <jk>public</jk> URI <jf>addressBookUri</jf>;
-   
-      ...
-      
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri) <jk>throws</jk> URISyntaxException {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-         <jk>this</jk>.<jf>uri</jf> = <jk>new</jk> URI(uri);
-         <jk>this</jk>.<jf>addressBookUri</jf> = <jk>new</jk> URI(addressBookUri);
-      }
-   }
-      </p>
-      <p>
-         We alter our code to pass in values for these new properties.
-      </p>
-      <p class='bcode'>
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>);
-      </p>
-      <p>
-         Now when we run the sample code, we get the following:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;rdf:RDF</xt>
-       <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-       <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-       <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-       <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs><xt>&gt;</xt>
-      <xt>&lt;rdf:Description <b><xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs></b>&gt;</xt>
-         <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-         <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-         <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-      <xt>&lt;/rdf:Description&gt;</xt>
-   <xt>&lt;/rdf:RDF&gt;</xt>
-      </p>
-      <p>
-         The <a href="../../../../org/apache/juneau/annotation/URI.html" title="annotation in org.apache.juneau.annotation"><code>@URI</code></a> annotation can also be used on classes and properties 
-         to identify them as URLs when they're not instances of <code>java.net.URI</code> or <code>java.net.URL</code> 
-         (not needed if <code><ja>@Rdf</ja>(beanUri=<jk>true</jk>)</code> is already specified).
-      </p>
-      <p>
-         The following properties would have produced the same output as before.  
-         Note that the <ja>@URI</ja> annotation is only needed on the second property.
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <ja>@Rdf</ja>(beanUri=<jk>true</jk>) <jk>public</jk> String <jf>uri</jf>;
-      
-      <ja>@URI</ja> <jk>public</jk> String <jf>addressBookUri</jf>;
-      </p>
-      <p>
-         Also take note of the <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriResolution"><code>Serializer.SERIALIZER_uriResolution</code></a>,
-         <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriRelativity"><code>Serializer.SERIALIZER_uriRelativity</code></a>, and 
-         and <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriContext"><code>Serializer.SERIALIZER_uriContext</code></a>
-         settings that can be specified on the serializer to resolve relative and context-root-relative URIs to 
-         fully-qualified URIs.
-      </p>
-      <p>
-         This can be useful if you want to keep the URI authority and context root information out of the bean logic 
-         layer.
-      </p>
-      <p>
-         The following code produces the same output as before, but the URIs on the beans are relative.
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer with readable output.</jc>
-   RdfSerializer s = RdfSerializer.<jsm>create</jsm>()
-      .xmlabbrev()
-      .set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3);
-      .relativeUriBase(<js>"http://myhost/sample"</js>);
-      .absolutePathUriBase(<js>"http://myhost"</js>)
-      .build();
-      
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"person/1"</js>, <js>"/"</js>);
-
-   <jc>// Serialize the bean to RDF/XML.</jc>
-   String rdfXml = s.serialize(p);
-      </p>     
-   </div>
-   
-   <!-- ======================================================================================================== -->
-   <a id="BeanAnnotations"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.3 - @Bean and @BeanProperty annotations</h3>
-   <div class='topic'>
-      <p>
-         The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> and <a href="../../../../org/apache/juneau/annotation/BeanProperty.html" title="annotation in org.apache.juneau.annotation"><code>@BeanProperty</code></a> 
-         annotations are used to customize the behavior of beans across the entire framework.
-         <br>In addition to using them to identify the resource URI for the bean shown above, they have various other 
-         uses:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            Hiding bean properties.
-         <li>
-            Specifying the ordering of bean properties.
-         <li>
-            Overriding the names of bean properties.
-         <li>
-            Associating transforms at both the class and property level (to convert non-serializable POJOs to 
-            serializable forms).
-      </ul>
-      <p>
-         For example, we now add a <code>birthDate</code> property, and associate a swap with it to transform
-         it to an ISO8601 date-time string in GMT time.
-         <br>By default, <code>Calendars</code> are treated as beans by the framework, which is usually not how you want 
-         them serialized.
-         <br>Using swaps, we can convert them to standardized string forms.
-      </p>
-      <p class='bcode'> 
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar birthDate;
-      ...
-      
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) 
-            <jk>throws</jk> Exception {
-         ...
-         <jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-         <jk>this</jk>.<jf>birthDate</jf>.setTime(
-            DateFormat.<jsm>getDateInstance</jsm>(DateFormat.<jsf>MEDIUM</jsf>).parse(birthDate));
-      }
-   }
-      </p>
-      <p>
-         And we alter our code to pass in the birthdate.
-      </p>
-      <p class='bcode'>
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-      </p>
-      <p>
-         Now when we rerun the sample code, we'll get the following:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;rdf:RDF</xt>
-       <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-       <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-       <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-       <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs><xt>&gt;</xt>
-      <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-         <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-         <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-         <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-         <xt>&lt;per:birthDate&gt;</xt>1946-08-12T00:00:00Z<xt>&lt;/per:birthDate&gt;</xt>
-      <xt>&lt;/rdf:Description&gt;</xt>
-   <xt>&lt;/rdf:RDF&gt;</xt>
-      </p>
-   </div>
-   
-      
-   <!-- ======================================================================================================== -->
-   <a id="Collections"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.4 - Collections</h3>
-   <div class='topic'>
-      <p>
-         Collections and arrays are converted to RDF sequences.
-         <br>In our example, let's add a list-of-beans property to our sample class:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-      ...
-   }
-      </p>
-      <p>
-         The <code>Address</code> class has the following properties defined:
-      </p>
-      <p class='bcode'>
-   <ja>@Rdf</ja>(prefix=<js>"addr"</js>)
-   <jk>public class</jk> Address {
-
-      <jc>// Bean properties</jc>
-      <ja>@Rdf</ja>(beanUri=<jk>true</jk>) <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>personUri</jf>;
-      
-      <jk>public int</jk> <jf>id</jf>;
-      
-      <ja>@Rdf</ja>(prefix=<js>"mail"</js>) 
-      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      
-      <ja>@Rdf</ja>(prefix=<js>"mail"</js>) 
-      <jk>public int</jk> <jf>zip</jf>;
-      
-      <jk>public boolean</jk> <jf>isCurrent</jf>;
-   }
-      </p>
-      <p>
-         Next, add some quick-and-dirty code to add an address to our person bean:
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer (revert back to namespace autodetection).</jc>
-   RdfSerializer s = RdfSerializer.<jsm>create</jsm>().xmlabbrev().set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3).build();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-      </p>
-      <p>
-         Now when we run the sample code, we get the following:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;rdf:RDF</xt>
-       <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-       <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-       <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-       <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs>
-       <b><xa>xmlns:mail</xa>=<xs>"http://www.apache.org/mail/"</xs></b>
-       <b><xa>xmlns:addr</xa>=<xs>"http://www.apache.org/address/"</xs></b><xt>&gt;</xt>
-      <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-         <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-         <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-         <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-         <b><xt>&lt;per:addresses&gt;</xt>
-            <xt>&lt;rdf:Seq&gt;</xt>
-               <xt>&lt;rdf:li&gt;</xt>
-                  <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/address/1"</xs>&gt;</xt>
-                     <xt>&lt;addr:personUri <xa>rdf:resource</xa>=<xs>"http://sample/addressBook/person/1"</xs>/&gt;</xt>
-                     <xt>&lt;addr:id&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-                     <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-                     <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-                     <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-                     <xt>&lt;mail:zip&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-                     <xt>&lt;addr:isCurrent&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-                  <xt>&lt;/rdf:Description&gt;</xt>
-               <xt>&lt;/rdf:li&gt;</xt>
-            <xt>&lt;/rdf:Seq&gt;</xt>
-         <xt>&lt;/per:addresses&gt;</xt></b>
-      <xt>&lt;/rdf:Description&gt;</xt>
-   <xt>&lt;/rdf:RDF&gt;</xt>
-      </p>
-   </div>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="RootProperty"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.5 - Root property</h3>
-   <div class='topic'>
-      <p>
-         For all RDF languages, the POJO objects get broken down into simple triplets.
-         <br>Unfortunately, for tree-structured data like the POJOs shown above, this causes the root node of the tree 
-         to become lost.
-         <br>There is no easy way to identify that <code>person/1</code> is the root node in our tree once in triplet 
-         form, and in some cases it's impossible.
-      </p>
-      <p>
-         By default, the <a href="../../../../org/apache/juneau/jena/RdfParser.html" title="class in org.apache.juneau.jena"><code>RdfParser</code></a> class handles this by scanning all the nodes and 
-         identifying the nodes without incoming references.
-         <br>However, this is inefficient, especially for large models.
-         <br>And in cases where the root node is referenced by another node in the model by URL, it's not possible to 
-         locate the root at all.
-      </p>
-      <p>
-         To resolve this issue, the property <a href="../../../../org/apache/juneau/jena/RdfSerializer.html#RDF_addRootProperty"><code>RdfSerializer.RDF_addRootProperty</code></a> 
-         was introduced.
-         <br>When enabled, this adds a special <code>root</code> attribute to the root node to make it easy to locate 
-         by the parser.
-      </p>
-      <p>
-         To enable, set the <jsf>RDF_addRootProperty</jsf> property to <jk>true</jk> on the serializer:
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer.</jc>
-   RdfSerializer s = RdfSerializer.<jsm>create</jsm>()
-      .xmlabbrev()
-      .set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3),
-      .addRootProperty(<jk>true</jk>)
-      .build();
-      </p>  
-      <p>
-         Now when we rerun the sample code, we'll see the added <code>root</code> attribute on the root resource.
-      </p>
-      <p class='bcode'>
-   <xt>&lt;rdf:RDF</xt>
-       <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-       <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-       <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-       <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs>
-       <xa>xmlns:mail</xa>=<xs>"http://www.apache.org/mail/"</xs>
-       <xa>xmlns:addr</xa>=<xs>"http://www.apache.org/address/"</xs><xt>&gt;</xt>
-      <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-         <b><xt>&lt;j:root&gt;</xt>true<xt>&lt;/j:root&gt;</xt></b>
-         <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-         <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-         <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-         <xt>&lt;per:addresses&gt;</xt>
-            <xt>&lt;rdf:Seq&gt;</xt>
-               <xt>&lt;rdf:li&gt;</xt>
-                  <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/address/1"</xs>&gt;</xt>
-                     <xt>&lt;addr:personUri <xa>rdf:resource</xa>=<xs>"http://sample/addressBook/person/1"</xs>/&gt;</xt>
-                     <xt>&lt;addr:id&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-                     <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-                     <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-                     <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-                     <xt>&lt;mail:zip&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-                     <xt>&lt;addr:isCurrent&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-                  <xt>&lt;/rdf:Description&gt;</xt>
-               <xt>&lt;/rdf:li&gt;</xt>
-            <xt>&lt;/rdf:Seq&gt;</xt>
-         <xt>&lt;/per:addresses&gt;</xt>
-      <xt>&lt;/rdf:Description&gt;</xt>
-   <xt>&lt;/rdf:RDF&gt;</xt>
-      </p>
-   </div>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="TypedLiterals"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.6 - Typed literals</h3>
-   <div class='topic'>
-      <p>
-         XML-Schema data-types can be added to non-<code>String</code> literals through the 
-         <a href="../../../../org/apache/juneau/jena/RdfSerializer.html#RDF_addLiteralTypes"><code>RdfSerializer.RDF_addLiteralTypes</code></a> setting.
-      </p>
-      <p>
-         To enable, set the <jsf>RDF_addLiteralTypes</jsf> property to <jk>true</jk> on the serializer:
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer (revert back to namespace autodetection).</jc>
-   RdfSerializer s = RdfSerializer.<jsm>create</jsm>()
-      .xmlabbrev()
-      .set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3),
-      .addLiteralTypes(<jk>true</jk>)
-      .build();
-      </p>  
-      <p>
-         Now when we rerun the sample code, we'll see the added <code>root</code> attribute on the root resource.
-      </p>
-      <p class='bcode'>
-   <xt>&lt;rdf:RDF</xt>
-       <xa>xmlns:rdf</xa>=<xs>"http://www.w3.org/1999/02/22-rdf-syntax-ns#"</xs>
-       <xa>xmlns:j</xa>=<xs>"http://www.apache.org/juneau/"</xs>
-       <xa>xmlns:jp</xa>=<xs>"http://www.apache.org/juneaubp/"</xs>
-       <xa>xmlns:per</xa>=<xs>"http://www.apache.org/person/"</xs>
-       <xa>xmlns:mail</xa>=<xs>"http://www.apache.org/mail/"</xs>
-       <xa>xmlns:addr</xa>=<xs>"http://www.apache.org/address/"</xs><xt>&gt;</xt>
-      <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/person/1"</xs>&gt;</xt>
-         <xt>&lt;per:addressBookUri</xt> <xa>rdf:resource</xa>=<xs>"http://sample/addressBook"</xs><xt>/&gt;</xt>
-         <xt>&lt;per:id</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#int"</xs></b><xt>&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-         <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-         <xt>&lt;per:addresses&gt;</xt>
-            <xt>&lt;rdf:Seq&gt;</xt>
-               <xt>&lt;rdf:li&gt;</xt>
-                  <xt>&lt;rdf:Description <xa>rdf:about</xa>=<xs>"http://sample/addressBook/address/1"</xs>&gt;</xt>
-                     <xt>&lt;addr:personUri <xa>rdf:resource</xa>=<xs>"http://sample/addressBook/person/1"</xs>/&gt;</xt>
-                     <xt>&lt;addr:id</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#int"</xs></b>&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-                     <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-                     <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-                     <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-                     <xt>&lt;mail:zip</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#int"</xs></b>&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-                     <xt>&lt;addr:isCurrent</xt> <b><xa>rdf:datatype</xa>=<xs>"http://www.w3.org/2001/XMLSchema#boolean"</xs></b>&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-                  <xt>&lt;/rdf:Description&gt;</xt>
-               <xt>&lt;/rdf:li&gt;</xt>
-            <xt>&lt;/rdf:Seq&gt;</xt>
-         <xt>&lt;/per:addresses&gt;</xt>
-      <xt>&lt;/rdf:Description&gt;</xt>
-   <xt>&lt;/rdf:RDF&gt;</xt>
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="Recursion"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.7 - Non-tree models and recursion detection</h3>
-   <div class='topic'>
-      <p>
-         The RDF serializer is designed to be used against tree structures.
-         <br>It expects that there not be loops in the POJO model (e.g. children with references to parents, etc...).
-         <br>If you try to serialize models with loops, you will usually cause a <code>StackOverflowError</code> to 
-         be thrown (if <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxDepth"><code>Serializer.SERIALIZER_maxDepth</code></a> is not reached 
-         first).
-      </p>
-      <p>
-         If you still want to use the XML serializer on such models, Juneau provides the 
-         <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>Serializer.SERIALIZER_detectRecursions</code></a> setting.
-         <br>It tells the serializer to look for instances of an object in the current branch of the tree and skip 
-         serialization when a duplicate is encountered.
-      </p>
-      <p>
-         Recursion detection introduces a performance penalty of around 20%.
-         <br>For this reason the setting is disabled by default.
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.8 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this serializer:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/jena/RdfSerializer.html" title="class in org.apache.juneau.jena"><code>RdfSerializer</code></a> - Serializer context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.9 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau serializers, the RDF serializer is thread safe and maintains an internal cache of 
-            bean classes encountered.
-            For performance reasons, it's recommended that serializers be reused whenever possible instead of always 
-            creating new instances.
-      </ul>
-   </div>
-</div>
-
-
-<!-- ======================================================================================================== -->
-<a id="RdfParser"></a>
-<h2 class='topic' onclick='toggle(this)'>3 - RdfParser class</h2>
-<div class='topic'>
-   <p>
-      The <a href="../../../../org/apache/juneau/jena/RdfParser.html" title="class in org.apache.juneau.jena"><code>RdfParser</code></a> class is the top-level class for all Jena-based parsers.
-      <br>Language-specific parsers are defined as inner subclasses of the <code>RdfParser</code> class:
-   </p>  
-   <ul>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.Xml.html" title="class in org.apache.juneau.jena"><code>RdfParser.Xml</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.NTriple.html" title="class in org.apache.juneau.jena"><code>RdfParser.NTriple</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.Turtle.html" title="class in org.apache.juneau.jena"><code>RdfParser.Turtle</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.N3.html" title="class in org.apache.juneau.jena"><code>RdfParser.N3</code></a>
-   </ul>
-   <p>
-      The <code>RdfParser.Xml</code> parser handles both regular and abbreviated RDF/XML.
-   </p>
-   <p>
-      Static reusable instances of parsers are also provided with default settings:
-   </p>
-   <ul>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.html#DEFAULT_XML"><code>RdfParser.DEFAULT_XML</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.html#DEFAULT_TURTLE"><code>RdfParser.DEFAULT_TURTLE</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.html#DEFAULT_NTRIPLE"><code>RdfParser.DEFAULT_NTRIPLE</code></a>
-      <li><a href="../../../../org/apache/juneau/jena/RdfParser.html#DEFAULT_N3"><code>RdfParser.DEFAULT_N3</code></a>
-   </ul>
-   <p>
-      For an example, we will build upon the previous example and parse the generated RDF/XML back into the original 
-      bean.
-   </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer with readable output.</jc>
-   RdfSerializer s = RdfSerializer.<jsm>create</jsm>()
-      .xmlabbrev()
-      .set(RdfProperties.<jsf>RDF_rdfxml_tab</jsf>, 3)
-      .addRootProperty(<jk>true</jk>)
-      .build();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-
-   <jc>// Serialize the bean to RDF/XML.</jc>
-   String rdfXml = s.serialize(p);
-   
-   <jc>// Parse it back into a bean using the reusable XML parser.</jc>
-   p = RdfParser.<jsf>DEFAULT_XML</jsf>.parse(rdfXml, Person.<jk>class</jk>);
-
-   <jc>// Render it as JSON.</jc>
-   String json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(p);
-   System.<jsm>err</jsm>.println(json);
-   </p>
-   <p>
-      We print it out to JSON to show that all the data has been preserved:
-   </p>
-   <p class='bcode'>
-   {
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      id: 1, 
-      name: <js>'John Smith'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: 1, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: 12345, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }  
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="GenericParsing"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.1 - Parsing into generic POJO models</h3>
-   <div class='topic'>
-      <p>
-         The RDF parser is not limited to parsing back into the original bean classes.
-         <br>If the bean classes are not available on the parsing side, the parser can also be used to parse into a 
-         generic model consisting of <code>Maps</code>, <code>Collections</code>, and primitive objects.
-      </p>
-      <p>
-         You can parse into any <code>Map</code> type (e.g. <code>HashMap</code>, <code>TreeMap</code>), but
-         using <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a> is recommended since it has many convenience methods
-         for converting values to various types. 
-         <br>The same is true when parsing collections.  You can use any Collection (e.g. <code>HashSet</code>, 
-         <code>LinkedList</code>) or array (e.g. <code>Object[]</code>, <code>String[]</code>, 
-         <code>String[][]</code>), but using <a href="../../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a> is recommended.
-      </p>
-      <p>
-         When the map or list type is not specified, or is the abstract <code>Map</code>, <code>Collection</code>, 
-         or <code>List</code> types, the parser will use <code>ObjectMap</code> and <code>ObjectList</code> by 
-         default.
-      </p>
-      <p>
-         In the following example, we parse into an <code>ObjectMap</code> and use the convenience methods for 
-         performing data conversion on values in the map.
-      </p>
-      <p class='bcode'> 
-   <jc>// Parse RDF into a generic POJO model.</jc>
-   ObjectMap m = RdfParser.<jsf>DEFAULT_XML</jsf>.parse(rdfXml, ObjectMap.<jk>class</jk>);
-
-   <jc>// Get some simple values.</jc>
-   String name = m.getString(<js>"name"</js>);
-   <jk>int</jk> id = m.getInt(<js>"id"</js>);
-
-   <jc>// Get a value convertable from a String.</jc>
-   URI uri = m.get(URI.<jk>class</jk>, <js>"uri"</js>);
-
-   <jc>// Get a value using a swap.</jc>
-   CalendarSwap swap = <jk>new</jk> CalendarSwap.ISO8601DTZ();
-   Calendar birthDate = m.get(swap, <js>"birthDate"</js>);
-
-   <jc>// Get the addresses.</jc>
-   ObjectList addresses = m.getObjectList(<js>"addresses"</js>);
-
-   <jc>// Get the first address and convert it to a bean.</jc>
-   Address address = addresses.get(Address.<jk>class</jk>, 0);
-      </p>
-      
-      <p>
-         However, there are caveats when parsing into generic models due to the nature of RDF.
-         <br>Watch out for the following:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            The ordering of entries are going to be inconsistent.
-         <li>
-            Bean URIs are always going to be denoted with the key <js>"uri"</js>.
-            <br>Therefore, you cannot have a bean with a URI property and a separate property named <js>"uri"</js>.
-            <br>The latter will overwrite the former.
-            <br>This isn't a problem when parsing into beans instead of generic POJO models.
-         <li>
-            All values are strings.
-            <br>This normally isn't a problem when using <code>ObjectMap</code> and <code>ObjectList</code> since 
-            various methods are provided for converting to the correct type anyway.
-         <li>
-            The results may not be what is expected if there are lots of URL reference loops in the RDF model.
-            <br>As nodes are processed from the root node down through the child nodes, the parser keeps
-            track of previously processed parent URIs and handles them accordingly.
-            <br>If it finds that the URI has previously been processed, it handles it as a normal URI string and doesn't 
-            process further.
-            <br>However, depending on how complex the reference loops are, the parsed data may end up having the
-            same data in it, but structured differently from the original POJO.
-      </ul>
-      <p>
-         We can see some of these when we render the <code>ObjectMap</code> back to JSON.
-      </p>
-      <p class='bcode'>
-   System.<jsm>err</jsm>.println(JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(m));
-      </p>
-      <p>
-         This is what's produced:
-      </p>
-      <p class='bcode'>
-   {
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            isCurrent: <js>'true'</js>, 
-            zip: <js>'12345'</js>, 
-            state: <js>'NY'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            street: <js>'100 Main Street'</js>, 
-            id: <js>'1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>
-         }
-      ], 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      name: <js>'John Smith'</js>, 
-      id: <js>'1'</js>, 
-      root: <js>'true'</js>
-   }     
-      </p>
-      <p>
-         As a general rule, parsing into beans is often more efficient than parsing into generic models.
-         <br>And working with beans is often less error prone than working with generic models.
-      </p>
-   </div>
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.2 - Configurable properties</h3>
-   <!-- TODO -->
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this parser:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/jena/RdfParser.html" title="class in org.apache.juneau.jena"><code>RdfParser</code></a> - Parser context properties.
-      </ul>
-   </div>      
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.3 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau parsers, the RDF parser is thread safe and maintains an internal cache of bean 
-            classes encountered.
-            For performance reasons, it's recommended that parser be reused whenever possible instead of always 
-            creating new instances.
-      </ul>
-   </div>
-   
-</div>
-
-<p align="center"><i><b>*** fín ***</b></i></p></div>
+<div class="block">RDF Marshalling Support</div>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
diff --git a/content/site/apidocs/org/apache/juneau/json/annotation/Json.html b/content/site/apidocs/org/apache/juneau/json/annotation/Json.html
index 6b80a6e..a59c14f 100644
--- a/content/site/apidocs/org/apache/juneau/json/annotation/Json.html
+++ b/content/site/apidocs/org/apache/juneau/json/annotation/Json.html
@@ -162,7 +162,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/json/annota
  <p>
  This annotation can be applied to beans as well as other objects serialized to other types (e.g. strings).
  
- <h5 class='section'>Example:</h5>
+ <h5 class='figure'>Example:</h5>
  <p class='bcode'>
    <ja>@Json</ja>(wrapperAttr=<js>"myWrapper"</js>)
    <jk>public class</jk> MyBean {
@@ -171,7 +171,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/json/annota
  </p>
  
  <p>
- Without the <ja>@Xml</ja> annotations, serializing this bean as JSON would have produced the following...
+ Without the <ja>@Json</ja> annotations, serializing this bean as JSON would have produced the following...
  <p class='bcode'>
    {
       f1: 123
@@ -179,7 +179,7 @@ public @interface <a href="../../../../../src-html/org/apache/juneau/json/annota
  </p>
  
  <p>
- With the annotations, serializing this bean as XML produces the following...
+ With the annotations, serializing this bean as JSON produces the following...
  <p class='bcode'>
    {
       myWrapper: {
diff --git a/content/site/apidocs/org/apache/juneau/json/doc-files/Example_HTML.png b/content/site/apidocs/org/apache/juneau/json/doc-files/Example_HTML.png
deleted file mode 100644
index b4a3576..0000000
Binary files a/content/site/apidocs/org/apache/juneau/json/doc-files/Example_HTML.png and /dev/null differ
diff --git a/content/site/apidocs/org/apache/juneau/json/package-summary.html b/content/site/apidocs/org/apache/juneau/json/package-summary.html
index 0a96237..a7e0ed6 100644
--- a/content/site/apidocs/org/apache/juneau/json/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/json/package-summary.html
@@ -190,966 +190,7 @@
 <!--   -->
 </a>
 <h2 title="Package org.apache.juneau.json Description">Package org.apache.juneau.json Description</h2>
-<div class="block"><p>JSON Marshalling Support</p>
-<script>
-   function toggle(x) {
-      var div = x.nextSibling;
-      while (div != null && div.nodeType != 1)
-         div = div.nextSibling;
-      if (div != null) {
-         var d = div.style.display;
-         if (d == 'block' || d == '') {
-            div.style.display = 'none';
-            x.className += " closed";
-         } else {
-            div.style.display = 'block';
-            x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-         }
-      }
-   }
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-   <li><p><a class='doclink' href='#Overview'>JSON support overview</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#OverviewExample'>Example</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#JsonSerializer'>JsonSerializer class</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-      <li><p><a class='doclink' href='#Collections'>Collections</a></p>
-      <li><p><a class='doclink' href='#JsonSchemaSupport'>JSON-Schema support</a></p>
-      <li><p><a class='doclink' href='#Recursion'> Non-tree models and recursion detection</a></p>
-      <li><p><a class='doclink' href='#SerializerConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#SerializerOtherNotes'>Other notes</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#JsonParser'>JsonParser class</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#GenericParsing'>Parsing into generic POJO models</a></p>
-      <li><p><a class='doclink' href='#ParserConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#ParserOtherNotes'>Other notes</a></p>
-   </ol>
-</ol>
-
-<!-- ======================================================================================================== -->
-<a id="Overview"></a>
-<h2 class='topic' onclick='toggle(this)'>1 -JSON support overview</h2>
-<div class='topic'>
-   <p>
-      Juneau supports converting arbitrary POJOs to and from JSON using ultra-efficient serializers and parsers.
-      <br>The JSON serializer converts POJOs directly to JSON without the need for intermediate DOM objects using a 
-      highly-efficient state machine.
-      <br>Likewise, the JSON parser creates POJOs directly from JSON without the need for intermediate DOM objects. 
-   </p>
-   <p>
-      Juneau can serialize and parse instances of any of the following POJO types:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Java primitives and primitive objects (e.g. <code>String</code>, <code>Integer</code>, <code>Boolean</code>, 
-         <code>Float</code>).
-      <li>
-         Java Collections Framework objects (e.g. <code>HashSet</code>, <code>TreeMap</code>) containing anything on 
-         this list.
-      <li>
-         Multi-dimensional arrays of any type on this list.
-      <li>
-         Java Beans with properties of any type on this list.
-      <li>
-         Classes with standard transformations to and from <code>Strings</code> (e.g. classes containing 
-         <code>toString()</code>, <code>fromString()</code>, <code>valueOf()</code>, <code>constructor(String)</code>).
-      <li>
-         Non-serializable classes and properties with associated <code>PojoSwaps</code> that convert them to 
-         serializable forms.
-   </ul>
-   <p>
-      Refer to <a href='../../../../overview-summary.html#juneau-marshall.PojoCategories' class='doclink'>POJO Categories</a> 
-      for a complete definition of supported POJOs.
-   </p>
-   
-   <h5 class='topic'>Prerequisites</h5>
-   <p>
-      The Juneau JSON serialization and parsing support does not require any external prerequisites.  
-      It only requires Java 1.6 or above.
-   </p>
-
-   <!-- ======================================================================================================== -->
-   <a id="OverviewExample"></a>
-   <h3 class='topic' onclick='toggle(this)'>1.1 - JSON support overview - example</h3>
-   <div class='topic'>
-      <p>
-         The example shown here is from the Address Book resource located in the 
-         <code>org.apache.juneau.sample.war</code> application.
-         <br>The POJO model consists of a <code>List</code> of <code>Person</code> beans, with each <code>Person</code> 
-         containing zero or more <code>Address</code> beans.
-      </p>
-      <p>
-         When you point a browser at <code>/sample/addressBook</code>, the POJO is rendered as HTML:
-      </p>
-      <img class='bordered' src="doc-files/Example_HTML.png">
-      <p>
-         By appending <code>?Accept=<i>mediaType</i>&amp;plainText=true</code> to the URL, you can view the data in 
-         the various supported JSON formats:
-      </p>
-      
-      <h5 class='figure'>Normal JSON</h5>
-      <img class='bordered' src="doc-files/Example_JSON.png">
-      
-      <h5 class='figure'>Simple JSON</h5>
-      <img class='bordered' src="doc-files/Example_JSONSimple.png">
-
-      <p>
-         In addition to serializing POJOs to JSON, Juneau includes support for serializing POJO metamodels to 
-         JSON Schema.
-      </p>
-      
-      <h5 class='figure'>JSON Schema</h5>
-      <img class='bordered' src="doc-files/Example_JSONSchema.png">
-      
-      <p>
-         The JSON data type produced depends on the Java object type being serialized.
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            Primitives and primitive objects are converted to JSON primitives.
-         <li>
-            Beans and Maps are converted to JSON objects.
-         <li>
-            Collections and arrays are converted to JSON arrays.
-         <li>
-            Anything else is converted to JSON strings.
-      </ul>
-         
-      <h5 class='topic'>Examples:</h5>
-      <table class='styled'>
-         <tr>
-            <th>POJO type</th>
-            <th>Example</th>
-            <th>Serialized form</th>
-         </tr>
-         <tr>
-            <td>String</td>
-            <td><code>serializer.serialize(<js>"foobar"</js>);</code></td>
-            <td><code><js>'foobar'</js></code>
-         </tr>
-         <tr>
-            <td>Number</td>
-            <td><code>serializer.serialize(123);</code></td>
-            <td><code><jk>123</jk></code>
-         </tr>
-         <tr>
-            <td>Boolean</td>
-            <td><code>serializer.serialize(<jk>true</jk>);</code></td>
-            <td><code><jk>true</jk></code>
-         </tr>
-         <tr>
-            <td>Null</td>
-            <td><code>serializer.serialize(<jk>null</jk>);</code></td>
-            <td><code><jk>null</jk></code>
-         </tr>
-         <tr>
-            <td>Beans with properties of any type on this list</td>
-            <td><code>serializer.serialize(<jk>new</jk> MyBean());</code></td>
-            <td><code>{p1:<js>'val1'</js>,p2:<jk>true</jk>}</code>
-         </tr>
-         <tr>
-            <td>Maps with values of any type on this list</td>
-            <td><code>serializer.serialize(<jk>new</jk> TreeMap());</code></td>
-            <td><code>{key1:<js>'val1'</js>,key2:<jk>true</jk>}</code>
-         </tr>
-         <tr>
-            <td>Collections and arrays of any type on this list</td>
-            <td><code>serializer.serialize(<jk>new</jk> Object[]{1,<js>"foo"</js>,<jk>true</jk>});</code></td>
-            <td><code>[1,'foo',true]</code>
-         </tr>
-      </table>
-      <p>
-         In addition, swaps can be used to convert non-serializable POJOs into serializable forms, such as converting 
-         <code>Calendar</code> object to ISO8601 strings, or <code><jk>byte</jk>[]</code> arrays to Base-64 
-         encoded strings.
-         <br>These swaps can be associated at various levels:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            On serializer and parser instances to handle all objects of the class type globally.
-         <li>
-            On classes through the <code><ja>@Bean</ja></code> annotation.
-         <li>
-            On bean properties through the <code><ja>@BeanProperty</ja></code> annotations.
-      </ul>
-   </div>
-</div>
-
-<!-- ======================================================================================================== -->
-<a id="JsonSerializer"></a>
-<h2 class='topic' onclick='toggle(this)'>2 - JsonSerializer class</h2>
-<div class='topic'>
-   <p>
-      <a href="../../../../org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a> is the class used to convert POJOs to JSON.
-      <br><a href="../../../../org/apache/juneau/json/JsonSchemaSerializer.html" title="class in org.apache.juneau.json"><code>JsonSchemaSerializer</code></a> is the class used to generate JSON-Schema from POJOs.
-   </p>  
-   <p>
-      The JSON serializer includes several configurable settings.
-      <br>Static reusable instances of Json serializers are provided with commonly-used settings:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         <a href="../../../../org/apache/juneau/json/JsonSerializer.html#DEFAULT"><code>JsonSerializer.DEFAULT</code></a> - All default settings
-      <li>
-         <a href="../../../../org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX"><code>JsonSerializer.DEFAULT_LAX</code></a> - Single quotes, only quote attributes when 
-         necessary.
-      <li>
-         <a href="../../../../org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX_READABLE"><code>JsonSerializer.DEFAULT_LAX_READABLE</code></a> - Readable output.
-   </ul>
-   
-   <h5 class='topic'>Notes about examples</h5>
-   <p>
-      The examples shown in this document will use single-quote, readable settings.
-      <br>For brevity, the examples will use public fields instead of getters/setters to reduce the size of the examples.
-      <br>In the real world, you'll typically want to use standard bean getters and setters.
-   </p>
-   <p>
-      To start off simple, we'll begin with the following simplified bean and build upon it.
-   </p>
-   <p class='bcode'>
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name) {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-      }
-   }
-   </p>
-   <p>
-      The following code shows how to convert this to simple JSON:
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   JsonSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>);
-
-   <jc>// Serialize the bean to JSON.</jc>
-   String json = s.serialize(p);
-   </p>
-   <p>
-      We could have also created a new serializer with the same settings using the following code:
-   </p>
-   <p class='bcode'>
-   JsonSerializer s = JsonSerializer.<jsm>create</jsm>().simple().ws().sq().build();
-   </p>
-   
-   <p>
-      The code above produces the following output:
-   </p>
-   <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>
-   }
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="BeanAnnotations"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.1 - @Bean and @BeanProperty annotations</h3>
-   <div class='topic'>
-      <p>
-         The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> and 
-         <a href="../../../../org/apache/juneau/annotation/BeanProperty.html" title="annotation in org.apache.juneau.annotation"><code>@BeanProperty</code></a> annotations are used to customize the 
-         behavior of beans across the entire framework.
-         <br>They have various uses:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            Hiding bean properties.
-         <li>
-            Specifying the ordering of bean properties.
-         <li>
-            Overriding the names of bean properties.
-         <li>
-            Associating swaps at both the class and property level (to convert non-serializable POJOs to 
-            serializable forms).
-      </ul>
-      <p>
-         For example, we now add a <code>birthDate</code> property, and associate a swap with it to transform it to 
-         an ISO8601 date-time string in GMT time.
-         <br>We'll also add a couple of <code>URI</code> properties.
-         <br>By default, <code>Calendars</code> are treated as beans by the framework, which is usually not how you 
-         want them serialized.
-         <br>Using swaps, we can convert them to standardized string forms.
-      </p>
-      <p class='bcode'> 
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>addressBookUri</jf>;
-
-      <ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
-
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) <jk>throws</jk> Exception {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-         <jk>this</jk>.<jf>uri</jf> = <jk>new</jk> URI(uri);
-         <jk>this</jk>.<jf>addressBookUri</jf> = <jk>new</jk> URI(addressBookUri);
-         <jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-         <jk>this</jk>.<jf>birthDate</jf>.setTime(DateFormat.<jsm>getDateInstance</jsm>(DateFormat.<jsf>MEDIUM</jsf>).parse(birthDate));
-      }
-   }
-      </p>
-      <p>
-         Next, we alter our code to pass in the birthdate:
-      </p>
-      <p class='bcode'>
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-      </p>
-      <p>
-         Now when we rerun the sample code, we'll get the following:
-      </p>
-      <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>
-   }
-      </p>
-      <p>
-         Another useful feature is the <a href="../../../../org/apache/juneau/annotation/Bean.html#propertyNamer--"><code>@Bean.propertyNamer()</code></a> 
-         annotation that allows you to plug in your own logic for determining bean property names.
-         <br>The <a href="../../../../org/apache/juneau/PropertyNamerDLC.html" title="class in org.apache.juneau"><code>PropertyNamerDLC</code></a> is an example of an alternate property namer.
-         It converts bean property names to lowercase-dashed format.
-      </p>
-      
-      <h5 class='topic'>Example:</h5>
-      <p class='bcode'> 
-   <ja>@Bean</ja>(propertyNamer=PropertyNamerDLC.<jk>class</jk>)
-   <jk>public class</jk> Person {
-      ...
-      </p>
-      
-      <h5 class='figure'>Results</h5>
-      <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      <js>'address-book-uri'</js>: <js>'http://sample/addressBook'</js>, 
-      <js>'birth-date'</js>: <js>'1946-08-12T00:00:00Z'</js>
-   }
-      </p>
-   </div>
-   
-      
-   <!-- ======================================================================================================== -->
-   <a id="Collections"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.2 - Collections</h3>
-   <div class='topic'>
-      <p>
-         In our example, let's add a list-of-beans property to our sample class:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-      ...
-   }
-      </p>
-      <p>
-         The <code>Address</code> class has the following properties defined:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Address {
-
-      <jc>// Bean properties</jc>
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>personUri</jf>;
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      <jk>public int</jk> <jf>zip</jf>;
-      <jk>public boolean</jk> <jf>isCurrent</jf>;
-   }
-      </p>
-      <p>
-         Next, add some quick-and-dirty code to add an address to our person bean:
-      </p>
-      <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   JsonSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-      </p>
-      <p>
-         Now when we run the sample code, we get the following:
-      </p>
-      <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <jk>1</jk>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <jk>12345</jk>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }
-      </p>
-   </div>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="JsonSchemaSupport"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.3 - JSON-Schema support</h3>
-   <div class='topic'>
-      <p>
-         Juneau provides the <a href="../../../../org/apache/juneau/json/JsonSchemaSerializer.html" title="class in org.apache.juneau.json"><code>JsonSchemaSerializer</code></a> class for generating JSON-Schema 
-         documents that describe the output generated by the <a href="../../../../org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a> class.
-         <br>This class shares the same properties as <code>JsonSerializer</code>.
-         <br>For convenience the <a href="../../../../org/apache/juneau/json/JsonSerializer.html#getSchemaSerializer--"><code>JsonSerializer.getSchemaSerializer()</code></a> method has been 
-         added for creating instances of schema serializers from the regular serializer instance.
-      </p>
-      <p>
-         <i>Note:</i> As of this writing, JSON-Schema has not been standardized, so the output generated by the 
-         schema serializer may be subject to future modifications.
-      </p>
-      <p>
-         Lets start with the classes from the previous examples:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>addressBookUri</jf>;
-      <ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
-      <jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) <jk>throws</jk> Exception {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-         <jk>this</jk>.<jf>uri</jf> = <jk>new</jk> URI(uri);
-         <jk>this</jk>.<jf>addressBookUri</jf> = <jk>new</jk> URI(addressBookUri);
-         <jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-         <jk>this</jk>.<jf>birthDate</jf>.setTime(DateFormat.getDateInstance(DateFormat.<jsf>MEDIUM</jsf>).parse(birthDate));
-      }
-   }
-
-   <jk>public class</jk> Address {
-      <jc>// Bean properties</jc>
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>personUri</jf>;
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      <jk>public int</jk> <jf>zip</jf>;
-      <jk>public boolean</jk> <jf>isCurrent</jf>;
-   }
-      </p>
-      <p>
-         The code for creating our POJO model and generating JSON-Schema is shown below:
-      </p>
-      <p class='bcode'>
-   <jc>// Get the schema serializer for one of the default JSON serializers.</jc>
-   JsonSchemaSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.getSchemaSerializer();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);
-
-   <jc>// Get the JSON Schema corresponding to the JSON generated above.</jc>
-   String jsonSchema = s.serialize(p);
-      </p>
-      
-      <h5 class='figure'>Results</h5>
-      <p class='bcode'>
-   {
-      type: <js>'object'</js>, 
-      description: <js>'org.apache.juneau.sample.Person'</js>, 
-      properties: {
-         id: {
-            type: <js>'number'</js>, 
-            description: <js>'int'</js>
-         }, 
-         name: {
-            type: <js>'string'</js>, 
-            description: <js>'java.lang.String'</js>
-         }, 
-         uri: {
-            type: <js>'any'</js>, 
-            description: <js>'java.net.URI'</js>
-         }, 
-         addressBookUri: {
-            type: <js>'any'</js>, 
-            description: <js>'java.net.URI'</js>
-         }, 
-         birthDate: {
-            type: <js>'any'</js>, 
-            description: <js>'java.util.Calendar'</js>
-         }, 
-         addresses: {
-            type: <js>'array'</js>, 
-            description: <js>'java.util.LinkedList&lt;org.apache.juneau.sample.Address&gt;'</js>, 
-            items: {
-               type: <js>'object'</js>, 
-               description: <js>'org.apache.juneau.sample.Address'</js>, 
-               properties: {
-                  uri: {
-                     type: <js>'any'</js>, 
-                     description: <js>'java.net.URI'</js>
-                  }, 
-                  personUri: {
-                     type: <js>'any'</js>, 
-                     description: <js>'java.net.URI'</js>
-                  }, 
-                  id: {
-                     type: <js>'number'</js>, 
-                     description: <js>'int'</js>
-                  }, 
-                  street: {
-                     type: <js>'string'</js>, 
-                     description: <js>'java.lang.String'</js>
-                  }, 
-                  city: {
-                     type: <js>'string'</js>, 
-                     description: <js>'java.lang.String'</js>
-                  }, 
-                  state: {
-                     type: <js>'string'</js>, 
-                     description: <js>'java.lang.String'</js>
-                  }, 
-                  zip: {
-                     type: <js>'number'</js>, 
-                     description: <js>'int'</js>
-                  }, 
-                  isCurrent: {
-                     type: <js>'boolean'</js>, 
-                     description: <js>'boolean'</js>
-                  }
-               }
-            }
-         }
-      }
-   }
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="Recursion"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.4 - Non-tree models and recursion detection</h3>
-   <div class='topic'>
-      <p>
-         The JSON serializer is designed to be used against POJO tree structures. 
-         <br>It expects that there not be loops in the POJO model (e.g. children with references to parents, etc...).
-         <br>If you try to serialize models with loops, you will usually cause a <code>StackOverflowError</code> to 
-         be thrown (if <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxDepth"><code>Serializer.SERIALIZER_maxDepth</code></a> is not reached 
-         first).
-      </p>
-      <p>
-         If you still want to use the JSON serializer on such models, Juneau provides the 
-         <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>Serializer.SERIALIZER_detectRecursions</code></a> setting.
-         <br>It tells the serializer to look for instances of an object in the current branch of the tree and skip 
-         serialization when a duplicate is encountered.
-      </p>
-      <p>
-         For example, let's make a POJO model out of the following classes:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> A {
-      <jk>public</jk> B b;
-   }
-   
-   <jk>public class</jk> B {
-      <jk>public</jk> C c;
-   }
-   
-   <jk>public class</jk> C {
-      <jk>public</jk> A a;
-   }
-      </p>
-      <p>
-         Now we create a model with a loop and serialize the results.
-      </p>
-      <p class='bcode'>
-   <jc>// Clone an existing serializer and set property for detecting recursions.</jc>
-   JsonSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.builder().detectRecursions(<jk>true</jk>).build();
-
-   <jc>// Create a recursive loop.</jc>
-   A a = <jk>new</jk> A();
-   a.<jf>b</jf> = <jk>new</jk> B();
-   a.<jf>b</jf>.<jf>c</jf> = <jk>new</jk> C();
-   a.<jf>b</jf>.<jf>c</jf>.<jf>a</jf> = a;
-   
-   <jc>// Serialize to JSON.</jc>
-   String json = s.serialize(a);
-      </p>
-      <p>
-         What we end up with is the following, which does not serialize the contents of the <code>c</code> field:
-      </p>
-      <p class='bcode'>
-   {
-      b: {
-         c: {
-         }
-      }
-   }
-      </p>
-      <p>
-         Without recursion detection enabled, this would cause a stack-overflow error.
-      </p>
-      <p>
-         Recursion detection introduces a performance penalty of around 20%.
-         <br>For this reason the setting is disabled by default.
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.5 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this serializer:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a> - Serializer context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.6 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau serializers, the JSON serializer is thread safe and maintains an internal cache 
-            of bean classes encountered.
-            <br>For performance reasons, it's recommended that serializers be reused whenever possible instead of 
-            always creating new instances.
-      </ul>
-   </div>
-</div>
-
-
-<!-- ======================================================================================================== -->
-<a id="JsonParser"></a>
-<h2 class='topic' onclick='toggle(this)'>3 - JsonParser class</h2>
-<div class='topic'>
-   <p>
-      The <a href="../../../../org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a> class is the class used to parse JSON back into POJOs.
-   </p>  
-   <p>
-      The JSON parser supports ALL valid JSON, including:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Javascript comments.
-      <li>
-         Single or double quoted values.
-      <li>
-         Quoted (strict) or unquoted (non-strict) attributes.
-      <li>
-         JSON fragments (such as string, numeric, or boolean primitive values).
-      <li>
-         Concatenated strings. 
-   </ul> 
-   <p>
-      A static reusable instance of <code>JsonParser</code> is also provided for convenience:
-   </p>
-   <ul>
-      <li><a href="../../../../org/apache/juneau/json/JsonParser.html#DEFAULT"><code>JsonParser.DEFAULT</code></a>
-   </ul>
-   <p>
-      Let's build upon the previous example and parse the generated JSON back into the original bean.
-      <br>We start with the JSON that was generated.
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   JsonSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-
-   <jc>// Serialize the bean to JSON.</jc>
-   String json = s.serialize(p);
-   </p>
-   <p>
-      This code produced the following:
-   </p>
-   <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <jk>1</jk>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <jk>12345</jk>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }
-   </p>
-   <p>
-      The code to convert this back into a bean is:
-   </p>
-   <p class='bcode'>
-   <jc>// Parse it back into a bean using the reusable JSON parser.</jc>
-   Person p = JsonParser.<jsf>DEFAULT</jsf>.parse(json, Person.<jk>class</jk>);
-
-   <jc>// Render it back as JSON.</jc>
-   json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(p);
-   </p>
-   <p>
-      We print it back out to JSON to show that all the data has been preserved:
-   </p>
-   <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <jk>1</jk>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <jk>12345</jk>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }  
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="GenericParsing"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.1 - Parsing into generic POJO models</h3>
-   <div class='topic'>
-      <p>
-         The JSON parser is not limited to parsing back into the original bean classes.
-         <br>If the bean classes are not available on the parsing side, the parser can also be used to 
-         parse into a generic model consisting of <code>Maps</code>, <code>Collections</code>, and primitive
-         objects.
-      </p>
-      <p>
-         You can parse into any <code>Map</code> type (e.g. <code>HashMap</code>, <code>TreeMap</code>), but
-         using <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a> is recommended since it has many convenience methods
-         for converting values to various types.
-         <br>The same is true when parsing collections.  You can use any Collection (e.g. <code>HashSet</code>, 
-         <code>LinkedList</code>) or array (e.g. <code>Object[]</code>, <code>String[]</code>, 
-         <code>String[][]</code>), but using <a href="../../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a> is recommended.
-      </p>
-      <p>
-         When the map or list type is not specified, or is the abstract <code>Map</code>, <code>Collection</code>, 
-         or <code>List</code> types, the parser will use <code>ObjectMap</code> and <code>ObjectList</code> by 
-         default.
-      </p>
-      <p>
-         Starting back with our original JSON:
-      </p>
-      <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <jk>1</jk>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <jk>12345</jk>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }
-      </p>
-      <p>
-         We can parse this into a generic <code>ObjectMap</code>:
-      </p>
-      <p class='bcode'> 
-   <jc>// Parse JSON into a generic POJO model.</jc>
-   ObjectMap m = JsonParser.<jsf>DEFAULT</jsf>.parse(json, ObjectMap.<jk>class</jk>);
-
-   <jc>// Convert it back to JSON.</jc>
-   String json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(m);
-      </p>
-      <p>
-         What we end up with is the exact same output.
-         <br>Even the numbers and booleans are preserved because they are parsed into <code>Number</code> and 
-         <code>Boolean</code> objects when parsing into generic models.
-      </p>
-      <p class='bcode'>
-   {
-      id: <jk>1</jk>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <jk>1</jk>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <jk>12345</jk>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }
-      </p>
-      <p>
-         Once parsed into a generic model, various convenience methods are provided on the <code>ObjectMap</code>
-            and <code>ObjectList</code> classes to retrieve values:
-      </p>
-      <p class='bcode'>
-   <jc>// Parse JSON into a generic POJO model.</jc>
-   ObjectMap m = JsonParser.<jsf>DEFAULT</jsf>.parse(json, ObjectMap.<jk>class</jk>);
-
-   <jc>// Get some simple values.</jc>
-   String name = m.getString(<js>"name"</js>);
-   <jk>int</jk> id = m.getInt(<js>"id"</js>);
-
-   <jc>// Get a value convertable from a String.</jc>
-   URI uri = m.get(URI.<jk>class</jk>, <js>"uri"</js>);
-
-   <jc>// Get a value using a swap.</jc>
-   CalendarSwap swap = <jk>new</jk> CalendarSwap.ISO8601DTZ();
-   Calendar birthDate = m.get(swap, <js>"birthDate"</js>);
-
-   <jc>// Get the addresses.</jc>
-   ObjectList addresses = m.getObjectList(<js>"addresses"</js>);
-
-   <jc>// Get the first address and convert it to a bean.</jc>
-   Address address = addresses.get(Address.<jk>class</jk>, 0);
-      </p>
-
-      <p>
-         As a general rule, parsing into beans is often more efficient than parsing into generic models.
-         <br>And working with beans is often less error prone than working with generic models.
-      </p>     
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.2 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this parser:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a> - Serializer context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.3 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau parsers, the JSON parser is thread safe and maintains an internal cache of bean 
-            classes encountered.
-            <br>For performance reasons, it's recommended that parser be reused whenever possible instead of always 
-            creating new instances.
-      </ul>
-   </div>
-   
-</div>
-<p align="center"><i><b>*** fín ***</b></i></p></div>
+<div class="block">JSON Marshalling Support</div>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
diff --git a/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html b/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html
index d118ce8..c3c33ae 100644
--- a/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/msgpack/package-summary.html
@@ -141,28 +141,7 @@
 <!--   -->
 </a>
 <h2 title="Package org.apache.juneau.msgpack Description">Package org.apache.juneau.msgpack Description</h2>
-<div class="block"><p>MessagePack Marshalling Support</p>
-<script>
-   function toggle(x) {
-      var div = x.nextSibling;
-      while (div != null && div.nodeType != 1)
-         div = div.nextSibling;
-      if (div != null) {
-         var d = div.style.display;
-         if (d == 'block' || d == '') {
-            div.style.display = 'none';
-            x.className += " closed";
-         } else {
-            div.style.display = 'block';
-            x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-         }
-      }
-   }
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-</ol></div>
+<div class="block">MessagePack Marshalling Support</div>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
diff --git a/content/site/apidocs/org/apache/juneau/uon/doc-files/Example_HTML.png b/content/site/apidocs/org/apache/juneau/uon/doc-files/Example_HTML.png
deleted file mode 100644
index 04dcf41..0000000
Binary files a/content/site/apidocs/org/apache/juneau/uon/doc-files/Example_HTML.png and /dev/null differ
diff --git a/content/site/apidocs/org/apache/juneau/uon/doc-files/rfc_uon.txt b/content/site/apidocs/org/apache/juneau/uon/doc-files/rfc_uon.txt
deleted file mode 100644
index 7880064..0000000
--- a/content/site/apidocs/org/apache/juneau/uon/doc-files/rfc_uon.txt
+++ /dev/null
@@ -1,294 +0,0 @@
-Network Working Group                                          J. Bognar
-Request for Comments: 9999                                                
-Category: Informational                                       Salesforce
-                                                                Feb 2017
-
-                            ***DRAFT***
-               URI Object Notation (UON): Generic Syntax
-
-
-About this document
-
-   This memo provides information for the Internet community.  It does
-   not specify an Internet standard of any kind.  Distribution of this
-   memo is unlimited.
-
-Copyright Notice
-
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-
-Abstract
-
-   This document describes a grammar that builds upon RFC2396
-   (Uniform Resource Identifiers).  Its purpose is to define a 
-   generalized object notation for URI query parameter values similar in 
-   concept to Javascript Object Notation (RFC4627).  The goal is a 
-   syntax that allows for array and map structures to be
-   such that any data structure defined in JSON can be losslessly 
-   defined in an equivalent URI-based grammar, yet be fully compliant 
-   with the RFC2396 specification. 
-
-   This grammar provides the ability to construct the following data 
-   structures in URL parameter values: 
-	
-      OBJECT
-      ARRAY
-      NUMBER
-      BOOLEAN
-      STRING
-      NULL
-
-   Example:
-
-      The following shows a sample object defined in Javascript:
-
-         var x = { 
-            id: 1, 
-            name: 'John Smith', 
-            uri: 'http://sample/addressBook/person/1', 
-            addressBookUri: 'http://sample/addressBook', 
-            birthDate: '1946-08-12T00:00:00Z', 
-            otherIds: null,
-            addresses: [ 
-               { 
-                  uri: 'http://sample/addressBook/address/1', 
-                  personUri: 'http://sample/addressBook/person/1', 
-                  id: 1, 
-                  street: '100 Main Street', 
-                  city: 'Anywhereville', 
-                  state: 'NY', 
-                  zip: 12345, 
-                  isCurrent: true,
-               } 
-            ] 
-         } 
-
-      Using the syntax defined in this document, the equivalent 
-      UON notation would be as follows:
-
-         x=(id=1,name='John+Smith',uri=http://sample/
-         addressBook/person/1,addressBookUri=http://sample/
-         addressBook,birthDate=1946-08-12T00:00:00Z,otherIds=null,
-         addresses=@((uri=http://sample/addressBook/
-         address/1,personUri=http://sample/addressBook/
-         person/1,id=1,street='100+Main+Street',city=
-         Anywhereville,state=NY,zip=12345,isCurrent=true))) 
-
-1. Language constraints
-
-   The grammar syntax is constrained to usage of characters allowed by 
-      URI notation:
-
-      uric       = reserved | unreserved | escaped
-      reserved   = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
-                   "$" | ","
-      unreserved = alphanum | mark
-      mark       = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
-
-   In particular, the URI specification disallows the following 
-   characters in unencoded form:
-
-      unwise     = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"
-      delims     = "<" | ">" | "#" | "%" | <">
-
-   The exclusion of {} and [] characters eliminates the possibility of 
-   using JSON as parameter values.
-
-
-2. Grammar constructs
-
-   The grammar consists of the following language constructs:
-   
-      Objects - Values consisting of one or more child name/value pairs.
-      Arrays - Values consisting of zero or more child values.
-      Booleans - Values consisting of true/false values.
-      Numbers - Decimal and floating point values.
-      Strings - Everything else.
-
-2.1. Objects 
-
-   Objects are values consisting of one or more child name/value pairs.
-   The (...) construct is used to define an object.
-
-   Example:  A simple map with two key/value pairs:
-
-      a1=(b1=x1,b2=x2)
-
-   Example:  A nested map:
-   
-      a1=(b1=(c1=x1,c2=x2))
-
-2.2. Arrays
-
-   Arrays are values consisting of zero or more child values.
-   The @(...) construct is used to define an array.
-
-   Example:  An array of two string values:
-
-      a1=@(x1,x2)
-
-   Example:  A 2-dimensional array:
-
-      a1=@(@(x1,x2),@(x3,x4))
-
-   Example:  An array of objects:
-
-      a1=@((b1=x1,b2=x2),(c1=x1,c2=x2))
-
-2.3. Booleans
-
-   Booleans are values that can only take on values "true" or "false".  
-   
-   Example:  Two boolean values:
-
-      a1=true&a2=false
-   
-2.4. Numbers
-
-   Numbers are represented without constructs.
-   Both decimal and float numbers are supported.
-   
-   Example:  Two numerical values, one decimal and one float:
-
-      a1=123&a2=1.23e1
-
-2.5. Null values
-
-   Nulls are represented by the keyword 'null':
-
-      a1=null
-
-2.6. Strings
-
-   Strings are encapsulated in single quote (') characters.
-   
-   Example:  Simple string values:
-
-      a1='foobar'&a2='123'&a3='true'
-         
-   The quotes are optional when the string cannot be confused
-   with one of the constructs listed above (i.e. objects/arrays/
-   booleans/numbers/null). 
-   
-   Example:  A simple string value, unquoted:
-
-      a1=foobar
-    
-   Strings must be quoted for the following cases:
-      
-      - The string can be confused with a boolean or number.
-      - The string is empty.
-      - The string contains one or more whitespace characters.
-      - The string starts with one of the following characters:
-        @ (
-      - The string contains any of the following characters:
-        ) , =
-   
-   For example, the string literal "(b1=x)" should be 
-   represented as follows:
-
-      a1='(b1=x)'
-   
-   The tilde character (~) is used for escaping characters to prevent 
-   them from being confused with syntax characters.  
-
-   The following characters must be escaped in string literals:  
-
-      ' ~
-   
-   Example:  The string "foo'bar~baz"
-
-      a1='foo~'bar~~baz'
-   
-2.7. Top-level attribute names
-
-   Top-level attribute names (e.g. "a1" in "&a1=foobar") are treated
-   as strings but for one exception.  The '=' character must be
-   encoded so as not to be confused as a key/value separator.
-   Note that the '=' character must also be escaped per the UON
-   notation.
-   
-   For example, the UON equivalent of {"a=b":"a=b"} constructed as
-   a top-level query parameter string would be as follows:
-   
-      a~%3Db=a~=b
-      
-   Note that the '=' character is encoded in the attribute name,
-   but it is not necessary to have it encoded in the attribute value.
-
-2.8. URL-encoded characters
-
-   UON notation allows for any character, even UON grammar
-   characters, to be URL-encoded.
-   
-   The following query strings are fully equivalent in structure:
-   
-     a1=(b1='x1',b2='x2')
-     %61%31=%79%6f%75%20%61%72%65%20%61%20%6e%65%72%64%21
-
-
-3. BNF
-
-   The following BNF describes the syntax for top-level URI query 
-   parameter values (e.g. ?<attrname>=<value>).
-
-   attrname    = (string | null)
-   value       = (var | string | null)
-
-   string      = ("'" litchar* "'") | litchar*
-   null        = "null"
-   
-   var         = ovar | avar | nvar | boolean | number
-   ovar        = "(" [pairs] ")"
-   avar        = "@(" [values] ")"
-
-   pairs       = pair ["," pairs]
-   pair        = key "=" value	
-   values      = value ["," values]
-   key         = (string | null)
-   boolean     = "true" | "false"
-
-   escape_seq  = "~" escaped
-   encode_seq  = "%" digithex digithex
-
-   number      = [-] (decimal | float) [exp]
-   decimal     = "0" | (digit19 digit*)
-   float       = decimal "." digit+
-   exp         = "e" [("+" | "-")] digit+
-
-   litchar     = unencoded | encode_seq | escape_seq
-   escaped     = "@" | "," | "(" | ")" | "~" | "=" 
-   unencoded   = alpha | digit | 
-                 ";" | "/" | "?" | ":" | "@" |
-                 "-" | "_" | "." | "!" | "*" | "'" 
-   alpha       = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |
-                 "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |
-                 "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" |
-                 "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |             
-                 "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
-                 "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"
-   digit       = "0" | digit19
-   digit19     = "1" | "2" | "3" | "4" | "5" | "6" | "7" |
-                 "8" | "9"
-   digithex    = digit | 
-                 "A" | "B" | "C" | "D" | "E" | "F" |
-                 "a" | "b" | "c" | "d" | "e" | "f"
-
-
-
-
diff --git a/content/site/apidocs/org/apache/juneau/uon/package-summary.html b/content/site/apidocs/org/apache/juneau/uon/package-summary.html
index e66f730..da4080b 100644
--- a/content/site/apidocs/org/apache/juneau/uon/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/uon/package-summary.html
@@ -182,973 +182,7 @@
 <!--   -->
 </a>
 <h2 title="Package org.apache.juneau.uon Description">Package org.apache.juneau.uon Description</h2>
-<div class="block"><p>UON Marshalling Support</p>
-<script>
-   function toggle(x) {
-      var div = x.nextSibling;
-      while (div != null && div.nodeType != 1)
-         div = div.nextSibling;
-      if (div != null) {
-         var d = div.style.display;
-         if (d == 'block' || d == '') {
-            div.style.display = 'none';
-            x.className += " closed";
-         } else {
-            div.style.display = 'block';
-            x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-         }
-      }
-   }
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-   <li><p><a class='doclink' href='#Overview'>UON support overview</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#OverviewExample'>Example</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#UrlEncodingSerializer'>UrlEncodingSerializer and UonSerializer classes</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-      <li><p><a class='doclink' href='#Collections'>Collections</a></p>
-      <li><p><a class='doclink' href='#Recursion'> Non-tree models and recursion detection</a></p>
-      <li><p><a class='doclink' href='#SerializerConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#SerializerOtherNotes'>Other notes</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#UrlEncodingParser'>UrlEncodingParser and UonParser classes</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#GenericParsing'>Parsing into generic POJO models</a></p>
-      <li><p><a class='doclink' href='#ParserConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#ParserOtherNotes'>Other notes</a></p>
-   </ol>
-</ol>
-
-<!-- ======================================================================================================== -->
-<a id="Overview"></a>
-<h2 class='topic' onclick='toggle(this)'>1 - URL encoding support overview</h2>
-<div class='topic'>
-   <p>
-      Juneau supports converting arbitrary POJOs to and from URL-encoded strings using ultra-efficient serializers 
-      and parsers.
-      <br>The serializer converts POJOs directly to URL-encoded strings without the need for intermediate DOM objects 
-      using a highly-efficient state machine.
-      <br>Likewise, the parser creates POJOs directly from URL-encoded strings without the need for intermediate DOM 
-      objects. 
-   </p>
-   <p>
-      Juneau uses UON (URL-Encoded Object Notation) for representing POJOs.  
-      The UON specification can be found <a href='doc-files/rfc_uon.txt'>here</a>.
-   </p>
-   <p>
-      Juneau can serialize and parse instances of any of the following POJO types:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Java primitives and primitive objects (e.g. <code>String</code>, <code>Integer</code>, <code>Boolean</code>, 
-         <code>Float</code>).
-      <li>
-         Java Collections Framework objects (e.g. <code>HashSet</code>, <code>TreeMap</code>) containing anything 
-         on this list.
-      <li>
-         Multi-dimensional arrays of any type on this list.
-      <li>
-         Java Beans with properties of any type on this list.
-      <li>
-         Classes with standard transformations to and from <code>Strings</code> (e.g. classes containing 
-         <code>toString()</code>, <code>fromString()</code>, <code>valueOf()</code>, 
-         <code>constructor(String)</code>).
-      <li>
-         Non-serializable classes and properties with associated <code>PojoSwaps</code> that convert them to 
-         serializable forms.
-   </ul>
-   <p>
-      Refer to <a href='../../../../overview-summary.html#juneau-marshall.PojoCategories' class='doclink'>POJO Categories</a> 
-      for a complete definition of supported POJOs.
-   </p>
-   
-   <h5 class='topic'>Prerequisites</h5>
-   <p>
-      The Juneau URL-encoding serialization and parsing support does not require any external prerequisites.  
-      It only requires Java 1.6 or above.
-   </p>
-
-   <!-- ======================================================================================================== -->
-   <a id="OverviewExample"></a>
-   <h3 class='topic' onclick='toggle(this)'>1.1 - URL-encoding support overview - example</h3>
-   <div class='topic'>
-      <p>
-         The example shown here is from the Address Book resource located in the 
-         <code>org.apache.juneau.sample.war</code> application.
-         <br>The POJO model consists of a <code>List</code> of <code>Person</code> beans, with each <code>Person</code> 
-         containing zero or more <code>Address</code> beans.
-      </p>
-      <p>
-         When you point a browser at <code>/sample/addressBook/people/1</code>, the POJO is rendered as HTML:
-      </p>
-      <img class='bordered' src="doc-files/Example_HTML.png">
-      <p>
-         By appending <code>?Accept=application/x-www-form-urlencoded&amp;plainText=true</code> to the URL, you can 
-         view the data as a URL-encoded string:
-      </p>
-      <p class='bcode'>
-   <un>0</un>=(
-      <ua>uri</ua>=<us>http://localhost:10000/addressBook/people/1</us>,
-      <ua>addressBookUri</ua>=<us>http://localhost:10000/addressBook/</us>,
-      <ua>id</ua>=<un>1</un>,
-      <ua>name</ua>=<us>'Barack+Obama'</us>,
-      <ua>birthDate</ua>=<us>'Aug+4,+1961'</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/1</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/1</us>,
-            <ua>id</ua>=<un>1</un>,
-            <ua>street</ua>=<us>'1600+Pennsylvania+Ave'</us>,
-            <ua>city</ua>=<us>Washington</us>,
-            <ua>state</ua>=<us>DC</us>,
-            <ua>zip</ua>=<un>20500</un>,
-            <ua>isCurrent</ua>=<uk>true</uk>
-         ),
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/2</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/1</us>,
-            <ua>id</ua>=<un>2</un>,
-            <ua>street</ua>=<us>'5046+S+Greenwood+Ave'</us>,
-            <ua>city</ua>=<us>Chicago</us>,
-            <ua>state</ua>=<us>IL</us>,
-            <ua>zip</ua>=<un>60615</un>,
-            <ua>isCurrent</ua>=<uk>false</uk>
-         )
-      ),
-      <ua>age</ua>=<un>56</un>
-   )
-   &amp;<un>1</un>=(
-      <ua>uri</ua>=<us>http://localhost:10000/addressBook/people/2</us>,
-      <ua>addressBookUri</ua>=<us>http://localhost:10000/addressBook/</us>,
-      <ua>id</ua>=<un>2</un>,
-      <ua>name</ua>=<us>'George+Walker+Bush'</us>,
-      <ua>birthDate</ua>=<us>'Jul+6,+1946'</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/3</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/2</us>,
-            <ua>id</ua>=<un>3</un>,
-            <ua>street</ua>=<us>'43+Prairie+Chapel+Rd'</us>,
-            <ua>city</ua>=<us>Crawford</us>,
-            <ua>state</ua>=<us>TX</us>,
-            <ua>zip</ua>=<un>76638</un>,
-            <ua>isCurrent</ua>=<uk>true</uk>
-         ),
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/4</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/2</us>,
-            <ua>id</ua>=<un>4</un>,
-            <ua>street</ua>=<us>'1600+Pennsylvania+Ave'</us>,
-            <ua>city</ua>=<us>Washington</us>,
-            <ua>state</ua>=<us>DC</us>,
-            <ua>zip</ua>=<un><us>20500</un>,
-            <ua>isCurrent</ua>=<uk>false</uk>
-         )
-      ),
-      <ua>age</ua>=<un>71</un>
-   )     
-      </p>
-      
-      <p>
-         Juneau supports two kinds of serialization:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            Construction of full URL query parameter strings (e.g. <code>&amp;key=value</code> pairs) from beans 
-            and maps.
-         <li>
-            Construction of URL query parameter value strings (e.g. just the <code>value</code> portion of 
-            <code>&amp;key=value</code> pairs) from any POJO.  
-      </ul>
-      <p>
-         Top-level beans and maps can serialized as key/value pairs as shown below:
-      </p>
-      
-      <h5 class='figure'>Example:  A bean with 2 string properties, 'foo' and 'baz', serialized to a query string</h5>
-      <p class='bcode'> 
-   http://localhost/sample?<ua>foo</ua>=<us>bar</us>&amp;<ua>baz</ua>=<us>bing</us>
-      </p>
-      <p>
-         Lower-level beans and maps are also serialized as key/value pairs, but are surrounded with a 
-         <js>"(...)"</js> construct to denote an object mapping, and uses a comma as the parameter delimiter instead 
-         of <js>"&amp;"</js>.
-      </p>
-      
-      <h5 class='figure'>Example:  A bean serialized as a query parameter value.</h5>
-      <p class='bcode'> 
-   http://localhost/sample?<ua>a1</ua>=(<ua>foo</ua>=<us>bar</us>,<ua>baz</ua>=<us>bing</us>)
-      </p>
-      
-      <h5 class='figure'>General methodology:</h5>
-      <table class='styled' style='border-collapse: collapse;'>
-         <tr><th>Java type</th><th>JSON equivalent</th><th>UON</th></tr>
-         <tr>
-            <td>Maps/beans</td>
-            <td>OBJECT</td>
-            <td class='code'>
-   <ua>a1</ua>=(<ua>b1</ua>=<us>x1</us>,<ua>b2</ua>=<us>x2</us>)
-   <ua>a1</ua>=(<ua>b1</ua>=(<ua>c1</ua>=<us>x1</us>,<ua>c2</ua>=<us>x2</us>))
-            </td>
-         </tr>
-         <tr>
-            <td>Collections/arrays</td>
-            <td>ARRAY</td>
-            <td class='code'>
-   <ua>a1</ua>=@(<us>x1</us>,<us>x2</us>)
-   <ua>a1</ua>=@(@(<us>x1</us>,<us>x2</us>),@(<us>x3</us>,<us>x4</us>))
-   <ua>a1</ua>=@((<ua>b1</ua>=<us>x1</us>,<ua>b2</ua>=<us>x2</us>),(<ua>c1</ua>=<us>x1</us>,<ua>c2</ua>=<us>x2</us>))
-            </td>
-         </tr>
-         <tr>
-            <td>Booleans</td>
-            <td>BOOLEAN</td>
-            <td class='code'>
-   <ua>a1</ua>=<uk>true</uk>&amp;<ua>a2</ua>=<uk>false</uk>
-            </td>
-         </tr>
-         <tr>
-            <td>int/float/double/...</td>
-            <td>NUMBER</td>
-            <td class='code'>
-   <ua>a1</ua>=<un>123</un>&amp;<ua>a2</ua>=<un>1.23e1</un>
-            </td>
-         </tr>
-         <tr>
-            <td>null</td>
-            <td>NULL</td>
-            <td class='code'>
-   <ua>a1</ua>=<uk>null</uk>
-            </td>
-         </tr>
-         <tr>
-            <td>String</td>
-            <td>STRING</td>
-            <td class='code'>
-   <ua>a1</ua>=<us>foobar</us>
-   <ua>a1</ua>=<us>'true'</us>
-   <ua>a1</ua>=<us>'null'</us>
-   <ua>a1</ua>=<us>'123'</us>
-   <ua>a1</ua>=<us>' string with whitespace '</us>
-   <ua>a1</ua>=<us>'string with ~'escaped~' quotes'</us>
-            </td>
-         </tr>
-      </table>
-      <p>
-         Refer to the <a href='doc-files/rfc_uon.txt'>UON specification</a> for a complete set of syntax rules.      
-      <p>
-         <code>PojoSwaps</code> can be used to convert non-serializable POJOs into serializable forms, such as 
-         converting <code>Calendar</code> object to ISO8601 strings, or <code><uk>byte</uk>[]</code> arrays to 
-         Base-64 encoded strings.
-         <br>These transforms can be associated at various levels:
-      </p>
-      <ul>
-         <li>On serializer and parser instances to handle all objects of the class type globally.
-         <li>On classes through the <code><ja>@Bean</ja></code> annotation.
-         <li>On bean properties through the <code><ja>@BeanProperty</ja></code> annotations.
-      </ul>
-      
-      <h5 class='figure'>Example:  A serialized Calendar object using <code>CalendarSwap.RFC2822DTZ</code> transform.</h5>
-      <p class='bcode'> 
-   http://localhost/sample?<ua>a1=<us>'Sun,+03+Mar+1901+09:05:06+GMT'</us>
-      </p>
-   </div>
-   
-</div>
-
-<!-- ======================================================================================================== -->
-<a id="UrlEncodingSerializer"></a>
-<h2 class='topic' onclick='toggle(this)'>2 - UrlEncodingSerializer and UonSerializer classes</h2>
-<div class='topic'>
-   <p>
-      <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingSerializer</code></a> and <a href="../../../../org/apache/juneau/uon/UonSerializer.html" title="class in org.apache.juneau.uon"><code>UonSerializer</code></a> 
-      classes are used to convert POJOs to URL-encoded strings.
-      <br>The <code>UonSerializer</code> class converts parameter values to UON notation. 
-      The <code>UrlEncodingSerializer</code> class converts a POJO to key/value URL-Encoded pairs using 
-      <code>UonSerializer</code> to serialize the values.
-      If you're trying to construct complete URL-Encoded entities, use <code>UrlEncodingSerializer</code>. 
-      If you're constructing your own key/value pairs, use <code>UonSerializer</code>.
-   </p>  
-   <p>
-      The serializers include several configurable settings.
-      <br>Static reusable instances of serializers are provided with commonly-used settings:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html#DEFAULT"><code>UrlEncodingSerializer.DEFAULT</code></a> - All default settings, strict mode.
-      <li>
-         <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html#DEFAULT_READABLE"><code>UrlEncodingSerializer.DEFAULT_READABLE</code></a> - Use whitespace and 
-         indentation for readability.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonSerializer.html#DEFAULT"><code>UonSerializer.DEFAULT</code></a> - All default settings, strict mode.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonSerializer.html#DEFAULT_READABLE"><code>UonSerializer.DEFAULT_READABLE</code></a> - Use whitespace and indentation for 
-         readability.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonSerializer.html#DEFAULT_ENCODING"><code>UonSerializer.DEFAULT_ENCODING</code></a> - Same as DEFAULT, but use URL-Encoding on 
-         special characters.
-   </ul>
-   <p>
-      The general guidelines on which serializer to use is:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Use encoding serializers when you're using the results to construct a URI yourself, and therefore 
-         need invalid URI characters to be encoded.
-      <li>
-         Use un-encoding serializers when you're creating parameter values and passing them off to some other
-         utility class that will itself encode invalid URI characters.
-      <li>
-         Use the readable serializer for debugging purposes.
-   </ul>
-
-   <h5 class='topic'>Notes about examples</h5>
-   <p>
-      The examples shown in this document will use default strict settings.
-      <br>For brevity, the examples will use public fields instead of getters/setters to reduce the size of the 
-      examples.
-      <br>In the real world, you'll typically want to use standard bean getters and setters.
-   </p>
-   <p>
-      To start off simple, we'll begin with the following simplified bean and build upon it.
-   </p>
-   <p class='bcode'>
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name) {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-      }
-   }
-   </p>
-   <p>
-      The following code shows how to convert this to a URL-encoded value:
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   UonSerializer s = UonSerializer.<jsf>DEFAULT</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <uk>new</uk> Person(1, <js>"John Smith"</js>);
-
-   <jc>// Serialize the bean to URL-encoded parameter value.</jc>
-   String urlencoded = s.serialize(p);
-   </p>
-   <p>
-      The code above produces the following output:
-   </p>
-   <p class='bcode'>
-   (<ua>id</ua>=<un>1</un>,<ua>name</ua>=<us>'John+Smith'</us>)
-   </p>
-   <p>
-      The <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingSerializer</code></a> class converts
-      maps and beans into top-level query parameter strings.
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   UrlEncodingSerializer s = UrlEncodingSerializer.<jsf>DEFAULT</jsf>;
-   
-   <jc>// Serialize the bean to URL-encoded query string.</jc>
-   String urlencoded = s.serialize(p);
-   </p>
-   <p>
-      The code above produces the following output:
-   </p>
-   <p class='bcode'>
-   <ua>id</ua>=<un>1</un>&amp;<ua>name</ua>=<us>'John+Smith'</us>
-   </p>
-   <p>
-      By default, the <code>UrlEncodingSerializer</code> class will URL-Encode special characters, and the 
-      <code>UonSerializer</code> will NOT URL-encode special characters.  
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="BeanAnnotations"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.1 - @Bean and @BeanProperty annotations</h3>
-   <div class='topic'>
-      <p>
-         The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> and <a href="../../../../org/apache/juneau/annotation/BeanProperty.html" title="annotation in org.apache.juneau.annotation"><code>@BeanProperty</code></a> 
-         annotations are used to customize the behavior of beans across the entire framework.
-         <br>They have various uses:
-      </p>
-      <ul>
-         <li>Hiding bean properties.
-         <li>Specifying the ordering of bean properties.
-         <li>Overriding the names of bean properties.
-         <li>Associating transforms at both the class and property level (to convert non-serializable POJOs to 
-            serializable forms).
-      </ul>
-      <p>
-         For example, we now add a <code>birthDate</code> property, and associate a transform with it to transform
-         it to an ISO8601 date-time string in GMT time.
-         <br>We'll also add a couple of <code>URI</code> properties.
-         <br>By default, <code>Calendars</code> are treated as beans by the framework, which is usually not how you 
-         want them serialized.
-         <br>Using transforms, we can convert them to standardized string forms.
-      </p>
-      <p class='bcode'> 
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>addressBookUri</jf>;
-
-      <ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) 
-            <jk>throws</jk> Exception {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-         <jk>this</jk>.<jf>uri</jf> = <jk>new</jk> URI(uri);
-         <jk>this</jk>.<jf>addressBookUri</jf> = <jk>new</jk> URI(addressBookUri);
-         <jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-         <jk>this</jk>.<jf>birthDate</jf>
-            .setTime(DateFormat.<jsm>getDateInstance</jsm>(DateFormat.<jsf>MEDIUM</jsf>).parse(birthDate));
-      }
-   }
-      </p>
-      <p>
-         Next, we alter our code to pass in the birthdate:
-      </p>
-      <p class='bcode'>
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-      </p>
-      <p>
-         Now when we rerun the sample code, we'll get the following:
-      </p>
-      <p class='bcode'>
-   (<ua>id</ua>=<un>1</un>,<ua>name</ua>=<us>'John+Smith'</us>,<ua>uri</ua>=<us>http://sample/addressBook/person/1</us>,
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,<ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>)
-      </p>
-      <p>
-         Using <code>UrlEncodingSerializer</code> instead would create the following:
-      </p>
-      <p class='bcode'>
-   <ua>id</ua>=<un>1</un>&amp;<ua>name</ua>=<us>'John+Smith'</us>&amp;<ua>uri</ua>=<us>http://sample/addressBook/person/1</us>
-   &amp;<ua>addressBookUri</ua>=<us>http://sample/addressBook</us>&amp;<ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>
-      </p>
-      <p>
-         Another useful feature is the <a href="../../../../org/apache/juneau/annotation/Bean.html#propertyNamer--"><code>@Bean.propertyNamer()</code></a> annotation that 
-         allows you to plug in your own logic for determining bean property names.
-         <br>The <a href="../../../../org/apache/juneau/PropertyNamerDLC.html" title="class in org.apache.juneau"><code>PropertyNamerDLC</code></a> is an example of an alternate property namer.
-         It converts bean property names to lowercase-dashed format.
-      </p>
-      
-      <h5 class='figure'>Example:</h5>
-      <p class='bcode'> 
-   <ja>@Bean</ja>(propertyNamer=PropertyNamerDLC.<jk>class</jk>)
-   <jk>public class</jk> Person {
-      ...
-      </p>
-      
-      <h5 class='figure'>Results</h5>
-      <p class='bcode'>
-   (<ua>id</ua>=<un>1</us>,<ua>name</ua>=<us>'John+Smith'</us>,<ua>uri</ua>=<us>http://sample/addressBook/person/1</us>,
-   <ua>address-book-uri</ua>=<us>http://sample/addressBook</us>,<ua>birth-date</ua>=<us>1946-08-12T00:00:00Z</us>)
-      </p>
-   </div>
-   
-      
-   <!-- ======================================================================================================== -->
-   <a id="Collections"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.2 - Collections</h3>
-   <div class='topic'>
-      <p>
-         In our example, let's add a list-of-beans property to our sample class:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-      ...
-   }
-      </p>
-      <p>
-         The <code>Address</code> class has the following properties defined:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Address {
-
-      <jc>// Bean properties</jc>
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>personUri</jf>;
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      <jk>public int</jk> <jf>zip</jf>;
-      <jk>public boolean</jk> <jf>isCurrent</jf>;
-   }
-      </p>
-      <p>
-         Next, add some quick-and-dirty code to add an address to our person bean:
-      </p>
-      <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   UonSerializer s = UonSerializer.<jsf>DEFAULT_READABLE</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-      </p>
-      <p>
-         Now when we run the sample code, we get the following (in readable format):
-      </p>
-      <p class='bcode'>
-   (
-      <ua>id</ua>=<un>1</un>, 
-      <ua>name</ua>=<us>'John+Smith'</us>, 
-      <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>, 
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,
-      <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-            <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-            <ua>id</ua>=<un>1</un>, 
-            <ua>street</ua>=<us>'100+Main+Street'</us>, 
-            <ua>city</ua>=<us>Anywhereville</us>, 
-            <ua>state</ua>=<us>NY</us>, 
-            <ua>zip</ua>=<un>12345</un>, 
-            <ua>isCurrent</ua>=<uk>true</uk>
-         )
-      )
-   )
-      </p>
-      <p>
-         If we were to use <code>UrlEncodingSerializer</code> instead, we would get the following:
-      </p>
-      <p class='bcode'>
-   <ua>id</ua>=<un>1</un>&amp; 
-   <ua>name</ua>=<us>'John+Smith'</us>&amp; 
-   <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>&amp; 
-   <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>&amp;
-   <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>&amp;
-   <ua>addresses</ua>=@(
-      (
-         <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-         <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-         <ua>id</ua>=<un>1</un>, 
-         <ua>street</ua>=<us>'100+Main+Street'</us>, 
-         <ua>city</ua>=<us>Anywhereville</us>, 
-         <ua>state</ua>=<us>NY</us>, 
-         <ua>zip</ua>=<un>12345</un>, 
-         <ua>isCurrent</ua>=<uk>true</uk>
-      )
-   )
-      </p>
-   </div>
-   <p>
-      Note how the top level <code>Person</code> bean is serialized using the standard <js>'&amp;'</js> delimiter, 
-      whereas the lower-level <code>Address</code> bean is serialized using the <js>','</js> character to prevent 
-      the <code>addresses</code> field from being incompletely parsed.
-   </p>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="Recursion"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.3 - Non-tree models and recursion detection</h3>
-   <div class='topic'>
-      <p>
-         The URL-encoding serializer is designed to be used against POJO tree structures.
-         It expects that there not be loops in the POJO model (e.g. children with references to parents, etc...).
-         <br>If you try to serialize models with loops, you will usually cause a <code>StackOverflowError</code> to 
-         be thrown (if <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxDepth"><code>Serializer.SERIALIZER_maxDepth</code></a> is not reached 
-         first).
-      </p>
-      <p>
-         If you still want to use the URL-encoding serializer on such models, Juneau provides the 
-         <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>Serializer.SERIALIZER_detectRecursions</code></a> setting.
-         <br>It tells the serializer to look for instances of an object in the current branch of the tree and skip 
-         serialization when a duplicate is encountered.
-      </p>
-      <p>
-         For example, let's make a POJO model out of the following classes:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> A {
-      <jk>public</jk> B b;
-   }
-   
-   <jk>public class</jk> B {
-      <jk>public</jk> C c;
-   }
-   
-   <jk>public class</jk> C {
-      <jk>public</jk> A a;
-   }
-      </p>
-      <p>
-         Now we create a model with a loop and serialize the results.
-      </p>
-      <p class='bcode'>
-   <jc>// Clone an existing serializer and set property for detecting recursions.</jc>
-   UrlEncodingSerializer s = UrlEncodingSerializer.<jsf>DEFAULT_READABLE</jsf>.builder()
-      .detectRecursions(<jk>true</jk>).build();
-
-   <jc>// Create a recursive loop.</jc>
-   A a = <jk>new</jk> A();
-   a.<jf>b</jf> = <jk>new</jk> B();
-   a.<jf>b</jf>.<jf>c</jf> = <jk>new</jk> C();
-   a.<jf>b</jf>.<jf>c</jf>.<jf>a</jf> = a;
-   
-   <jc>// Serialize.</jc>
-   String json = s.serialize(a);
-      </p>
-      <p>
-         What we end up with is the following, which does not serialize the contents of the <code>c</code> field:
-      </p>
-      <p class='bcode'>
-   (
-      <ua>b</ua>=(
-         <ua>c</ua>=()
-      )
-   )
-      </p>
-      <p>
-         Without recursion detection enabled, this would cause a stack-overflow error.
-      </p>
-      <p>
-         Recursion detection introduces a performance penalty of around 20%.
-         For this reason the setting is disabled by default.
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.4 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this serializer:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/uon/UonSerializer.html" title="class in org.apache.juneau.uon"><code>UonSerializer</code></a> - UON serializer context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingSerializer</code></a> - URL-Encoding serializer context 
-            properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.5 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau serializers, the URL-encoding serializers are thread safe and maintain an 
-            internal cache of bean classes encountered.
-            <br>For performance reasons, it's recommended that serializers be reused whenever possible instead of 
-            always creating new instances.
-      </ul>
-   </div>
-</div>
-
-
-<!-- ======================================================================================================== -->
-<a id="UrlEncodingParser"></a>
-<h2 class='topic' onclick='toggle(this)'>3 - UrlEncodingParser and UonParser classes</h2>
-<div class='topic'>
-   <p>
-      <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingParser</code></a> and <a href="../../../../org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon"><code>UonParser</code></a> classes are 
-      used to convert URL-encoded strings back into POJOs.
-      <br>The <code>UonParser</code> class converts UON-encoded parameter values to POJOs.
-      The <code>UrlEncodingParser</code> class converts entire URL-Encoded strings to POJOs using 
-      <code>UonSerializer</code> to serialize individual values.
-      If you're trying to parse an entire URL-Encoded string, use <code>UrlEncodingParser</code>. 
-      If you're trying to parse an individual value (such as that returned by 
-      <code>RestServlet.getQueryParameter(name)</code>), use <code>UonParser</code>.
-   </p>  
-   <p>
-      The following static reusable instances of <code>UrlEncodingParser</code> are provided for convenience:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html#DEFAULT"><code>UrlEncodingParser.DEFAULT</code></a> 
-         - Default parser for entire URL-encoded strings, decode <code>%xx</code> sequences.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonParser.html#DEFAULT"><code>UonParser.DEFAULT</code></a> 
-         - Default parser for URL-encoded parameter values, don't decode <code>%xx</code> sequences.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonParser.html#DEFAULT_DECODING"><code>UonParser.DEFAULT_DECODING</code></a> 
-         - Default parser for URL-encoded parameter values, decode <code>%xx</code> sequences.
-   </ul>
-   <p>
-      The general guidelines on which parser to use is:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Use the <code>DEFAULT</code> parser for parameter values that have already had <code>%xx</code> sequences 
-         decoded, such as when using <code>HttpServletRequest.getQueryParameter(name)</code>.
-      <li>
-         Use the <code>DEFAULT_ENCODED</code> parser if the input has not already had <code>%xx</code> sequences 
-         decoded.
-   </ul>
-   <p>
-      Let's build upon the previous example and parse the generated URL-encoded string back into the original bean.
-      <br>We start with the URL-encoded string that was generated.
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output.</jc>
-   UonSerializer s = UonSerializer.<jsf>DEFAULT_READABLE</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-
-   <jc>// Serialize the bean.</jc>
-   String urlencoded = s.serialize(p);
-   </p>
-   <p>
-      This code produced the following:
-   </p>
-   <p class='bcode'>
-   (
-      <ua>id</ua>=<un>1</un>, 
-      <ua>name</ua>=<us>'John+Smith'</us>, 
-      <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>, 
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,
-      <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-            <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-            <ua>id</ua>=<un>1</un>, 
-            <ua>street</ua>=<us>'100+Main+Street'</us>, 
-            <ua>city</ua>=<us>Anywhereville</us>, 
-            <ua>state</ua>=<us>NY</us>, 
-            <ua>zip</ua>=<un>12345</un>, 
-            <ua>isCurrent</ua>=<uk>true</uk>
-         )
-      )
-   )
-   </p>
-   <p>
-      The code to convert this back into a bean is:
-   </p>
-   <p class='bcode'>
-   <jc>// Parse it back into a bean using the reusable JSON parser.</jc>
-   Person p = UonParser.<jsf>DEFAULT</jsf>.parse(urlencoded, Person.<jk>class</jk>);
-
-   <jc>// Render it back as JSON.</jc>
-   json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(p);
-   </p>
-   <p>
-      We print it back out to JSON to show that all the data has been preserved:
-   </p>
-   <p class='bcode'>
-   {
-      id: <un>1</un>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <un>1</un>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <un>12345</un>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }  
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="GenericParsing"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.1 - Parsing into generic POJO models</h3>
-   <div class='topic'>
-      <p>
-         The URL-encoding parser is not limited to parsing back into the original bean classes.
-         <br>If the bean classes are not available on the parsing side, the parser can also be used to parse into a 
-         generic model consisting of <code>Maps</code>, <code>Collections</code>, and primitive objects.
-      </p>
-      <p>
-         You can parse into any <code>Map</code> type (e.g. <code>HashMap</code>, <code>TreeMap</code>), but
-         using <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a> is recommended since it has many convenience methods
-         for converting values to various types.
-         <br>The same is true when parsing collections.  
-         You can use any Collection (e.g. <code>HashSet</code>, <code>LinkedList</code>)
-         or array (e.g. <code>Object[]</code>, <code>String[]</code>, <code>String[][]</code>), but using 
-         <a href="../../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a> is recommended.
-      </p>
-      <p>
-         When the map or list type is not specified, or is the abstract <code>Map</code>, <code>Collection</code>, 
-         or <code>List</code> types, the parser will use <code>ObjectMap</code> and <code>ObjectList</code> by default.
-      </p>
-      <p>
-         Starting back with our original URL-encoded string:
-      </p>
-      <p class='bcode'>
-   (
-      <ua>id</ua>=<un>1</un>, 
-      <ua>name</ua>=<us>'John+Smith'</us>, 
-      <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>, 
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,
-      <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-            <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-            <ua>id</ua>=<un>1</un>, 
-            <ua>street</ua>=<us>'100+Main+Street'</us>, 
-            <ua>city</ua>=<us>Anywhereville</us>, 
-            <ua>state</ua>=<us>NY</us>, 
-            <ua>zip</ua>=<un>12345</un>, 
-            <ua>isCurrent</ua>=<uk>true</uk>
-         )
-      )
-   )
-      </p>
-      <p>
-         We can parse this into a generic <code>ObjectMap</code>:
-      </p>
-      <p class='bcode'> 
-   <jc>// Parse URL-encoded string into a generic POJO model.</jc>
-   ObjectMap m = UonParser.<jsf>DEFAULT</jsf>.parse(urlencoded, ObjectMap.<jk>class</jk>);
-
-   <jc>// Convert it back to JSON.</jc>
-   String json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(m);
-      </p>
-      <p>
-         What we end up with is the exact same output.
-         <br>Even the numbers and booleans are preserved because they are parsed into <code>Number</code> and 
-         <code>Boolean</code> objects when parsing into generic models.
-      </p>
-      <p class='bcode'>
-   {
-      id: <un>1</un>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <un>1</un>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <un>12345</un>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }
-      </p>
-      <p>
-         Once parsed into a generic model, various convenience methods are provided on the <code>ObjectMap</code>
-         and <code>ObjectList</code> classes to retrieve values:
-      </p>
-      <p class='bcode'>
-   <jc>// Parse URL-encoded string into a generic POJO model.</jc>
-   ObjectMap m = UonParser.<jsf>DEFAULT</jsf>.parse(urlencoded, ObjectMap.<jk>class</jk>);
-
-   <jc>// Get some simple values.</jc>
-   String name = m.getString(<js>"name"</js>);
-   <jk>int</jk> id = m.getInt(<js>"id"</js>);
-
-   <jc>// Get a value convertable from a String.</jc>
-   URI uri = m.get(URI.<jk>class</jk>, <js>"uri"</js>);
-
-   <jc>// Get a value using a transform.</jc>
-   CalendarSwap transform = <jk>new</jk> CalendarSwap.ISO8601DTZ();
-   Calendar birthDate = m.get(transform, <js>"birthDate"</js>);
-
-   <jc>// Get the addresses.</jc>
-   ObjectList addresses = m.getObjectList(<js>"addresses"</js>);
-
-   <jc>// Get the first address and convert it to a bean.</jc>
-   Address address = addresses.get(Address.<jk>class</jk>, 0);
-      </p>
-
-      <p>
-         As a general rule, parsing into beans is often more efficient than parsing into generic models.
-         <br>And working with beans is often less error prone than working with generic models.
-      </p>     
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.2 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this parser:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon"><code>UonParser</code></a> - UON parser context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingParser</code></a> - URL-Encoding parser context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.3 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau parsers, the URL-encoding parsers are thread safe and maintain an internal cache 
-            of bean classes encountered.
-            <br>For performance reasons, it's recommended that parser be reused whenever possible instead of always 
-            creating new instances.
-      </ul>
-   </div>
-   
-</div>
-
-<p align="center"><i><b>*** fín ***</b></i></p></div>
+<div class="block">UON Marshalling Support</div>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
diff --git a/content/site/apidocs/org/apache/juneau/urlencoding/doc-files/Example_HTML.png b/content/site/apidocs/org/apache/juneau/urlencoding/doc-files/Example_HTML.png
deleted file mode 100644
index 04dcf41..0000000
Binary files a/content/site/apidocs/org/apache/juneau/urlencoding/doc-files/Example_HTML.png and /dev/null differ
diff --git a/content/site/apidocs/org/apache/juneau/urlencoding/package-summary.html b/content/site/apidocs/org/apache/juneau/urlencoding/package-summary.html
index fac1f2c..39fc90d 100644
--- a/content/site/apidocs/org/apache/juneau/urlencoding/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/urlencoding/package-summary.html
@@ -153,975 +153,7 @@
 <!--   -->
 </a>
 <h2 title="Package org.apache.juneau.urlencoding Description">Package org.apache.juneau.urlencoding Description</h2>
-<div class="block"><p>URL-Encoding Marshalling Support</p>
-<script>
-   function toggle(x) {
-      var div = x.nextSibling;
-      while (div != null && div.nodeType != 1)
-         div = div.nextSibling;
-      if (div != null) {
-         var d = div.style.display;
-         if (d == 'block' || d == '') {
-            div.style.display = 'none';
-            x.className += " closed";
-         } else {
-            div.style.display = 'block';
-            x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-         }
-      }
-   }
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-   <li><p><a class='doclink' href='#Overview'>URL encoding support overview</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#OverviewExample'>Example</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#UrlEncodingSerializer'>UrlEncodingSerializer and UonSerializer classes</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-      <li><p><a class='doclink' href='#Collections'>Collections</a></p>
-      <li><p><a class='doclink' href='#Recursion'> Non-tree models and recursion detection</a></p>
-      <li><p><a class='doclink' href='#SerializerConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#SerializerOtherNotes'>Other notes</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#UrlEncodingParser'>UrlEncodingParser and UonParser classes</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#GenericParsing'>Parsing into generic POJO models</a></p>
-      <li><p><a class='doclink' href='#ParserConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#ParserOtherNotes'>Other notes</a></p>
-   </ol>
-</ol>
-
-<!-- ======================================================================================================== -->
-<a id="Overview"></a>
-<h2 class='topic' onclick='toggle(this)'>1 - URL encoding support overview</h2>
-<div class='topic'>
-   <p>
-      Juneau supports converting arbitrary POJOs to and from URL-encoded strings using ultra-efficient serializers 
-      and parsers.
-      <br>The serializer converts POJOs directly to URL-encoded strings without the need for intermediate DOM objects 
-      using a highly-efficient state machine.
-      <br>Likewise, the parser creates POJOs directly from URL-encoded strings without the need for intermediate DOM 
-      objects. 
-   </p>
-   <p>
-      Juneau uses UON (URL-Encoded Object Notation) for representing POJOs.  
-      The UON specification can be found <a href='doc-files/rfc_uon.txt'>here</a>.
-   </p>
-   <p>
-      Juneau can serialize and parse instances of any of the following POJO types:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Java primitives and primitive objects (e.g. <code>String</code>, <code>Integer</code>, <code>Boolean</code>, 
-         <code>Float</code>).
-      <li>
-         Java Collections Framework objects (e.g. <code>HashSet</code>, <code>TreeMap</code>) containing anything 
-         on this list.
-      <li>
-         Multi-dimensional arrays of any type on this list.
-      <li>
-         Java Beans with properties of any type on this list.
-      <li>
-         Classes with standard transformations to and from <code>Strings</code> (e.g. classes containing 
-         <code>toString()</code>, <code>fromString()</code>, <code>valueOf()</code>, <code>constructor(String)</code>).
-      <li>
-         Non-serializable classes and properties with associated <code>PojoSwaps</code> that convert them to 
-         serializable forms.
-   </ul>
-   <p>
-      Refer to <a href='../../../../overview-summary.html#juneau-marshall.PojoCategories' class='doclink'>POJO Categories</a> 
-      for a complete definition of supported POJOs.
-   </p>
-   
-   <h5 class='topic'>Prerequisites</h5>
-   <p>
-      The Juneau URL-encoding serialization and parsing support does not require any external prerequisites.  
-      It only requires Java 1.6 or above.
-   </p>
-
-   <!-- ======================================================================================================== -->
-   <a id="OverviewExample"></a>
-   <h3 class='topic' onclick='toggle(this)'>1.1 - URL-encoding support overview - example</h3>
-   <div class='topic'>
-      <p>
-         The example shown here is from the Address Book resource located in the 
-         <code>org.apache.juneau.sample.war</code> application
-         <br>The POJO model consists of a <code>List</code> of <code>Person</code> beans, with each <code>Person</code> 
-         containing zero or more <code>Address</code> beans.
-      </p>
-      <p>
-         When you point a browser at <code>/sample/addressBook/people/1</code>, the POJO is rendered as HTML:
-      </p>
-      <img class='bordered' src="doc-files/Example_HTML.png">
-      <p>
-         By appending <code>?Accept=application/x-www-form-urlencoded&amp;plainText=true</code> to the URL, you can 
-         view the data as a URL-encoded string:
-      </p>
-      <p class='bcode'>
-   <un>0</un>=(
-      <ua>uri</ua>=<us>http://localhost:10000/addressBook/people/1</us>,
-      <ua>addressBookUri</ua>=<us>http://localhost:10000/addressBook/</us>,
-      <ua>id</ua>=<un>1</un>,
-      <ua>name</ua>=<us>'Barack+Obama'</us>,
-      <ua>birthDate</ua>=<us>'Aug+4,+1961'</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/1</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/1</us>,
-            <ua>id</ua>=<un>1</un>,
-            <ua>street</ua>=<us>'1600+Pennsylvania+Ave'</us>,
-            <ua>city</ua>=<us>Washington</us>,
-            <ua>state</ua>=<us>DC</us>,
-            <ua>zip</ua>=<un>20500</un>,
-            <ua>isCurrent</ua>=<uk>true</uk>
-         ),
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/2</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/1</us>,
-            <ua>id</ua>=<un>2</un>,
-            <ua>street</ua>=<us>'5046+S+Greenwood+Ave'</us>,
-            <ua>city</ua>=<us>Chicago</us>,
-            <ua>state</ua>=<us>IL</us>,
-            <ua>zip</ua>=<un>60615</un>,
-            <ua>isCurrent</ua>=<uk>false</uk>
-         )
-      ),
-      <ua>age</ua>=<un>56</un>
-   )
-   &amp;<un>1</un>=(
-      <ua>uri</ua>=<us>http://localhost:10000/addressBook/people/2</us>,
-      <ua>addressBookUri</ua>=<us>http://localhost:10000/addressBook/</us>,
-      <ua>id</ua>=<un>2</un>,
-      <ua>name</ua>=<us>'George+Walker+Bush'</us>,
-      <ua>birthDate</ua>=<us>'Jul+6,+1946'</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/3</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/2</us>,
-            <ua>id</ua>=<un>3</un>,
-            <ua>street</ua>=<us>'43+Prairie+Chapel+Rd'</us>,
-            <ua>city</ua>=<us>Crawford</us>,
-            <ua>state</ua>=<us>TX</us>,
-            <ua>zip</ua>=<un>76638</un>,
-            <ua>isCurrent</ua>=<uk>true</uk>
-         ),
-         (
-            <ua>uri</ua>=<us>http://localhost:10000/addressBook/addresses/4</us>,
-            <ua>personUri</ua>=<us>http://localhost:10000/addressBook/people/2</us>,
-            <ua>id</ua>=<un>4</un>,
-            <ua>street</ua>=<us>'1600+Pennsylvania+Ave'</us>,
-            <ua>city</ua>=<us>Washington</us>,
-            <ua>state</ua>=<us>DC</us>,
-            <ua>zip</ua>=<un><us>20500</un>,
-            <ua>isCurrent</ua>=<uk>false</uk>
-         )
-      ),
-      <ua>age</ua>=<un>71</un>
-   )     
-      </p>
-      
-      <p>
-         Juneau supports two kinds of serialization:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            Construction of full URL query parameter strings (e.g. <code>&amp;key=value</code> pairs) from beans 
-            and maps.
-         <li>
-            Construction of URL query parameter value strings (e.g. just the <code>value</code> portion of 
-            <code>&amp;key=value</code> pairs) from any POJO.  
-      </ul>
-      <p>
-         Top-level beans and maps can serialized as key/value pairs as shown below:
-      </p>
-      
-      <h5 class='figure'>Example:  A bean with 2 string properties, 'foo' and 'baz', serialized to a query string</h5>
-      <p class='bcode'> 
-   http://localhost/sample?<ua>foo</ua>=<us>bar</us>&amp;<ua>baz</ua>=<us>bing</us>
-      </p>
-      <p>
-         Lower-level beans and maps are also serialized as key/value pairs, but are surrounded with a 
-         <js>"(...)"</js> construct to denote an object mapping,  and uses a comma as the parameter delimiter 
-         instead of <js>"&amp;"</js>.
-      </p>
-      
-      <h5 class='figure'>Example:  A bean serialized as a query parameter value.</h5>
-      <p class='bcode'> 
-   http://localhost/sample?<ua>a1</ua>=(<ua>foo</ua>=<us>bar</us>,<ua>baz</ua>=<us>bing</us>)
-      </p>
-      
-      <h5 class='figure'>General methodology:</h5>
-      <table class='styled' style='border-collapse: collapse;'>
-         <tr><th>Java type</th><th>JSON equivalent</th><th>UON</th></tr>
-         <tr>
-            <td>Maps/beans</td>
-            <td>OBJECT</td>
-            <td class='code'>
-   <ua>a1</ua>=(<ua>b1</ua>=<us>x1</us>,<ua>b2</ua>=<us>x2</us>)
-   <ua>a1</ua>=(<ua>b1</ua>=(<ua>c1</ua>=<us>x1</us>,<ua>c2</ua>=<us>x2</us>))
-            </td>
-         </tr>
-         <tr>
-            <td>Collections/arrays</td>
-            <td>ARRAY</td>
-            <td class='code'>
-   <ua>a1</ua>=@(<us>x1</us>,<us>x2</us>)
-   <ua>a1</ua>=@(@(<us>x1</us>,<us>x2</us>),@(<us>x3</us>,<us>x4</us>))
-   <ua>a1</ua>=@((<ua>b1</ua>=<us>x1</us>,<ua>b2</ua>=<us>x2</us>),(<ua>c1</ua>=<us>x1</us>,<ua>c2</ua>=<us>x2</us>))
-            </td>
-         </tr>
-         <tr>
-            <td>Booleans</td>
-            <td>BOOLEAN</td>
-            <td class='code'>
-   <ua>a1</ua>=<uk>true</uk>&amp;<ua>a2</ua>=<uk>false</uk>
-            </td>
-         </tr>
-         <tr>
-            <td>int/float/double/...</td>
-            <td>NUMBER</td>
-            <td class='code'>
-   <ua>a1</ua>=<un>123</un>&amp;<ua>a2</ua>=<un>1.23e1</un>
-            </td>
-         </tr>
-         <tr>
-            <td>null</td>
-            <td>NULL</td>
-            <td class='code'>
-   <ua>a1</ua>=<uk>null</uk>
-            </td>
-         </tr>
-         <tr>
-            <td>String</td>
-            <td>STRING</td>
-            <td class='code'>
-   <ua>a1</ua>=<us>foobar</us>
-   <ua>a1</ua>=<us>'true'</us>
-   <ua>a1</ua>=<us>'null'</us>
-   <ua>a1</ua>=<us>'123'</us>
-   <ua>a1</ua>=<us>' string with whitespace '</us>
-   <ua>a1</ua>=<us>'string with ~'escaped~' quotes'</us>
-            </td>
-         </tr>
-      </table>
-      <p>
-         Refer to the <a href='doc-files/rfc_uon.txt'>UON specification</a> for a complete set of syntax rules.      
-      <p>
-         <code>PojoSwaps</code> can be used to convert non-serializable POJOs into serializable forms, such as 
-         converting <code>Calendar</code> object to ISO8601 strings, or <code><uk>byte</uk>[]</code> arrays to 
-         Base-64 encoded strings.
-         <br>These transforms can be associated at various levels:
-      </p>
-      <ul>
-         <li>On serializer and parser instances to handle all objects of the class type globally.
-         <li>On classes through the <code><ja>@Bean</ja></code> annotation.
-         <li>On bean properties through the <code><ja>@BeanProperty</ja></code> annotations.
-      </ul>
-      
-      <h5 class='figure'>Example:  A serialized Calendar object using <code>CalendarSwap.RFC2822DTZ</code> transform.</h5>
-      <p class='bcode'> 
-   http://localhost/sample?<ua>a1=<us>'Sun,+03+Mar+1901+09:05:06+GMT'</us>
-      </p>
-   </div>
-   
-</div>
-
-<!-- ======================================================================================================== -->
-<a id="UrlEncodingSerializer"></a>
-<h2 class='topic' onclick='toggle(this)'>2 - UrlEncodingSerializer and UonSerializer classes</h2>
-<div class='topic'>
-   <p>
-      <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingSerializer</code></a> and <a href="../../../../org/apache/juneau/uon/UonSerializer.html" title="class in org.apache.juneau.uon"><code>UonSerializer</code></a> 
-      classes are used to convert POJOs to URL-encoded strings.
-      <br>The <code>UonSerializer</code> class converts parameter values to UON notation. 
-      The <code>UrlEncodingSerializer</code> class converts a POJO to key/value URL-Encoded pairs using 
-      <code>UonSerializer</code> to serialize the values.
-      If you're trying to construct complete URL-Encoded entities, use <code>UrlEncodingSerializer</code>. 
-      If you're constructing your own key/value pairs, use <code>UonSerializer</code>.
-   </p>  
-   <p>
-      The serializers include several configurable settings.
-      <br>Static reusable instances of serializers are provided with commonly-used settings:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html#DEFAULT"><code>UrlEncodingSerializer.DEFAULT</code></a> 
-         - All default settings, strict mode.
-      <li>
-         <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html#DEFAULT_READABLE"><code>UrlEncodingSerializer.DEFAULT_READABLE</code></a> 
-         - Use whitespace and indentation for readability.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonSerializer.html#DEFAULT"><code>UonSerializer.DEFAULT</code></a> 
-         - All default settings, strict mode.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonSerializer.html#DEFAULT_READABLE"><code>UonSerializer.DEFAULT_READABLE</code></a> 
-         - Use whitespace and indentation for readability.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonSerializer.html#DEFAULT_ENCODING"><code>UonSerializer.DEFAULT_ENCODING</code></a> 
-         - Same as DEFAULT, but use URL-Encoding on special characters.
-   </ul>
-   <p>
-      The general guidelines on which serializer to use is:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Use encoding serializers when you're using the results to construct a URI yourself, and therefore 
-         need invalid URI characters to be encoded.
-      <li>
-         Use un-encoding serializers when you're creating parameter values and passing them off to some other
-         utility class that will itself encode invalid URI characters.
-      <li>
-         Use the readable serializer for debugging purposes.
-   </ul>
-
-   <h5 class='topic'>Notes about examples</h5>
-   <p>
-      The examples shown in this document will use default strict settings.
-      <br>For brevity, the examples will use public fields instead of getters/setters to reduce the size of the examples.
-      <br>In the real world, you'll typically want to use standard bean getters and setters.
-   </p>
-   <p>
-      To start off simple, we'll begin with the following simplified bean and build upon it.
-   </p>
-   <p class='bcode'>
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name) {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-      }
-   }
-   </p>
-   <p>
-      The following code shows how to convert this to a URL-encoded value:
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   UonSerializer s = UonSerializer.<jsf>DEFAULT</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <uk>new</uk> Person(1, <js>"John Smith"</js>);
-
-   <jc>// Serialize the bean to URL-encoded parameter value.</jc>
-   String urlencoded = s.serialize(p);
-   </p>
-   <p>
-      The code above produces the following output:
-   </p>
-   <p class='bcode'>
-   (<ua>id</ua>=<un>1</un>,<ua>name</ua>=<us>'John+Smith'</us>)
-   </p>
-   <p>
-      The <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingSerializer</code></a> class converts
-      maps and beans into top-level query parameter strings.
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   UrlEncodingSerializer s = UrlEncodingSerializer.<jsf>DEFAULT</jsf>;
-   
-   <jc>// Serialize the bean to URL-encoded query string.</jc>
-   String urlencoded = s.serialize(p);
-   </p>
-   <p>
-      The code above produces the following output:
-   </p>
-   <p class='bcode'>
-   <ua>id</ua>=<un>1</un>&amp;<ua>name</ua>=<us>'John+Smith'</us>
-   </p>
-   <p>
-      By default, the <code>UrlEncodingSerializer</code> class will URL-Encode special characters, and the 
-      <code>UonSerializer</code> will NOT URL-encode special characters.  
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="BeanAnnotations"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.1 - @Bean and @BeanProperty annotations</h3>
-   <div class='topic'>
-      <p>
-         The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> and <a href="../../../../org/apache/juneau/annotation/BeanProperty.html" title="annotation in org.apache.juneau.annotation"><code>@BeanProperty</code></a> 
-         annotations are used to customize the behavior of beans across the entire framework.
-         <br>They have various uses:
-      </p>
-      <ul>
-         <li>Hiding bean properties.
-         <li>Specifying the ordering of bean properties.
-         <li>Overriding the names of bean properties.
-         <li>Associating transforms at both the class and property level (to convert non-serializable POJOs to 
-            serializable forms).
-      </ul>
-      <p>
-         For example, we now add a <code>birthDate</code> property, and associate a transform with it to transform
-         it to an ISO8601 date-time string in GMT time.
-         <br>We'll also add a couple of <code>URI</code> properties.
-         <br>By default, <code>Calendars</code> are treated as beans by the framework, which is usually not how you want 
-         them serialized.
-         <br>Using transforms, we can convert them to standardized string forms.
-      </p>
-      <p class='bcode'> 
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>addressBookUri</jf>;
-
-      <ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) 
-            <jk>throws</jk> Exception {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-         <jk>this</jk>.<jf>uri</jf> = <jk>new</jk> URI(uri);
-         <jk>this</jk>.<jf>addressBookUri</jf> = <jk>new</jk> URI(addressBookUri);
-         <jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-         <jk>this</jk>.<jf>birthDate</jf>
-            .setTime(DateFormat.<jsm>getDateInstance</jsm>(DateFormat.<jsf>MEDIUM</jsf>)
-            .parse(birthDate));
-      }
-   }
-      </p>
-      <p>
-         Next, we alter our code to pass in the birthdate:
-      </p>
-      <p class='bcode'>
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-      </p>
-      <p>
-         Now when we rerun the sample code, we'll get the following:
-      </p>
-      <p class='bcode'>
-   (<ua>id</ua>=<un>1</un>,<ua>name</ua>=<us>'John+Smith'</us>,<ua>uri</ua>=<us>http://sample/addressBook/person/1</us>,
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,<ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>)
-      </p>
-      <p>
-         Using <code>UrlEncodingSerializer</code> instead would create the following:
-      </p>
-      <p class='bcode'>
-   <ua>id</ua>=<un>1</un>&amp;<ua>name</ua>=<us>'John+Smith'</us>&amp;<ua>uri</ua>=<us>http://sample/addressBook/person/1</us>
-   &amp;<ua>addressBookUri</ua>=<us>http://sample/addressBook</us>&amp;<ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>
-      </p>
-      <p>
-         Another useful feature is the <a href="../../../../org/apache/juneau/annotation/Bean.html#propertyNamer--"><code>@Bean.propertyNamer()</code></a> annotation that 
-         allows you to plug in your own logic for determining bean property names.
-         <br>The <a href="../../../../org/apache/juneau/PropertyNamerDLC.html" title="class in org.apache.juneau"><code>PropertyNamerDLC</code></a> is an example of an alternate property namer.
-         It converts bean property names to lowercase-dashed format.
-      </p>
-      
-      <h5 class='figure'>Example:</h5>
-      <p class='bcode'> 
-   <ja>@Bean</ja>(propertyNamer=PropertyNamerDLC.<jk>class</jk>)
-   <jk>public class</jk> Person {
-      ...
-      </p>
-      
-      <h5 class='figure'>Results</h5>
-      <p class='bcode'>
-   (<ua>id</ua>=<un>1</us>,<ua>name</ua>=<us>'John+Smith'</us>,<ua>uri</ua>=<us>http://sample/addressBook/person/1</us>,
-      <ua>address-book-uri</ua>=<us>http://sample/addressBook</us>,<ua>birth-date</ua>=<us>1946-08-12T00:00:00Z</us>)
-      </p>
-   </div>
-   
-      
-   <!-- ======================================================================================================== -->
-   <a id="Collections"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.2 - Collections</h3>
-   <div class='topic'>
-      <p>
-         In our example, let's add a list-of-beans property to our sample class:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-      ...
-   }
-      </p>
-      <p>
-         The <code>Address</code> class has the following properties defined:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Address {
-
-      <jc>// Bean properties</jc>
-      <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>personUri</jf>;
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      <jk>public int</jk> <jf>zip</jf>;
-      <jk>public boolean</jk> <jf>isCurrent</jf>;
-   }
-      </p>
-      <p>
-         Next, add some quick-and-dirty code to add an address to our person bean:
-      </p>
-      <p class='bcode'>
-   <jc>// Use serializer with readable output, simple mode.</jc>
-   UonSerializer s = UonSerializer.<jsf>DEFAULT_READABLE</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-      </p>
-      <p>
-         Now when we run the sample code, we get the following (in readable format):
-      </p>
-      <p class='bcode'>
-   (
-      <ua>id</ua>=<un>1</un>, 
-      <ua>name</ua>=<us>'John+Smith'</us>, 
-      <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>, 
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,
-      <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-            <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-            <ua>id</ua>=<un>1</un>, 
-            <ua>street</ua>=<us>'100+Main+Street'</us>, 
-            <ua>city</ua>=<us>Anywhereville</us>, 
-            <ua>state</ua>=<us>NY</us>, 
-            <ua>zip</ua>=<un>12345</un>, 
-            <ua>isCurrent</ua>=<uk>true</uk>
-         )
-      )
-   )
-      </p>
-      <p>
-         If we were to use <code>UrlEncodingSerializer</code> instead, we would get the following:
-      </p>
-      <p class='bcode'>
-   <ua>id</ua>=<un>1</un>&amp; 
-   <ua>name</ua>=<us>'John+Smith'</us>&amp; 
-   <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>&amp; 
-   <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>&amp;
-   <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>&amp;
-   <ua>addresses</ua>=@(
-      (
-         <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-         <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-         <ua>id</ua>=<un>1</un>, 
-         <ua>street</ua>=<us>'100+Main+Street'</us>, 
-         <ua>city</ua>=<us>Anywhereville</us>, 
-         <ua>state</ua>=<us>NY</us>, 
-         <ua>zip</ua>=<un>12345</un>, 
-         <ua>isCurrent</ua>=<uk>true</uk>
-      )
-   )
-      </p>
-   </div>
-   <p>
-      Note how the top level <code>Person</code> bean is serialized using the standard <js>'&amp;'</js> delimiter, 
-      whereas the lower-level <code>Address</code> bean is serialized using the <js>','</js> character to prevent 
-      the <code>addresses</code> field from being incompletely parsed.
-   </p>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="Recursion"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.3 - Non-tree models and recursion detection</h3>
-   <div class='topic'>
-      <p>
-         The URL-encoding serializer is designed to be used against POJO tree structures.
-         <br>It expects that there not be loops in the POJO model (e.g. children with references to parents, etc...).
-         <br>If you try to serialize models with loops, you will usually cause a <code>StackOverflowError</code> to 
-         be thrown (if <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxDepth"><code>Serializer.SERIALIZER_maxDepth</code></a> is not reached first).
-      </p>
-      <p>
-         If you still want to use the URL-encoding serializer on such models, Juneau provides the 
-         <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>Serializer.SERIALIZER_detectRecursions</code></a> setting.
-         <br>It tells the serializer to look for instances of an object in the current branch of the tree and
-         skip serialization when a duplicate is encountered.
-      </p>
-      <p>
-         For example, let's make a POJO model out of the following classes:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> A {
-      <jk>public</jk> B b;
-   }
-   
-   <jk>public class</jk> B {
-      <jk>public</jk> C c;
-   }
-   
-   <jk>public class</jk> C {
-      <jk>public</jk> A a;
-   }
-      </p>
-      <p>
-         Now we create a model with a loop and serialize the results.
-      </p>
-      <p class='bcode'>
-   <jc>// Clone an existing serializer and set property for detecting recursions.</jc>
-   UrlEncodingSerializer s = UrlEncodingSerializer.<jsf>DEFAULT_READABLE</jsf>.builder()
-      .detectRecursions(<jk>true</jk>).build();
-
-   <jc>// Create a recursive loop.</jc>
-   A a = <jk>new</jk> A();
-   a.<jf>b</jf> = <jk>new</jk> B();
-   a.<jf>b</jf>.<jf>c</jf> = <jk>new</jk> C();
-   a.<jf>b</jf>.<jf>c</jf>.<jf>a</jf> = a;
-   
-   <jc>// Serialize.</jc>
-   String json = s.serialize(a);
-      </p>
-      <p>
-         What we end up with is the following, which does not serialize the contents of the <code>c</code> field:
-      </p>
-      <p class='bcode'>
-   (
-      <ua>b</ua>=(
-         <ua>c</ua>=()
-      )
-   )
-      </p>
-      <p>
-         Without recursion detection enabled, this would cause a stack-overflow error.
-      </p>
-      <p>
-         Recursion detection introduces a performance penalty of around 20%.
-         <br>For this reason the setting is disabled by default.
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.4 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this serializer:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> 
-            - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/uon/UonSerializer.html" title="class in org.apache.juneau.uon"><code>UonSerializer</code></a> 
-            - UON serializer context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingSerializer.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingSerializer</code></a> 
-            - URL-Encoding serializer context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.5 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau serializers, the URL-encoding serializers are thread safe and maintain an internal 
-            cache of bean classes encountered.
-            <br>For performance reasons, it's recommended that serializers be reused whenever possible instead of 
-            always creating new instances.
-      </ul>
-   </div>
-</div>
-
-
-<!-- ======================================================================================================== -->
-<a id="UrlEncodingParser"></a>
-<h2 class='topic' onclick='toggle(this)'>3 - UrlEncodingParser and UonParser classes</h2>
-<div class='topic'>
-   <p>
-      <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingParser</code></a> and <a href="../../../../org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon"><code>UonParser</code></a> classes 
-      are used to convert URL-encoded strings back into POJOs.
-      <br>The <code>UonParser</code> class converts UON-encoded parameter values to POJOs.
-      The <code>UrlEncodingParser</code> class converts entire URL-Encoded strings to POJOs using 
-      <code>UonSerializer</code> to serialize individual values.
-      If you're trying to parse an entire URL-Encoded string, use <code>UrlEncodingParser</code>. 
-      If you're trying to parse an individual value (such as that returned by 
-      <code>RestServlet.getQueryParameter(name)</code>), use <code>UonParser</code>.
-   </p>  
-   <p>
-      The following static reusable instances of <code>UrlEncodingParser</code> are provided for convenience:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html#DEFAULT"><code>UrlEncodingParser.DEFAULT</code></a> 
-         - Default parser for entire URL-encoded strings, decode <code>%xx</code> sequences.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonParser.html#DEFAULT"><code>UonParser.DEFAULT</code></a> 
-         - Default parser for URL-encoded parameter values, don't decode <code>%xx</code> sequences.
-      <li>
-         <a href="../../../../org/apache/juneau/uon/UonParser.html#DEFAULT_DECODING"><code>UonParser.DEFAULT_DECODING</code></a> 
-         - Default parser for URL-encoded parameter values, decode <code>%xx</code> sequences.
-   </ul>
-   <p>
-      The general guidelines on which parser to use is:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Use the <code>DEFAULT</code> parser for parameter values that have already had <code>%xx</code> sequences 
-         decoded, such as when using <code>HttpServletRequest.getQueryParameter(name)</code>.
-      <li>
-         Use the <code>DEFAULT_ENCODED</code> parser if the input has not already had <code>%xx</code> sequences 
-         decoded.
-   </ul>
-   <p>
-      Let's build upon the previous example and parse the generated URL-encoded string back into the original bean.
-      <br>We start with the URL-encoded string that was generated.
-   </p>
-   <p class='bcode'>
-   <jc>// Use serializer with readable output.</jc>
-   UonSerializer s = UonSerializer.<jsf>DEFAULT_READABLE</jsf>;
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>,
-       <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-
-   <jc>// Serialize the bean.</jc>
-   String urlencoded = s.serialize(p);
-   </p>
-   <p>
-      This code produced the following:
-   </p>
-   <p class='bcode'>
-   (
-      <ua>id</ua>=<un>1</un>, 
-      <ua>name</ua>=<us>'John+Smith'</us>, 
-      <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>, 
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,
-      <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-            <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-            <ua>id</ua>=<un>1</un>, 
-            <ua>street</ua>=<us>'100+Main+Street'</us>, 
-            <ua>city</ua>=<us>Anywhereville</us>, 
-            <ua>state</ua>=<us>NY</us>, 
-            <ua>zip</ua>=<un>12345</un>, 
-            <ua>isCurrent</ua>=<uk>true</uk>
-         )
-      )
-   )
-   </p>
-   <p>
-      The code to convert this back into a bean is:
-   </p>
-   <p class='bcode'>
-   <jc>// Parse it back into a bean using the reusable JSON parser.</jc>
-   Person p = UonParser.<jsf>DEFAULT</jsf>.parse(urlencoded, Person.<jk>class</jk>);
-
-   <jc>// Render it back as JSON.</jc>
-   json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(p);
-   </p>
-   <p>
-      We print it back out to JSON to show that all the data has been preserved:
-   </p>
-   <p class='bcode'>
-   {
-      id: <un>1</un>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <un>1</un>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <un>12345</un>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }  
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="GenericParsing"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.1 - Parsing into generic POJO models</h3>
-   <div class='topic'>
-      <p>
-         The URL-encoding parser is not limited to parsing back into the original bean classes.
-         <br>If the bean classes are not available on the parsing side, the parser can also be used to parse into a 
-         generic model consisting of <code>Maps</code>, <code>Collections</code>, and primitive objects.
-      </p>
-      <p>
-         You can parse into any <code>Map</code> type (e.g. <code>HashMap</code>, <code>TreeMap</code>), but
-         using <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a> is recommended since it has many convenience methods
-         for converting values to various types.
-         <br>The same is true when parsing collections.  You can use any Collection (e.g. <code>HashSet</code>, 
-         <code>LinkedList</code>) or array (e.g. <code>Object[]</code>, <code>String[]</code>, 
-         <code>String[][]</code>), but using <a href="../../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a> is recommended.
-      </p>
-      <p>
-         When the map or list type is not specified, or is the abstract <code>Map</code>, <code>Collection</code>, 
-         or <code>List</code> types, the parser will use <code>ObjectMap</code> and <code>ObjectList</code> by 
-         default.
-      </p>
-      <p>
-         Starting back with our original URL-encoded string:
-      </p>
-      <p class='bcode'>
-   (
-      <ua>id</ua>=<un>1</un>, 
-      <ua>name</ua>=<us>'John+Smith'</us>, 
-      <ua>uri</ua>=<us>http://sample/addressBook/person/1</us>, 
-      <ua>addressBookUri</ua>=<us>http://sample/addressBook</us>,
-      <ua>birthDate</ua>=<us>1946-08-12T00:00:00Z</us>,
-      <ua>addresses</ua>=@(
-         (
-            <ua>uri</ua>=<us>http://sample/addressBook/address/1</us>, 
-            <ua>personUri</ua>=<us>http://sample/addressBook/person/1</us>, 
-            <ua>id</ua>=<un>1</un>, 
-            <ua>street</ua>=<us>'100+Main+Street'</us>, 
-            <ua>city</ua>=<us>Anywhereville</us>, 
-            <ua>state</ua>=<us>NY</us>, 
-            <ua>zip</ua>=<un>12345</un>, 
-            <ua>isCurrent</ua>=<uk>true</uk>
-         )
-      )
-   )
-      </p>
-      <p>
-         We can parse this into a generic <code>ObjectMap</code>:
-      </p>
-      <p class='bcode'> 
-   <jc>// Parse URL-encoded string into a generic POJO model.</jc>
-   ObjectMap m = UonParser.<jsf>DEFAULT</jsf>.parse(urlencoded, ObjectMap.<jk>class</jk>);
-
-   <jc>// Convert it back to JSON.</jc>
-   String json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(m);
-      </p>
-      <p>
-         What we end up with is the exact same output.
-         <br>Even the numbers and booleans are preserved because they are parsed into <code>Number</code> and 
-         <code>Boolean</code> objects when parsing into generic models.
-      </p>
-      <p class='bcode'>
-   {
-      id: <un>1</un>, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: <un>1</un>, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: <un>12345</un>, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }
-      </p>
-      <p>
-         Once parsed into a generic model, various convenience methods are provided on the <code>ObjectMap</code>
-            and <code>ObjectList</code> classes to retrieve values:
-      </p>
-      <p class='bcode'>
-   <jc>// Parse URL-encoded string into a generic POJO model.</jc>
-   ObjectMap m = UonParser.<jsf>DEFAULT</jsf>.parse(urlencoded, ObjectMap.<jk>class</jk>);
-
-   <jc>// Get some simple values.</jc>
-   String name = m.getString(<js>"name"</js>);
-   <jk>int</jk> id = m.getInt(<js>"id"</js>);
-
-   <jc>// Get a value convertable from a String.</jc>
-   URI uri = m.get(URI.<jk>class</jk>, <js>"uri"</js>);
-
-   <jc>// Get a value using a transform.</jc>
-   CalendarSwap transform = <jk>new</jk> CalendarSwap.ISO8601DTZ();
-   Calendar birthDate = m.get(transform, <js>"birthDate"</js>);
-
-   <jc>// Get the addresses.</jc>
-   ObjectList addresses = m.getObjectList(<js>"addresses"</js>);
-
-   <jc>// Get the first address and convert it to a bean.</jc>
-   Address address = addresses.get(Address.<jk>class</jk>, 0);
-      </p>
-
-      <p>
-         As a general rule, parsing into beans is often more efficient than parsing into generic models.
-         <br>And working with beans is often less error prone than working with generic models.
-      </p>     
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.2 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this parser:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            <a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon"><code>UonParser</code></a> - UON parser context properties.
-         <li>
-            <a href="../../../../org/apache/juneau/urlencoding/UrlEncodingParser.html" title="class in org.apache.juneau.urlencoding"><code>UrlEncodingParser</code></a> - URL-Encoding parser context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.3 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau parsers, the URL-encoding parsers are thread safe and maintain an internal cache 
-            of bean classes encountered.
-            <br>For performance reasons, it's recommended that parser be reused whenever possible instead of always 
-            creating new instances.
-      </ul>
-   </div>
-   
-</div>
-
-<p align="center"><i><b>*** fín ***</b></i></p></div>
+<div class="block">URL-Encoding Marshalling Support</div>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
diff --git a/content/site/apidocs/org/apache/juneau/xml/package-summary.html b/content/site/apidocs/org/apache/juneau/xml/package-summary.html
index d91c668..af6993a 100644
--- a/content/site/apidocs/org/apache/juneau/xml/package-summary.html
+++ b/content/site/apidocs/org/apache/juneau/xml/package-summary.html
@@ -269,2931 +269,7 @@
 <!--   -->
 </a>
 <h2 title="Package org.apache.juneau.xml Description">Package org.apache.juneau.xml Description</h2>
-<div class="block"><p>XML Marshalling Support</p>
-<script>
-   function toggle(x) {
-      var div = x.nextSibling;
-      while (div != null && div.nodeType != 1)
-         div = div.nextSibling;
-      if (div != null) {
-         var d = div.style.display;
-         if (d == 'block' || d == '') {
-            div.style.display = 'none';
-            x.className += " closed";
-         } else {
-            div.style.display = 'block';
-            x.className = x.className.replace(/(?:^|\s)closed(?!\S)/g , '' );
-         }
-      }
-   }
-</script>
-
-<a id='TOC'></a><h5 class='toc'>Table of Contents</h5>
-<ol class='toc'>
-   <li><p><a class='doclink' href='#Overview'>XML support overview</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#OverviewExample'>XML support overview - example</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#XmlSerializer'>XmlSerializer class</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#Methodology'>XML support methodology</a></p>
-      <li><p><a class='doclink' href='#XmlAnnotation'>@Xml annotations</a></p>
-      <ol>
-         <li><p><a class='doclink' href='#XmlName'>@Bean.typeName()</a></p>
-         <li><p><a class='doclink' href='#XmlChildName'>@Xml.childName()</a></p>
-         <li><p><a class='doclink' href='#XmlFormat'>@Xml.format()</a></p>
-      </ol>
-      <li><p><a class='doclink' href='#Namespaces'>Namespaces</a></p>
-      <ol>
-         <li><p><a class='doclink' href='#AutoDetectNamespaces'>Auto-detection of namespaces</a></p>
-      </ol>
-      <li><p><a class='doclink' href='#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-      <li><p><a class='doclink' href='#Collections'>Collections</a></p>
-      <li><p><a class='doclink' href='#XmlSchemaSupport'>XML-Schema support</a></p>
-      <li><p><a class='doclink' href='#Recursion'> Non-tree models and recursion detection</a></p>
-      <li><p><a class='doclink' href='#SerializerConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#SerializerOtherNotes'>Other notes</a></p>
-   </ol>
-   <li><p><a class='doclink' href='#XmlParser'>XmlParser class</a></p> 
-   <ol>
-      <li><p><a class='doclink' href='#GenericParsing'>Parsing into generic POJO models</a></p>
-      <li><p><a class='doclink' href='#ParserConfigurableProperties'>Configurable properties</a></p>
-      <li><p><a class='doclink' href='#ParserOtherNotes'>Other notes</a></p>
-   </ol>
-</ol>
-
-
-<!-- ======================================================================================================== -->
-<a id="Overview"></a>
-<h2 class='topic' onclick='toggle(this)'>1 - XML support overview</h2>
-<div class='topic'>
-   <p>
-      Juneau supports converting arbitrary POJOs to and from XML using ultra-efficient serializers and parsers.
-      <br>The XML serializer converts POJOs directly to XML without the need for intermediate DOM objects.
-      <br>Likewise, the XML parser uses a STaX parser and creates POJOs directly without intermediate DOM objects. 
-   </p>
-   <p>
-      Unlike frameworks such as JAXB, Juneau does not require POJO classes to be annotated to produce and consume 
-      XML.
-      <br>For example, it can serialize and parse instances of any of the following POJO types:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         Java primitive objects (e.g. <code>String</code>, <code>Integer</code>, <code>Boolean</code>, 
-         <code>Float</code>).
-      <li>
-         Java collections framework objects (e.g. <code>HashSet</code>, <code>TreeMap</code>) containing anything 
-         on this list.
-      <li>
-         Multi-dimensional arrays of any type on this list.
-      <li>
-         Java Beans with properties of any type on this list.
-      <li>
-         Classes with standard transformations to and from <code>Strings</code> (e.g. classes containing 
-         <code>toString()</code>, <code>fromString()</code>, <code>valueOf()</code>, 
-         <code>constructor(String)</code>).
-   </ul>
-   <p>
-      In addition to the types shown above, Juneau includes the ability to define transforms to transform 
-      non-standard object and property types to serializable forms (e.g. to transform <code>Calendars</code> to and 
-      from <code>ISO8601</code> strings, or <code>byte[]</code> arrays to and from base-64 encoded strings).
-      <br>These transforms can be associated with serializers/parsers, or can be associated with classes or bean 
-      properties through type and method annotations.
-   </p>
-   <p>
-      Refer to <a href='../../../../overview-summary.html#juneau-marshall.PojoCategories' class='doclink'>POJO Categories</a> 
-      for a complete definition of supported POJOs.
-   </p>
-   <p>
-      While annotations are not required to produce or consume XML, several XML annotations are provided for handling 
-      namespaces and fine-tuning the format of the XML produced.
-   </p>
-   
-   <h5 class='topic'>Prerequisites</h5>
-   <p>
-      The Juneau XML serialization and parsing support does not require any external prerequisites.  
-      It only requires Java 1.6 or above.
-   </p>
-
-   <!-- ======================================================================================================== -->
-   <a id="OverviewExample"></a>
-   <h3 class='topic' onclick='toggle(this)'>1.1 - XML support overview - example</h3>
-   <div class='topic'>
-      <p>
-         The example shown here is from the Address Book resource located in the <code>juneau-examples-rest</code> 
-         microservice project.
-         <br>The POJO model consists of a <code>List</code> of <code>Person</code> beans, with each <code>Person</code> 
-         containing zero or more <code>Address</code> beans.
-      </p>
-      <p>
-         When you point a browser at <code>/sample/addressBook</code>, the POJO is rendered as HTML:
-      </p>
-      <img class='bordered' src="doc-files/Example_HTML.png">
-      <p>
-         By appending <code>?Accept=<i>mediaType</i>&amp;plainText=true</code> to the URL, you can view the data 
-         in the various supported XML formats:
-      </p>
-      
-      <h5 class='figure'>Normal XML</h5>
-      <img class='bordered' src="doc-files/Example_XML.png">
-      
-      <h5 class='figure'>Simplified XML</h5>
-      <img class='bordered' src="doc-files/Example_XMLSimple.png">
-
-      <p>
-         In addition to serializing POJOs to XML, Juneau includes support for serializing the POJO metamodel to 
-         XML Schema, with support for multiple namespaces.
-      </p>
-      
-      <h5 class='figure'>XML Schema</h5>
-      <img class='bordered' src="doc-files/Example_XMLSchema.png">
-   </div>
-</div>
-
-
-<!-- ======================================================================================================== -->
-<a id="XmlSerializer"></a>
-<h2 class='topic' onclick='toggle(this)'>2 - XmlSerializer class</h2>
-<div class='topic'>
-   <p>
-      <a href="../../../../org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSerializer</code></a> is the class used to convert POJOs to XML.
-      <br><a href="../../../../org/apache/juneau/xml/XmlDocSerializer.html" title="class in org.apache.juneau.xml"><code>XmlDocSerializer</code></a> is a subclass that adds an XML declaration element to the output 
-      before the POJO is serialized.
-   </p>  
-   <p>
-      The XML serializer includes many configurable settings.
-      <br>Static reusable instances of XML serializers are provided with commonly-used settings:
-   </p>
-   <ul class='spaced-list'>
-      <li>
-         <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#DEFAULT"><code>XmlSerializer.DEFAULT</code></a> 
-         - All default settings.
-      <li>
-         <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#DEFAULT_SQ"><code>XmlSerializer.DEFAULT_SQ</code></a> 
-         - Use single quotes on attributes.  Typically useful for testing since it makes string comparison simpler.
-      <li>
-         <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#DEFAULT_SQ_READABLE"><code>XmlSerializer.DEFAULT_SQ_READABLE</code></a> 
-         - Use single quotes on attributes and add whitespace for readability.
-      <li>
-         <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#DEFAULT_NS"><code>XmlSerializer.DEFAULT_NS</code></a> 
-         - Same as DEFAULT but with namespaces enabled.
-      <li>
-         <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#DEFAULT_NS_SQ"><code>XmlSerializer.DEFAULT_NS_SQ</code></a> 
-         - Same as DEFAULT_SQ but with namespaces enabled.
-      <li>
-         <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#DEFAULT_NS_SQ_READABLE"><code>XmlSerializer.DEFAULT_NS_SQ_READABLE</code></a> 
-         - Same as DEFAULT_SQ_READABLE but with namespaces enabled.
-   </ul>
-   <p>
-      In addition, DTO beans are provided that use the XML serializer and parser for the following languages:
-   </p>
-   <ul>
-      <li class='jp'><a class='doclink' href='../dto/atom/package-summary.html#TOC'>org.apache.juneau.dto.atom</a> - ATOM beans.
-      <li class='jp'><a class='doclink' href='../dto/cognos/package-summary.html#TOC'>org.apache.juneau.dto.cognos</a> - Cognos beans.
-      <li class='jp'><a class='doclink' href='../dto/html5/package-summary.html#TOC'>org.apache.juneau.dto.html5</a> - HTML5 beans.
-   </ul>
-   <p>
-      Refer to the package-level Javadocs for more information about those formats.
-   </p>
-   
-   <h5 class='topic'>Notes about examples</h5>
-   <p>
-      The examples shown in this document will use single-quote, readable settings.
-      <br>For brevity, the examples will use public fields instead of getters/setters to reduce the size of the examples.
-      <br>In the real world, you'll typically want to use standard bean getters and setters.
-   </p>
-   <p>
-      To start off simple, we'll begin with the following simplified bean and build upon it.
-   </p>
-   <p class='bcode'>
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name) {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-      }
-   }
-   </p>
-   <p>
-      The following code shows how to convert this to simple XML (no namespaces):
-   </p>
-   <p class='bcode'>
-   <jc>// Create a new serializer with readable output, no namespaces yet.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>()
-      .ws()  <jc>// or .useWhitespace(true)</jc>  
-      .sq()  <jc>// or .quoteChar('\'')</jc>
-      .ns()  <jc>// or .enableNamespaces(false)</jc>
-      .build();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>);
-
-   <jc>// Serialize the bean to XML.</jc>
-   String xml = s.serialize(p);
-   </p>
-   <p>
-      <i>Side note:</i>  Serializers can also be created by cloning existing serializers:
-   </p>
-   <p class='bcode'>
-   <jc>// Create a new serializer with readable output, no namespaces yet, but use cloning method.</jc>
-   XmlSerializer s = XmlSerializer.<jsf>DEFAULT_SQ_READABLE</jsf>
-      .builder()
-      .ns()
-      .build();
-   </p>
-   <p>
-      The code above produces the following output:
-   </p>
-   <p class='bcode'><xt>
-   &lt;object&gt;
-      &lt;id&gt;<xv>1</xv>&lt;/id&gt;
-      &lt;name&gt;<xv>John Smith</xv>&lt;/name&gt;
-   &lt;/object&gt;
-   </xt></p>
-   <p>
-      The first thing you may notice is how the bean instance is represented by the element <xt>&lt;object&gt;</xt>.
-      <br>When objects have no name associated with them, Juneau provides a default generalized name that maps to the 
-      equivalent JSON data type.
-      <br>Some cases when objects do not have names:
-   </p>
-   <ul>
-      <li>Root element
-      <li>Object in an array, collection, or map.
-   </ul>
-   <p>
-      The generalized name reflects the JSON-equivalent data type.
-      <br>Juneau produces JSON-equivalent XML, meaning any valid JSON document can be losslessly converted into an XML 
-      equivalent.
-      <br>In fact, all of the Juneau serializers and parsers are built upon this JSON-equivalence.
-   </p>
-
-   
-   <!-- ======================================================================================================== -->
-   <a id="Methodology"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.1 - XML support methodology</h3>
-   <div class='topic'>
-      <p>
-         The following examples show how different data types are represented in XML.
-         They mirror how the data structures are represented in JSON.
-      </p>
-      
-      <h5 class='topic'>Simple types</h5>
-      <p>
-         The representation of loose (not a direct bean property value) simple types are shown below:
-      </p>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>XML</th>
-         </tr>
-         <tr>
-            <td>string</td>
-            <td class='code'><js>'foo'</js></td>
-            <td class='code'><xt>&lt;string&gt;</xt>foo<xt>&lt;/string&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>boolean</td>
-            <td class='code'><jk>true</jk></td>
-            <td class='code'><xt>&lt;boolean&gt;</xt>true<xt>&lt;/boolean&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>integer</td>
-            <td class='code'>123</td>
-            <td class='code'><xt>&lt;number&gt;</xt>123<xt>&lt;/number&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>float</td>
-            <td class='code'>1.23</td>
-            <td class='code'><xt>&lt;number&gt;</xt>1.23<xt>&lt;/number&gt;</xt></td>
-         </tr>
-         <tr>
-            <td>null</td>
-            <td class='code'><jk>null</jk></td>
-            <td class='code'><xt>&lt;null/&gt;</xt></td>
-         </tr>
-      </table>
-      
-      <h5 class='topic'>Maps</h5>
-      <p>
-         Loose maps and beans use the element <xt>&lt;object&gt;</xt> for encapsulation.
-      </p>
-      <p>
-         <xa>_type</xa> attributes are added to bean properties or map entries if the type cannot be inferred 
-         through reflection (e.g. an <code>Object</code> or superclass/interface value type).
-      </p>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>XML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   Map&lt;String,String&gt;
-            </td>
-            <td class='code'>
-   {
-      k1: <js>'v1'</js>
-      k2: <jk>null</jk>
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;object&gt;
-      &lt;k1&gt;<xv>v1</xv>&lt;/k1&gt;
-      &lt;k2 <xa>_type</xa>=<xs>'null'</xs>/&gt;
-   &lt;/object&gt;
-         </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Map&lt;String,Number&gt;
-            </td>
-            <td class='code'>
-   {
-      k1: 123,
-      k2: 1.23,
-      k3: <jk>null</jk>
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;object&gt;
-      &lt;k1&gt;<xv>123</xv>&lt;/k1&gt;
-      &lt;k2&gt;<xv>1.23</xv>&lt;/k2&gt;
-      &lt;k3 <xa>_type</xa>=<xs>'null'</xs>/&gt;
-   &lt;/object&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Map&lt;String,Object&gt;
-            </td>
-            <td class='code'>
-   {
-      k1: <js>'v1'</js>
-      k2: 123,
-      k3: 1.23,
-      k4: <jk>true</jk>,
-      k5: <jk>null</jk>
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;object&gt;
-      &lt;k1&gt;<xv>v1</xv>&lt;/k1&gt;
-      &lt;k2 <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>123</xv>&lt;/k2&gt;
-      &lt;k3 <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>1.23</xv>&lt;/k3&gt;
-      &lt;k4 <xa>_type</xa>=<xs>'boolean'</xs>&gt;<xv>true</xv>&lt;/k4&gt;
-      &lt;k5 <xa>_type</xa>=<xs>'null'</xs>/&gt;
-   &lt;/object&gt;
-            </xt></td>
-         </tr>
-      </table>
-      
-      <h5 class='topic'>Arrays</h5>
-      <p>
-         Loose collections and arrays use the element <xt>&lt;array&gt;</xt> for encapsulation.
-      </p>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>XML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   String[]
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-      &lt;null/&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Number[]
-            </td>
-            <td class='code'>
-   [
-      123,
-      1.23,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
-      &lt;null/&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   Object[]
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>,
-      123,
-      1.23,
-      <jk>true</jk>,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
-      &lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;
-      &lt;null/&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   String[][]
-            </td>
-            <td class='code'>
-   [
-      [<js>'foo'</js>, <jk>null</jk>],
-      <jk>null</jk>,
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;array&gt;
-         &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-         &lt;null/&gt;
-      &lt;/array&gt;
-      &lt;null/&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>int</jk>[]
-            </td>
-            <td class='code'>
-   [
-      123
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>boolean</jk>[]
-            </td>
-            <td class='code'>
-   [
-      <jk>true</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   List&lt;String&gt;
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-      &lt;null/&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   List&lt;Number&gt;
-            </td>
-            <td class='code'>
-   [
-      123,
-      1.23,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
-      &lt;null/&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-         <tr>
-            <td class='code'>
-   List&lt;Object&gt;
-            </td>
-            <td class='code'>
-   [
-      <js>'foo'</js>,
-      123,
-      1.23,
-      <jk>true</jk>,
-      <jk>null</jk>
-   ]
-            </td>
-            <td class='code'><xt>
-   &lt;array&gt;
-      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
-      &lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;
-      &lt;null/&gt;
-   &lt;/array&gt;
-            </xt></td>
-         </tr>
-      </table>
-
-      <h5 class='topic'>Beans</h5>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>XML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>class</jk> MyBean {
-      <jk>public</jk> String a;
-      <jk>public</jk> <jk>int</jk> b;
-      <jk>public</jk> Object c;  <jc>// String value</jc>
-      <jk>public</jk> Object d;  <jc>// Integer value</jc>     
-      <jk>public</jk> MyBean2 e;  
-      <jk>public</jk> String[] f;  
-      <jk>public</jk> <jk>int</jk>[] g;   
-   }
-   <jk>class</jk> MyBean2 {
-      String h;  
-   }
-            </td>
-            <td class='code'>
-   {
-      a: <js>'foo'</js>,
-      b: 123,
-      c: <js>'bar'</js>,
-      d: 456,
-      e: {
-         h: <js>'baz'</js>
-      }
-      f: [<js>'qux'</js>]
-      g: [789]
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;<xv>foo</xv>&lt;/a&gt;
-      &lt;b&gt;<xv>123</xv>&lt;/b&gt;
-      &lt;c&gt;<xv>bar</xv>&lt;/c&gt;
-      &lt;d <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>456</xv>&lt;/d&gt;
-      &lt;e&gt;
-         &lt;h&gt;<xv>baz</xv>&lt;/h&gt;
-      &lt;/e&gt;
-      &lt;f&gt;
-         &lt;string&gt;<xv>qux</xv>&lt;/string&gt;
-      &lt;/f&gt;
-      &lt;g&gt;
-         &lt;number&gt;<xv>789</xv>&lt;/number&gt;
-      &lt;/g&gt;
-   &lt;/object&gt;
-            </xt></td>
-         </tr>
-      </table>
-      
-      <h5 class='topic'>Beans with Map properties</h5>
-      <table class='styled' style='width:auto'>
-         <tr>
-            <th>Data type</th>
-            <th>JSON example</th>
-            <th>XML</th>
-         </tr>
-         <tr>
-            <td class='code'>
-   <jk>class</jk> MyBean {
-      <jk>public</jk> Map&lt;String,String&gt; a;
-      <jk>public</jk> Map&lt;String,Number&gt; b;
-      <jk>public</jk> Map&lt;String,Object&gt; c; 
-   }
-            </td>
-            <td class='code'>
-   {
-      a: {
-         k1: <js>'foo'</js>
-      },
-      b: {
-         k2: 123
-      },
-      c: {
-         k3: <js>'bar'</js>,
-         k4: 456,
-         k5: <jk>true</jk>,
-         k6: <jk>null</jk>
-      }
-   }
-            </td>
-            <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;k1&gt;<xv>foo</xv>&lt;/k1&gt;
-      &lt;/a&gt;
-      &lt;b&gt;
-         &lt;k2&gt;<xv>123</xv>&lt;/k2&gt;
-      &lt;/b&gt;
-      &lt;c&gt;
-         &lt;k3&gt;<xv>bar</xv>&lt;/k3&gt;
-         &lt;k4 <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>456</xv>&lt;/k4&gt;
-         &lt;k5 <xa>_type</xa>=<xs>'boolean'</xs>&gt;<xv>true</xv>&lt;/k5&gt;
-         &lt;k6 <xa>_type</xa>=<xs>'null'</xs>/&gt;
-      &lt;/c&gt;
-   &lt;/object&gt;
-            </xt></td>
-         </tr>
-      </table>
-   </div>
-      
-      
-   <!-- ======================================================================================================== -->
-   <a id="XmlAnnotation"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.2 - @Xml annotations</h3>
-   <div class='topic'>
-      <p>
-         Just because Juneau allows you to serialize ordinary POJOs to XML doesn't mean you are limited to just 
-         JSON-equivalent XML.
-         <br>Several annotations are provided in the <a href="../../../../org/apache/juneau/xml/annotation/package-summary.html"><code>org.apache.juneau.xml.annotation</code></a> package for customizing the output.
-      </p>
-
-      <!-- ======================================================================================================== -->
-      <a id="XmlName"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.2.1 - @Bean.typeName()</h4>
-      <div class='topic'>
-         <p>
-            The <a href="../../../../org/apache/juneau/annotation/Bean.html#typeName--"><code>@Bean.typeName()</code></a> annotation can be used to 
-            override the Juneau default name on bean elements. 
-            Types names serve two distinct purposes:
-         </p>
-         <ol>
-            <li>To override the element name.
-            <li>To serve as a class identifier so that the bean class can be inferred during parsing if it
-               cannot automatically be inferred through reflection.
-         </ol>
-         
-         <h5 class='figure'>Example</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)
-   <jk>class</jk> MyBean {
-      <jk>public</jk> String a;
-      <jk>public int</jk> b;
-   }  
-               </td>
-               <td class='code'>
-   {
-      a: <js>'foo'</js>,
-      b: 123
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;<xv>foo</xv>&lt;/id&gt;
-      &lt;b&gt;<xv>123</xv>&lt;/name&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;X&gt;
-      &lt;a&gt;<xv>foo</xv>&lt;/id&gt;
-      &lt;b&gt;<xv>123</xv>&lt;/name&gt;
-   &lt;/X&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            On bean properties, a <xa>_type</xa> attribute will be added if a type name is present and the bean 
-            class cannot be inferred through reflection.
-         </p>
-         <p>
-            In the following example, a type attribute is used on property 'b' but not property 'a' since
-            'b' is of type <code>Object</code> and therefore the bean class cannot be inferred.
-         </p>
-         
-         <h5 class='figure'>Example</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Java</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <jk>public</jk> BeanX a = <jk>new</jk> BeanX();
-      <jk>public</jk> Object b = <jk>new</jk> BeanX();
-   }
-   
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)
-   <jk>class</jk> BeanX {
-      <jk>public</jk> String fx = <js>"foo"</js>;
-   }
-      
-               </td>
-               <td class='code'><xt>
-&lt;object&gt;
-   &lt;a&gt;
-      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-   &lt;/a&gt;
-   &lt;b&gt;
-      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-   &lt;/b&gt;
-&lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-&lt;object&gt;
-   &lt;a&gt;
-      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-   &lt;/a&gt;
-   &lt;b <xa>_type</xa>=<xs>'X'</xs>&gt;
-      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-   &lt;/b&gt;
-&lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <ul class='doctree'>
-            <li class='info'>
-               <code>string</code>, <code>number</code>, <code>boolean</code>, <code>object</code>, 
-               <code>array</code>, and <code>null</code> are reserved keywords that cannot be used as type names.
-         </ul>
-         <p>
-            Beans with type names are often used in conjunction with the 
-            <a href="../../../../org/apache/juneau/annotation/Bean.html#beanDictionary--"><code>@Bean.beanDictionary()</code></a> and 
-            <a href="../../../../org/apache/juneau/annotation/BeanProperty.html#beanDictionary--"><code>@BeanProperty.beanDictionary()</code></a> 
-            annotations so that the beans can be resolved at parse time.  
-            These annotations are not necessary during serialization, but are needed during parsing in order to 
-            resolve the bean types.
-         </p>
-         <p>
-            The following examples show how type names are used under various circumstances.  
-         </p>
-         <p>
-            Pay special attention to when <xa>_type</xa> attributes are and are not used.
-         </p>
-         
-         <h5 class='figure'>Examples</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Java</th>
-               <th>XML</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
-   <jk>class</jk> BeanWithArrayPropertiesWithTypeNames {
-      <jk>public</jk> BeanX[] b1 = <jk>new</jk> BeanX[]{ 
-         <jk>new</jk> BeanX() 
-      };
-      <jk>public</jk> Object[] b2 = <jk>new</jk> BeanX[]{ 
-         <jk>new</jk> BeanX() 
-      };
-      <jk>public</jk> Object[] b3 = <jk>new</jk> Object[]{ 
-         <jk>new</jk> BeanX() 
-      };
-   }
-               </td>          
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;b1&gt;
-         &lt;X&gt;
-            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-         &lt;/X&gt;
-      &lt;/b1&gt;
-      &lt;b2&gt;
-         &lt;X&gt;
-            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-         &lt;/X&gt;
-      &lt;/b2&gt;
-      &lt;b3&gt;
-         &lt;X&gt;
-            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-         &lt;/X&gt;
-      &lt;/b3&gt;
-   &lt;/object&gt;
-               </xt></td>           
-            </tr>          
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
-   <jk>class</jk> BeanWith2dArrayPropertiesWithTypeNames {
-      <jk>public</jk> BeanX[][] b1 = <jk>new</jk> BeanX[][]{{
-         <jk>new</jk> BeanX()
-      }};
-      <jk>public</jk> Object[][] b2 = <jk>new</jk> BeanX[][]{{
-         <jk>new</jk> BeanX()
-      }};
-      <jk>public</jk> Object[][] b3 = <jk>new</jk> Object[][]{{
-         <jk>new</jk> BeanX()
-      }};
-   }
-               </td>          
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;b1&gt;
-         &lt;array&gt;
-            &lt;X&gt;
-               &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-            &lt;/X&gt;
-         &lt;/array&gt;
-      &lt;/b1&gt;
-      &lt;b2&gt;
-         &lt;array&gt;
-            &lt;X&gt;
-               &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-            &lt;/X&gt;
-         &lt;/array&gt;
-      &lt;/b2&gt;
-      &lt;b3&gt;
-         &lt;array&gt;
-            &lt;X&gt;
-               &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-            &lt;/X&gt;
-         &lt;/array&gt;
-      &lt;/b3&gt;
-   &lt;/object&gt;
-               </xt></td>           
-            </tr>    
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
-   <jk>class</jk> BeanWithMapPropertiesWithTypeNames {
-      <jk>public</jk> Map&lt;String,BeanX&gt; b1 = <jk>new</jk> HashMap&lt;&gt;() {{ 
-         put(<js>"k1"</js>, <jk>new</jk> BeanX()); 
-      }};
-      <jk>public</jk> Map&lt;String,Object&gt; b2 = <jk>new</jk> HashMap&lt;&gt;() {{
-         put(<js>"k2"</js>, <jk>new</jk> BeanX());
-      }}
-   }
-               </td>          
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;b1&gt;
-         &lt;k1&gt;
-            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-         &lt;/k1&gt;
-      &lt;/b1&gt;
-      &lt;b2&gt;
-         &lt;k2 <xa>_type</xa>=<xs>'X'</xs>&gt;
-            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
-         &lt;/k2&gt;
-      &lt;/b2&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            Bean type names are also used for resolution when abstract fields are used.
-            The following examples show how they are used in a variety of circumstances.
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Java</th>
-               <th>XML</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
-   <jk>class</jk> BeanWithAbstractFields {
-      <jk>public</jk> A a = <jk>new</jk> A();
-      <jk>public</jk> IA ia = <jk>new</jk> A();
-      <jk>public</jk> AA aa = <jk>new</jk> A();
-      <jk>public</jk> Object o = <jk>new</jk> A();
-   }
-   
-   <jk>interface</jk> IA {}
-   
-   <jk>abstract class</jk> AA <jk>implements</jk> IA {}
-
-   <ja>@Bean</ja>(typeName=<js>"A"</js>)
-   <jk>class</jk> A <jk>extends</jk> AA {
-      <jk>public</jk> String fa = <js>"foo"</js>;
-   }
-               </td>          
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-      &lt;/a&gt;
-      &lt;ia <xa>_type</xa>=<xs>'A'</xs>&gt;
-         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-      &lt;/ia&gt;
-      &lt;aa <xa>_type</xa>=<xs>'A'</xs>&gt;
-         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-      &lt;/aa&gt;
-      &lt;o <xa>_type</xa>=<xs>'A'</xs>&gt;
-         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-      &lt;/o&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
-   <jk>class</jk> BeanWithAbstractArrayFields {
-      <jk>public</jk> A[] a = <jk>new</jk> A[]{<jk>new</jk> A()};
-      <jk>public</jk> IA[] ia1 = <jk>new</jk> A[]{<jk>new</jk> A()};
-      <jk>public</jk> IA[] ia2 = <jk>new</jk> IA[]{<jk>new</jk> A()};
-      <jk>public</jk> AA[] aa1 = <jk>new</jk> A[]{<jk>new</jk> A()};
-      <jk>public</jk> AA[] aa2 = <jk>new</jk> AA[]{<jk>new</jk> A()};
-      <jk>public</jk> Object[] o1 = <jk>new</jk> A[]{<jk>new</jk> A()};
-      <jk>public</jk> Object[] o2 = <jk>new</jk> Object[]{<jk>new</jk> A()};
-   }
-               </td>          
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;A&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/A&gt;
-      &lt;/a&gt;
-      &lt;ia1&gt;
-         &lt;A&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/A&gt;
-      &lt;/ia1&gt;
-      &lt;ia2&gt;
-         &lt;A&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/A&gt;
-      &lt;/ia2&gt;
-      &lt;aa1&gt;
-         &lt;A&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/A&gt;
-      &lt;/aa1&gt;
-      &lt;aa2&gt;
-         &lt;A&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/A&gt;
-      &lt;/aa2&gt;
-      &lt;o1&gt;
-         &lt;A&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/A&gt;
-      &lt;/o1&gt;
-      &lt;o2&gt;
-         &lt;A&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/A&gt;
-      &lt;/o2&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
-   <jk>class</jk> BeanWithAbstractMapFields {
-      <jk>public</jk> Map&lt;String,A&gt; a = <jk>new</jk> HashMap&lt;&gt;() {{
-         put(<js>"k1"</js>, <jk>new</jk> A());
-      }};
-      <jk>public</jk> Map&lt;String,AA&gt; b = <jk>new</jk> HashMap&lt;&gt;() {{
-         put(<js>"k2"</js>, <jk>new</jk> A());
-      }};
-      <jk>public</jk> Map&lt;String,Object&gt; c = <jk>new</jk> HashMap&lt;&gt;() {{
-         put(<js>"k3"</js>, <jk>new</jk> A());
-      }};
-   }
-               </td>          
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;k1&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/k1&gt;
-      &lt;/a&gt;
-      &lt;b&gt;
-         &lt;k2 <xa>_type</xa>=<xs>'A'</xs>&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/k2&gt;
-      &lt;/b&gt;
-      &lt;c&gt;
-         &lt;k3 <xa>_type</xa>=<xs>'A'</xs>&gt;
-            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-         &lt;/k3&gt;
-      &lt;/c&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
-   <jk>class</jk> BeanWithAbstractMapArrayFields {
-      <jk>public</jk> Map&lt;String,A[]&gt; a = <jk>new</jk> LinkedHashMap&lt;&gt;() {{
-         put(<js>"a1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
-      }};
-      <jk>public</jk> Map&lt;String,IA[]&gt; ia = <jk>new</jk> LinkedHashMap&lt;&gt;() {{
-         put(<js>"ia1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
-         put(<js>"ia2"</js>, <jk>new</jk> IA[]{<jk>new</jk> A()});
-      }};
-      <jk>public</jk> Map&lt;String,AA[]&gt; aa = <jk>new</jk> LinkedHashMap&lt;&gt;() {{
-         put(<js>"aa1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
-         put(<js>"aa2"</js>, <jk>new</jk> AA[]{<jk>new</jk> A()});
-      }};
-      <jk>public</jk> Map&lt;String,Object[]&gt; o = <jk>new</jk>LinkedHashMap&lt;&gt;() {{
-         put(<js>"o1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
-         put(<js>"o2"</js>, <jk>new</jk> AA[]{<jk>new</jk> A()});
-      }};
-   }
-               </td>          
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;a1&gt;
-            &lt;A&gt;
-               &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-            &lt;/A&gt;
-         &lt;/a1&gt;
-      &lt;/a&gt;
-      &lt;ia&gt;
-         &lt;ia1&gt;
-            &lt;A&gt;
-               &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-            &lt;/A&gt;
-         &lt;/ia1&gt;
-         &lt;ia2&gt;
-            &lt;A&gt;
-               &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-            &lt;/A&gt;
-         &lt;/ia2&gt;
-      &lt;/ia&gt;
-      &lt;aa&gt;
-         &lt;aa1&gt;
-            &lt;A&gt;
-               &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-            &lt;/A&gt;
-         &lt;/aa1&gt;
-         &lt;aa2&gt;
-            &lt;A&gt;
-               &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-            &lt;/A&gt;
-         &lt;/aa2&gt;
-      &lt;/aa&gt;
-      &lt;o&gt;
-         &lt;o1&gt;
-            &lt;A&gt;
-               &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-            &lt;/A&gt;
-         &lt;/o1&gt;
-         &lt;o2&gt;
-            &lt;A&gt;
-               &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
-            &lt;/A&gt;
-         &lt;/o2&gt;
-      &lt;/o&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            On a side note, characters that cannot be represented in XML 1.0 are encoded using a simple encoding.
-            Note in the examples below, some characters such as <js>'\n'</js>, <js>'\t</js>', and <js>'\r'</js>
-            can be represented as XML entities when used in text but not in element names.  Other characters such as
-            <js>'\b'</js> and <js>'\f'</js> cannot be encoded in XML 1.0 at all without inventing our own notation.
-            Whitespace characters in element names are encoded as well as whitespace end characters in text.
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Java</th>
-               <th>XML</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> BeanWithSpecialCharacters {
-      <jk>public</jk> String a = <js>"  \b\f\n\t\r  "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;<xv>_x0020_ _x0008__x000C_&amp;#x000a;&amp;#x0009;&amp;#x000d; _x0020_</xv>&lt;/a&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"  \b\f\n\t\r  "</js>)
-   <jk>class</jk> BeanWithNamesWithSpecialCharacters {
-      <ja>@BeanProperty</ja>(name=<js>"  \b\f\n\t\r  "</js>)
-      <jk>public</jk> String a = <js>"  \b\f\n\t\r  "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;_x0020__x0020__x0008__x000C__x000A__x0009__x000D__x0020__x0020_&gt;
-      &lt;_x0020__x0020__x0008__x000C__x000A__x0009__x000D__x0020__x0020_&gt;<xv>_x0020_ _x0008__x000C_&amp;#x000a;&amp;#x0009;&amp;#x000d; _x0020_</xv>&lt;/_x0020__x0020__x0008__x000C__x000A__x0009__x000D__x0020__x0020_&gt;
-   &lt;/_x0020__x0020__x0008__x000C__x000A__x0009__x000D__x0020__x0020_&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            While it's true that these characters CAN be represented in XML 1.1, it's impossible to parse XML 1.1 
-            text in Java without the XML containing an XML declaration.
-            Unfortunately, this, and the uselessness of the 
-            <a href="http://docs.oracle.com/javase/7/docs/api/javax/xml/stream/XMLInputFactory.html?is-external=true#IS_REPLACING_ENTITY_REFERENCES" title="class or interface in javax.xml.stream"><code>XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES</code></a> setting in Java
-            forced us to make some hard design decisions that may not be the most elegant.
-         </p>
-      </div>
-      
-
-      <!-- ======================================================================================================== -->
-      <a id="XmlChildName"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.2.2 - @Xml.childName()</h4>
-      <div class='topic'>     
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/Xml.html#childName--"><code>@Xml.childName()</code></a> annotation can be used to 
-            specify the name of XML child elements for bean properties of type collection or array.
-         </p>
-         
-         <h5 class='figure'>Example</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(childName=<js>"X"</js>)
-      <jk>public</jk> String[] a;
-      <ja>@Xml</ja>(childName=<js>"Y"</js>)
-      <jk>public</jk> int[] b;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: [<js>'foo'</js>,<js>'bar'</js>],
-      b: [123,456]
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-         &lt;string&gt;<xv>bar</xv>&lt;/string&gt;
-      &lt;/a&gt;
-      &lt;b&gt;
-         &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-         &lt;number&gt;<xv>456</xv>&lt;/number&gt;
-      &lt;/b&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;X&gt;<xv>foo</xv>&lt;/X&gt;
-         &lt;X&gt;<xv>bar</xv>&lt;/X&gt;
-      &lt;/a&gt;
-      &lt;b&gt;
-         &lt;Y&gt;<xv>123</xv>&lt;/Y&gt;
-         &lt;Y&gt;<xv>456</xv>&lt;/Y&gt;
-      &lt;/b&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(childName=<js>"child"</js>)
-      <jk>public</jk> int[] a;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: [123,456]
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-         &lt;string&gt;<xv>bar</xv>&lt;/string&gt;
-      &lt;/a&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;child&gt;<xv>foo</xv>&lt;/child&gt;
-         &lt;child&gt;<xv>bar</xv>&lt;/child&gt;
-      &lt;/a&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-      </div>
-         
-
-      <!-- ======================================================================================================== -->
-      <a id="XmlFormat"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.2.3 - @Xml.format()</h4>
-      <div class='topic'>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/Xml.html#format--"><code>@Xml.format()</code></a> annotation can be used to tweak 
-            the XML format of a POJO.
-            <br>The value is set to an enum value of type <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html" title="enum in org.apache.juneau.xml.annotation"><code>XmlFormat</code></a>.
-            <br>This annotation can be applied to both classes and bean properties.
-         </p>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ATTR"><code>XmlFormat.ATTR</code></a> format can be applied to bean properties to 
-            serialize them as XML attributes instead of elements.
-            <br>Note that this only supports properties of simple types (e.g. strings, numbers, booleans).
-         </p>
-         
-         <h5 class='figure'>Example</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTR</jsf>)
-      <jk>public</jk> String a;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: <js>'foo'</js>
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;<xv>foo</xv>&lt;/a&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object <xa>a</xa>=<xs>'foo'</xs>/&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ATTRS"><code>XmlFormat.ATTRS</code></a> format can be applied to bean classes to 
-            force all bean properties to be serialized as XML attributes instead of child elements.
-         </p>
-         
-         <h5 class='figure'>Example</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTRS</jsf>)
-   <jk>class</jk> MyBean {
-      <jk>public</jk> String a;
-      <jk>public int</jk> b;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: <js>'foo'</js>,
-      b: 123
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;<xv>foo</xv>&lt;/a&gt;
-      &lt;b&gt;<xv>123</xv>&lt;/b&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object <xa>a</xa>=<xs>'foo'</xs> <xa>b</xa>=<xs>'123'</xs>/&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ELEMENT"><code>XmlFormat.ELEMENT</code></a> format can be applied to bean properties 
-            to override the <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ATTRS"><code>XmlFormat.ATTRS</code></a> format applied on the bean 
-            class.
-         </p>
-         
-         <h5 class='figure'>Example</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTRS</jsf>)
-   <jk>class</jk> MyBean {
-      <jk>public</jk> String a;
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ELEMENT</jsf>)
-      <jk>public int</jk> b;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: <js>'foo'</js>,
-      b: 123
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;<xv>foo</xv>&lt;/a&gt;
-      &lt;b&gt;<xv>123</xv>&lt;/b&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object <xa>a</xa>=<xs>'foo'</xs></xs>&gt;
-      &lt;b&gt;<xv>123</xv>&lt;/b&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ATTRS"><code>XmlFormat.ATTRS</code></a> format can be applied to a single bean 
-            property of type <code>Map&lt;String,Object&gt;</code> to denote arbitrary XML attribute values on the 
-            element.
-            <br>These can be mixed with other <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ATTR"><code>XmlFormat.ATTR</code></a> annotated 
-            properties, but there must not be an overlap in bean property names and map keys. 
-         </p>
-         
-         <h5 class='figure'>Example</h5>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTRS</jsf>)
-      <jk>public</jk> Map&lt;String,Object&gt; a;
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTR</jsf>)
-      <jk>public int</jk> b;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: {
-         k1: <js>'foo'</js>, 
-         k2: 123, 
-      },
-      b: 456
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;k1&gt;<xv>foo</xv>&lt;/k1&gt;
-         &lt;k2 <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>123</xv>&lt;/k2&gt;
-      &lt;/a&gt;
-      &lt;b&gt;<xv>456</xv>&lt;/b&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object <xa>k1</xa>=<xs>'foo'</xs> <xa>k2</xa>=<xs>'123'</xs> <xa>b</xa>=<xs>'456'</xs>/&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#COLLAPSED"><code>XmlFormat.COLLAPSED</code></a> format can be applied to bean properties
-            of type array/Collection.
-            <br>This causes the child objects to be serialized directly inside the bean element.
-            <br>This format must be used in conjunction with <a href="../../../../org/apache/juneau/xml/annotation/Xml.html#childName--"><code>@Xml.childName()</code></a>
-            to differentiate which collection the values came from if you plan on parsing the output back into beans.
-            <br>Note that child names must not conflict with other property names.
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotation</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(childName=<js>"A"</js>,format=XmlFormat.<jsf>COLLAPSED</jsf>)
-      <jk>public</jk> String[] a;
-      <ja>@Xml</ja>(childName=<js>"B"</js>,format=XmlFormat.<jsf>COLLAPSED</jsf>)
-      <jk>public int</jk>[] b;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: [<js>'foo'</js>,<js>'bar'</js>],
-      b: [123,456]
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-         &lt;string&gt;<xv>bar</xv>&lt;/string&gt;
-      &lt;/a&gt;
-      &lt;b&gt;
-         &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-         &lt;number&gt;<xv>456</xv>&lt;/number&gt;
-      &lt;/b&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;A&gt;<xv>foo</xv>&lt;/A&gt;
-      &lt;A&gt;<xv>bar</xv>&lt;/A&gt;
-      &lt;B&gt;<xv>123</xv>&lt;/B&gt;
-      &lt;B&gt;<xv>456</xv>&lt;/B&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ELEMENTS"><code>XmlFormat.ELEMENTS</code></a> format can be applied to a single bean 
-            property of either a simple type or array/Collection.
-            <br>It allows free-form child elements to be formed.
-            <br>All other properties on the bean MUST be serialized as attributes.
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>With annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTR</jsf>)
-      <jk>public</jk> String a;
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ELEMENTS</jsf>)
-      <jk>public</jk> String b;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: <js>'foo'</js>,
-      b: <js>'bar'</js>
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object <xa>a</xa>=<xs>'foo'</xs>&gt;
-      &lt;string&gt;<xv>bar</xv>&lt;/string&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTR</jsf>)
-      <jk>public</jk> String a;
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ELEMENTS</jsf>)
-      <jk>public</jk> Object[] b;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: <js>'foo'</js>,
-      b: [
-         <js>'bar'</js>, 
-         <js>'baz'</js>, 
-         123, 
-         <jk>true</jk>,
-         <jk>null</jk>
-      ]
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object <xa>a</xa>=<xs>'foo'</xs>&gt;
-      &lt;string&gt;<xv>bar</xv>&lt;/string&gt;
-      &lt;string&gt;<xv>baz</xv>&lt;/string&gt;
-      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
-      &lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;
-      &lt;null/&gt;
-   &lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#MIXED"><code>XmlFormat.MIXED</code></a> format is similar to 
-            <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#ELEMENTS"><code>XmlFormat.ELEMENTS</code></a> except elements names on primitive types 
-            (string/number/boolean/null) are stripped from the output.
-            This format particularly useful when combined with bean dictionaries to produce mixed content.  
-            <br>The bean dictionary isn't used during serialization, but it is needed during parsing to resolve bean 
-            types.
-         </p>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#MIXED_PWS"><code>XmlFormat.MIXED_PWS</code></a> format identical to 
-            <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#MIXED"><code>XmlFormat.MIXED</code></a> except whitespace characters are preserved in 
-            the output.  
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotations</th>
-               <th>With annotations</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED</jsf>)
-      <ja>@BeanProperty</ja>(beanDictionary={MyBeanX.<jk>class</jk>, MyBeanY.<jk>class</jk>})   
-      <jk>public</jk> Object[] a;
-   }
-   
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBeanX {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTR</jsf>)
-      <jk>public</jk> String b;
-   }
-   
-   <ja>@Bean</ja>(typeName=<js>"Y"</js>)  
-   <jk>class</jk> MyBeanY {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>ATTR</jsf>)
-      <jk>public</jk> String c;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: [
-         <js>'foo'</js>,
-         { _type:<js>'X'</js>, b:<js>'bar'</js> }
-         <js>'baz'</js>,
-         { _type:<js>'Y'</js>, b:<js>'qux'</js> },
-         <js>'quux'</js>
-      ]
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;
-         &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
-         &lt;object&gt;
-            &lt;b&gt;<xv>bar</xv>&lt;/b&gt;
-         &lt;/object&gt;
-         &lt;string&gt;<xv>baz</xv>&lt;/string&gt;
-         &lt;object&gt;
-            &lt;b&gt;<xv>qux</xv>&lt;/b&gt;
-         &lt;/object&gt;
-         &lt;string&gt;<xv>quux</xv>&lt;/string&gt;
-      &lt;/a&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object&gt;<xv>foo</xv>&lt;X <xa>b</xa>=<xs>'bar'</xs>/&gt;<xv>baz</xv>&lt;Y <xa>c</xa>=<xs>'qux'</xs>/&gt;<xv>quux</xv>&lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            Whitespace (tabs and newlines) are not added to MIXED child nodes in readable-output mode. 
-            This helps ensures strings in the serialized output can be losslessly parsed back into their original 
-            forms when they contain whitespace characters.
-            If the <a href="http://docs.oracle.com/javase/7/docs/api/javax/xml/stream/XMLInputFactory.html?is-external=true#IS_REPLACING_ENTITY_REFERENCES" title="class or interface in javax.xml.stream"><code>XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES</code></a> setting was not useless 
-            in Java, we could support lossless readable XML for MIXED content.  
-            But as of Java 8, it still does not work. 
-         </p>
-         <p>
-            XML suffers from other deficiencies as well that affect MIXED content.  
-            For example, <xt>&lt;X&gt;&lt;/X&gt;</xt> and <xt>&lt;X/&gt;</xt> are equivalent in XML and 
-            indistinguishable by the Java XML parsers.  
-            This makes it impossible to differentiate between an empty element and an element containing an empty 
-            string.  
-            This causes empty strings to get lost in translation. 
-            To alleviate this, we use the constructs <js>"_xE000_"</js> to represent an empty string, and 
-            <js>"_x0020_"</js> to represent leading and trailing spaces.
-         </p>
-         <p>
-            The examples below show how whitespace is handled under various circumstances:
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>XML</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT</jsf>)
-      <jk>public</jk> String a = <jk>null</jk>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X/&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT</jsf>)
-      <jk>public</jk> String a = <js>""</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_xE000_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT</jsf>)
-      <jk>public</jk> String a = <js>" "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_x0020_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT</jsf>)
-      <jk>public</jk> String a = <js>"  "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_x0020__x0020_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT</jsf>)
-      <jk>public</jk> String a = <js>"  foobar  "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_x0020_ foobar _x0020_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT_PWS</jsf>)
-      <jk>public</jk> String a = <jk>null</jk>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X/&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT_PWS</jsf>)
-      <jk>public</jk> String a = <js>""</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_xE000_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT_PWS</jsf>)
-      <jk>public</jk> String a = <js>" "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv> </xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT_PWS</jsf>)
-      <jk>public</jk> String a = <js>"  "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>  </xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT_PWS</jsf>)
-      <jk>public</jk> String a = <js>"  foobar  "</js>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>  foobar  </xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED</jsf>)
-      <jk>public</jk> String[] a = <jk>null</jk>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X/&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{<js>""</js>};
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_xE000_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{<js>" "</js>};
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_x0020_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{<js>"  "</js>};
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_x0020__x0020_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{
-         <js>"  foobar  "</js>
-      };
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_x0020_ foobar _x0020_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED_PWS</jsf>)
-      <jk>public</jk> String[] a = <jk>null</jk>;
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X/&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED_PWS</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{<js>""</js>};
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>_xE000_</xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED_PWS</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{<js>" "</js>};
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv> </xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED_PWS</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{<js>"  "</js>};
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>  </xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-            <tr>
-               <td class='code'>
-   <ja>@Bean</ja>(typeName=<js>"X"</js>)  
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>MIXED_PWS</jsf>)
-      <jk>public</jk> String a[] = <jk>new</jk> String[]{
-         <js>"  foobar  "</js>
-      };
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;X&gt;<xv>  foobar  </xv>&lt;/X&gt;
-               </xt></td>
-            </tr>
-         </table>
-         
-         <p>
-            It should be noted that when using <jsf>MIXED</jsf>, you are not guaranteed to parse back the exact 
-            same content since side-by-side strings in the content will end up concatenated when parsed.
-         </p>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#TEXT"><code>XmlFormat.TEXT</code></a> format is similar to 
-            <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#MIXED"><code>XmlFormat.MIXED</code></a> except it's meant for solitary objects that 
-            get serialized as simple child text nodes.
-            <br>Any object that can be serialize to a <code>String</code> can be used.
-            <br>The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#TEXT_PWS"><code>XmlFormat.TEXT_PWS</code></a> is the same except whitespace is 
-            preserved in the output.
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>Without annotations</th>
-               <th>With annotations</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>TEXT</jsf>)
-      <jk>public</jk> String a;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: <js>'foo'</js>
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;
-      &lt;a&gt;<xv>foo</xv>&lt;/a&gt;
-   &lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object&gt;<xv>foo</xv>&lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-         <p>
-            The <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#XMLTEXT"><code>XmlFormat.XMLTEXT</code></a> format is similar to 
-            <a href="../../../../org/apache/juneau/xml/annotation/XmlFormat.html#TEXT"><code>XmlFormat.TEXT</code></a> except it's meant for strings containing XML 
-            that should be serialized as-is to the document.
-            <br>Any object that can be serialize to a <code>String</code> can be used.
-            <br>During parsing, the element content gets parsed with the rest of the document and then re-serialized to 
-            XML before being set as the property value.  
-            This process may not be perfect (e.g. double quotes may be replaced by single quotes, etc...).
-         </p>
-         <table class='styled' style='width:auto'>
-            <tr>
-               <th>Data type</th>
-               <th>JSON example</th>
-               <th>With TEXT annotation</th>
-               <th>With XMLTEXT annotation</th>
-            </tr>
-            <tr>
-               <td class='code'>
-   <jk>class</jk> MyBean {
-      <ja>@Xml</ja>(format=XmlFormat.<jsf>XMLTEXT</jsf>)
-      <jk>public</jk> String a;
-   }
-               </td>
-               <td class='code'>
-   {
-      a: <js>'Some &lt;b&gt;XML&lt;/b&gt; text'</js>
-   }
-               </td>
-               <td class='code'><xt>
-   &lt;object&gt;<xv>Some &amp;lt;b&amp;gt;XML&amp;lt;/b&amp;gt; text</xv>&lt;/object&gt;
-               </xt></td>
-               <td class='code'><xt>
-   &lt;object&gt;<xv>Some <xt>&lt;b&gt;</xt>XML<xt>&lt;/b&gt;</xt> text</xv>&lt;/object&gt;
-               </xt></td>
-            </tr>
-         </table>
-      </div>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="Namespaces"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.3 - Namespaces</h3>
-   <div class='topic'>
-      <p>
-         Let's go back to the example of our original <code>Person</code> bean class:
-      </p>
-      <p class='bcode'>
-      <jk>public class</jk> Person {
-         <jc>// Bean properties</jc>
-         <jk>public int</jk> <jf>id</jf>;
-         <jk>public</jk> String <jf>name</jf>;
-   
-         <jc>// Bean constructor (needed by parser)</jc>
-         <jk>public</jk> Person() {}
-   
-         <jc>// Normal constructor</jc>
-         <jk>public</jk> Person(<jk>int</jk> id, String name) {
-            <jk>this</jk>.<jf>id</jf> = id;
-            <jk>this</jk>.<jf>name</jf> = name;
-         }
-      }
-      </p>
-      <p>
-         However, this time we'll leave namespaces enabled on the serializer:
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer with readable output, this time with namespaces enabled.</jc>
-   <jc>// Note that this is identical to XmlSerializer.DEFAULT_NS_SQ_READABLE.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>().ns().ws().sq().build();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>);
-
-   <jc>// Serialize the bean to XML.</jc>
-   String xml = s.serialize(p);
-      </p>
-      <p>
-         Now when we run this code, we'll see namespaces added to our output:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;object</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs><xt>&gt;</xt>
-      <xt>&lt;id&gt;</xt>1<xt>&lt;/id&gt;</xt>
-      <xt>&lt;name&gt;</xt>John Smith<xt>&lt;/name&gt;</xt>
-   <xt>&lt;/object&gt;</xt>
-      </p>
-      <p>
-         This isn't too exciting yet since we haven't specified any namespaces yet.
-         <br>Therefore, everything is defined under the default <code>Juneau</code> namespace.
-      </p>
-      <p>
-         Namespaces can be defined at the following levels:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            At the package level by using the <a href="../../../../org/apache/juneau/xml/annotation/XmlSchema.html" title="annotation in org.apache.juneau.xml.annotation"><code>@XmlSchema</code></a> 
-            annotation.
-         <li>
-            At the class level by using the <a href="../../../../org/apache/juneau/xml/annotation/Xml.html" title="annotation in org.apache.juneau.xml.annotation"><code>@Xml</code></a> annotation.
-         <li>
-            At the bean property level by using the <a href="../../../../org/apache/juneau/xml/annotation/Xml.html" title="annotation in org.apache.juneau.xml.annotation"><code>@Xml</code></a> annotation.
-      </ul>
-      <p>
-         It's typically best to specify the namespaces used at the package level.
-         <br>We'll do that here for the package containing our test code.
-      </p>
-      <p class='bcode'>
-   <jc>// XML namespaces used in this package</jc>
-   <ja>@XmlSchema</ja>(
-      prefix=<js>"ab"</js>,
-      xmlNs={
-         <ja>@XmlNs</ja>(prefix=<js>"ab"</js>, namespaceURI=<js>"http://www.apache.org/addressBook/"</js>),
-         <ja>@XmlNs</ja>(prefix=<js>"per"</js>, namespaceURI=<js>"http://www.apache.org/person/"</js>),
-         <ja>@XmlNs</ja>(prefix=<js>"addr"</js>, namespaceURI=<js>"http://www.apache.org/address/"</js>),
-         <ja>@XmlNs</ja>(prefix=<js>"mail"</js>, namespaceURI=<js>"http://www.apache.org/mail/"</js>)
-      }
-   )
-   <jk>package</jk> org.apache.juneau.examples.addressbook;
-   <jk>import</jk> org.apache.juneau.xml.annotation.*;
-      </p>
-      <p>
-         We're defining four namespaces in this package and designating <js>"http://www.apache.org/addressBook/"</js> 
-         as the default namespace for all classes and properties within this package.
-      </p>
-      <p>
-         Take special note that the <ja>@XmlSchema</ja> is modeled after the equivalent JAXB annotation, but is
-         defined in the <a href="../../../../org/apache/juneau/xml/annotation/package-summary.html"><code>org.apache.juneau.xml.annotation</code></a> package.
-         <br>Other XML annotations are also modeled after JAXB. 
-         However, since many of the features of JAXB are already implemented for all serializers and parsers
-         at a higher level through various general annotations such as <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> 
-         and <a href="../../../../org/apache/juneau/annotation/BeanProperty.html" title="annotation in org.apache.juneau.annotation"><code>@BeanProperty</code></a> it was decided to maintain separate Juneau XML 
-         annotations instead of reusing JAXB annotations.
-         <br>This may change in some future implementation, but for now it was decided that having separate Juneau XML 
-         annotations was less confusing.
-      </p>
-      <p>
-         On our bean class, we'll specify to use the <js>"http://www.apache.org/person/"</js> namespace:
-      </p>
-      <p class='bcode'>
-   <ja>@Xml</ja>(prefix=<js>"per"</js>)
-   <ja>@Bean</ja>(typeName=<js>"person"</js>)
-   <jk>public class</jk> Person {
-      ...
-      </p>
-      <p>
-         Now when we serialize the bean, we get the following:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;per:person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs><xt>&gt;</xt>
-      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-   <xt>&lt;/per:person&gt;</xt>
-      </p>
-      <p>
-         We can simplify the output by setting the default namespace on the serializer so that all the elements do 
-         not need to be prefixed:
-      <p class='bcode'>
-   <jc>// Create a new serializer with readable output, this time with namespaces enabled.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>()
-      .ws()
-      .sq()
-      .ns()
-      .defaultNamespaceUri(<js>"http://www.apache.org/person/"</js>)
-      .build();
-      </p>
-      <p>
-         This produces the following equivalent where the elements don't need prefixes since they're already in the 
-         default document namespace:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/person/'</xs>
-         <xa>xmlns:juneau</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs><xt>&gt;</xt>
-      <xt>&lt;id&gt;</xt>1<xt>&lt;/id&gt;</xt>
-      <xt>&lt;name&gt;</xt>John Smith<xt>&lt;/name&gt;</xt>
-   <xt>&lt;/person&gt;</xt>      
-      </p>
-
-
-      <!-- ======================================================================================================== -->
-      <a id="AutoDetectNamespaces"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.3.1 - Auto-detection of namespaces</h4>
-      <div class='topic'>
-         <p>
-            One important property on the XML serializer class is 
-            <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#XML_autoDetectNamespaces"><code>XML_autoDetectNamespaces</code></a>.
-            <br>This property tells the serializer to make a first-pass over the data structure to look for namespaces 
-            defined on classes and bean properties.
-            <br>In high-performance environments, you may want to consider disabling auto-detection and providing your 
-            own explicit list of namespaces to the serializer to avoid this scanning step.
-         </p>
-         <p>
-            The following code will produce the same output as before, but will perform slightly better since it 
-            avoids this pre-scan step.
-         </p>
-         <p class='bcode'>
-   <jc>// Create a new serializer with readable output, this time with namespaces enabled.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>()
-      .ws()
-      .sq()
-      .autoDetectNamespaces(<jk>false</jk>)
-      .namespaces(<js>"{per:'http://www.apache.org/person/'}"</js>)
-      .build();
-         </p>
-      </div>
-      
-   </div>
-   
-   <!-- ======================================================================================================== -->
-   <a id="BeanAnnotations"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.4 - @Bean and @BeanProperty annotations</h3>
-   <div class='topic'>
-      <p>
-         The <a href="../../../../org/apache/juneau/annotation/Bean.html" title="annotation in org.apache.juneau.annotation"><code>@Bean</code></a> and <a href="../../../../org/apache/juneau/annotation/BeanProperty.html" title="annotation in org.apache.juneau.annotation"><code>@BeanProperty</code></a> 
-         annotations are used to customize the behavior of beans across the entire framework.
-         <br>In addition to using them to identify the resource URI for the bean shown above, they have various other 
-         uses:
-      </p>
-      <ul class='spaced-list'>
-         <li>
-            Hiding bean properties.
-         <li>
-            Specifying the ordering of bean properties.
-         <li>
-            Overriding the names of bean properties.
-         <li>
-            Associating transforms at both the class and property level (to convert non-serializable POJOs to 
-            serializable forms).
-      </ul>
-      <p>
-         For example, we now add a <code>birthDate</code> property, and associate a transform with it to transform
-         it to an ISO8601 date-time string in GMT time.
-         <br>By default, <code>Calendars</code> are treated as beans by the framework, which is usually not how you want 
-         them serialized.
-         <br>Using transforms, we can convert them to standardized string forms.
-      </p>
-      <p class='bcode'> 
-   <ja>@Xml</ja>(prefix=<js>"per"</js>)
-   <ja>@Bean</ja>(typeName=<js>"person"</js>)
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar birthDate;
-      ...
-      
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) 
-            <jk>throws</jk> Exception {
-         ...
-         <jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-         <jk>this</jk>.<jf>birthDate</jf>
-            .setTime(DateFormat.<jsm>getDateInstance</jsm>(DateFormat.<jsf>MEDIUM</jsf>)
-            .parse(birthDate));
-      }
-   }
-      </p>
-      <p>
-         Next, we alter our code to pass in the birthdate:
-      </p>
-      <p class='bcode'>
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-      </p>
-      <p>
-         Now when we rerun the sample code, we'll get the following:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;per:person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>uri</xa>=<xs>'http://sample/addressBook/person/1'</xs><xt>&gt;</xt>
-      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-      <xt>&lt;per:addressBookUri&gt;</xt>http://sample/addressBook<xt>&lt;/per:addressBookUri&gt;</xt>
-      <xt>&lt;per:birthDate&gt;</xt>1946-08-12T00:00:00Z<xt>&lt;/per:birthDate&gt;</xt>
-   <xt>&lt;/per:person&gt;</xt>
-      </p>
-      <p>
-         Another useful feature is the <a href="../../../../org/apache/juneau/annotation/Bean.html#propertyNamer--"><code>@Bean.propertyNamer()</code></a> annotation that 
-         allows you to plug in your own logic for determining bean property names.
-         <br>The <a href="../../../../org/apache/juneau/PropertyNamerDLC.html" title="class in org.apache.juneau"><code>PropertyNamerDLC</code></a> is an example of an alternate property namer.
-         It converts bean property names to lowercase-dashed format.
-      </p>
-      
-      <h5 class='figure'>Example</h5>
-      <p class='bcode'> 
-   <ja>@Xml</ja>(prefix=<js>"per"</js>)
-   <ja>@Bean</ja>(typeName=<js>"person"</js>,propertyNamer=PropertyNamerDLC.<jk>class</jk>)
-   <jk>public class</jk> Person {
-      ...
-      </p>
-      
-      <h5 class='figure'>Results</h5>
-      <p class='bcode'>
-   <xt>&lt;per:person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>uri</xa>=<xs>'http://sample/addressBook/person/1'</xs><xt>&gt;</xt>
-      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-      <xt>&lt;per:address-book-uri&gt;</xt>http://sample/addressBook<xt>&lt;/per:address-book-uri&gt;</xt>
-      <xt>&lt;per:birth-date&gt;</xt>1946-08-12T04:00:00Z<xt>&lt;/per:birth-date&gt;</xt>
-   <xt>&lt;/per:person&gt;</xt>
-      </p>
-   </div>
-   
-      
-   <!-- ======================================================================================================== -->
-   <a id="Collections"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.5 - Collections</h3>
-   <div class='topic'>
-      <p>
-         In our example, let's add a list-of-beans property to our sample class:
-      </p>
-      <p class='bcode'>
-   <jk>public class</jk> Person {
-      
-      <jc>// Bean properties</jc>
-      <jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-      ...
-   }
-      </p>
-      <p>
-         The <code>Address</code> class has the following properties defined:
-      </p>
-      <p class='bcode'>
-   <ja>@Xml</ja>(prefix=<js>"addr"</js>)
-   <ja>@Bean</ja>(typeName=<js>"address"</js>)
-   <jk>public class</jk> Address {
-
-      <jc>// Bean properties</jc>
-      <ja>@Xml</ja>(format=<jsf>ATTR</jsf>) <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>personUri</jf>;
-      <jk>public int</jk> <jf>id</jf>;
-      <ja>@Xml</ja>(prefix=<js>"mail"</js>) <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      <ja>@Xml</ja>(prefix=<js>"mail"</js>) <jk>public int</jk> <jf>zip</jf>;
-      <jk>public boolean</jk> <jf>isCurrent</jf>;
-   }
-      </p>
-      <p>
-         Next, add some quick-and-dirty code to add an address to our person bean:
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer with readable output.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>().ws().sq().build();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-      </p>
-      <p>
-         Now when we run the sample code, we get the following:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;per:person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>xmlns:addr</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>xmlns:mail</xa>=<xs>'http://www.apache.org/mail/'</xs> 
-         <xa>uri</xa>=<xs>'http://sample/addressBook/person/1'</xs><xt>&gt;</xt>
-      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-      <xt>&lt;per:addressBookUri&gt;</xt>http://sample/addressBook<xt>&lt;/per:addressBookUri&gt;</xt>
-      <xt>&lt;per:birthDate&gt;</xt>1946-08-12T04:00:00Z<xt>&lt;/per:birthDate&gt;</xt>
-      <xt>&lt;per:addresses&gt;</xt>
-         <xt>&lt;addr:address</xt> <xa>uri</xa>=<xs>'http://sample/addressBook/address/1'</xs><xt>&gt;</xt>
-            <xt>&lt;addr:personUri&gt;</xt>http://sample/addressBook/person/1<xt>&lt;/addr:personUri&gt;</xt>
-            <xt>&lt;addr:id&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-            <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-            <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-            <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-            <xt>&lt;mail:zip&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-            <xt>&lt;addr:isCurrent&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-         <xt>&lt;/addr:address&gt;</xt>
-      <xt>&lt;/per:addresses&gt;</xt>
-   <xt>&lt;/per:person&gt;</xt>
-      </p>
-   </div>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="XmlSchemaSupport"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.6 - XML-Schema support</h3>
-   <div class='topic'>
-      <p>
-         Juneau provides the <a href="../../../../org/apache/juneau/xml/XmlSchemaSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSchemaSerializer</code></a> class for generating XML-Schema 
-         documents that describe the output generated by the <a href="../../../../org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSerializer</code></a> class.
-         <br>This class shares the same properties as <code>XmlSerializer</code>.
-         <br>Since the XML output differs based on settings on the XML serializer class, the XML-Schema serializer
-         class must have the same property values as the XML serializer class it's describes.
-         <br>To help facilitate creating an XML Schema serializer with the same properties as the corresponding 
-         XML serializer, the <a href="../../../../org/apache/juneau/xml/XmlSerializer.html#getSchemaSerializer--"><code>XmlSerializer.getSchemaSerializer()</code></a> method 
-         has been added.
-      </p>
-      <p>
-         XML-Schema requires a separate file for each namespace.
-         <br>Unfortunately, does not mesh well with the Juneau serializer architecture which serializes to single writers.
-         <br>To get around this limitation, the schema serializer will produce a single output, but with multiple
-         schema documents separated by the null character (<js>'\u0000'</js>) to make it simple to split apart.
-      </p>
-      <p>
-         Lets start with an example where everything is in the same namespace.
-         <br>We'll use the classes from before, but remove the references to namespaces.
-         <br>Since we have not defined a default namespace, everything is defined under the default Juneau namespace.
-      </p>
-      <p class='bcode'>
-   <ja>@Bean</ja>(typeName=<js>"person"</js>)
-   <jk>public class</jk> Person {
-      <jc>// Bean properties</jc>
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>name</jf>;
-      <ja>@Xml</ja>(format=<jsf>ATTR</jsf>) <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>addressBookUri</jf>;
-      <ja>@BeanProperty</ja>(swap=CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
-      <jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = <jk>new</jk> LinkedList&lt;Address&gt;();
-
-      <jc>// Bean constructor (needed by parser)</jc>
-      <jk>public</jk> Person() {}
-
-      <jc>// Normal constructor</jc>
-      <jk>public</jk> Person(<jk>int</jk> id, String name, String uri, String addressBookUri, String birthDate) 
-            <jk>throws</jk> Exception {
-         <jk>this</jk>.<jf>id</jf> = id;
-         <jk>this</jk>.<jf>name</jf> = name;
-         <jk>this</jk>.<jf>uri</jf> = <jk>new</jk> URI(uri);
-         <jk>this</jk>.<jf>addressBookUri</jf> = <jk>new</jk> URI(addressBookUri);
-         <jk>this</jk>.<jf>birthDate</jf> = <jk>new</jk> GregorianCalendar();
-         <jk>this</jk>.<jf>birthDate</jf>.setTime(DateFormat.getDateInstance(DateFormat.<jsf>MEDIUM</jsf>).parse(birthDate));
-      }
-   }
-
-   <ja>@Bean</ja>(typeName=<js>"address"</js>)
-   <jk>public class</jk> Address {
-      <jc>// Bean properties</jc>
-      <ja>@Xml</ja>(format=<jsf>ATTR</jsf>) <jk>public</jk> URI <jf>uri</jf>;
-      <jk>public</jk> URI <jf>personUri</jf>;
-      <jk>public int</jk> <jf>id</jf>;
-      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      <jk>public int</jk> <jf>zip</jf>;
-      <jk>public boolean</jk> <jf>isCurrent</jf>;
-   }
-      </p>
-      <p>
-         The code for creating our POJO model and generating XML Schema is shown below:
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer with readable output.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>()
-      .ws()
-      .ns()
-      .sq()
-      .addNamespaceUrisToRoot(<jk>true</jk>)
-      .build();
-
-   <jc>// Create the equivalent schema serializer.</jc>
-   XmlSchemaSerializer ss = s.getSchemaSerializer();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);
-
-   <jc>// Serialize the bean to XML.</jc>
-   String xml = s.serialize(p);
-   
-   <jc>// Get the XML Schema corresponding to the XML generated above.</jc>
-   String xmlSchema = ss.serialize(p);
-      </p>
-      
-      <h5 class='figure'>XML results</h5>
-      <p class='bcode'>
-   <xt>&lt;person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>uri</xa>=<xs>'http://sample/addressBook/person/1'</xs><xt>&gt;</xt>
-      <xt>&lt;id&gt;</xt>1<xt>&lt;/id&gt;</xt>
-      <xt>&lt;name&gt;</xt>John Smith<xt>&lt;/name&gt;</xt>
-      <xt>&lt;addressBookUri&gt;</xt>http://sample/addressBook<xt>&lt;/addressBookUri&gt;</xt>
-      <xt>&lt;birthDate&gt;</xt>1946-08-12T00:00:00Z<xt>&lt;/birthDate&gt;</xt>
-      <xt>&lt;addresses&gt;</xt>
-         <xt>&lt;address</xt> <xa>uri</xa>=<xs>'http://sample/addressBook/address/1'</xs><xt>&gt;</xt>
-            <xt>&lt;personUri&gt;</xt>http://sample/addressBook/person/1<xt>&lt;/personUri&gt;</xt>
-            <xt>&lt;id&gt;</xt>1<xt>&lt;/id&gt;</xt>
-            <xt>&lt;street&gt;</xt>100 Main Street<xt>&lt;/street&gt;</xt>
-            <xt>&lt;city&gt;</xt>Anywhereville<xt>&lt;/city&gt;</xt>
-            <xt>&lt;state&gt;</xt>NY<xt>&lt;/state&gt;</xt>
-            <xt>&lt;zip&gt;</xt>12345<xt>&lt;/zip&gt;</xt>
-            <xt>&lt;isCurrent&gt;</xt>true<xt>&lt;/isCurrent&gt;</xt>
-         <xt>&lt;/address&gt;</xt>
-      <xt>&lt;/addresses&gt;</xt>
-   <xt>&lt;/person&gt;</xt>            
-      </p>
-      
-      <h5 class='figure'>XML-Schema results</h5>
-      <p class='bcode'>
-   <xt>&lt;schema</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.w3.org/2001/XMLSchema'</xs> 
-         <xa>targetNamespace</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>elementFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>xmlns:juneau</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs><xt>&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'person'</xs> <xa>_type</xa>=<xs>'juneau:org.apache.juneau.examples.addressbook.Person'</xs><xt>/&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'org.apache.juneau.examples.addressbook.Person'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'id'</xs> <xa>_type</xa>=<xs>'integer'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'name'</xs> <xa>_type</xa>=<xs>'string'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'addressBookUri'</xs> <xa>_type</xa>=<xs>'string'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'birthDate'</xs> <xa>_type</xa>=<xs>'juneau:java.util.Calendar'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'addresses'</xs> <xa>_type</xa>=<xs>'juneau:java.util.LinkedList_x003C_org.apache.juneau.examples.addressbook.Address_x003E_'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-         <xt>&lt;attribute</xt> <xa>name</xa>=<xs>'uri'</xs> <xa>_type</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'java.util.Calendar'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;any</xt> <xa>processContents</xa>=<xs>'skip'</xs> <xa>maxOccurs</xa>=<xs>'unbounded'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'java.util.LinkedList_x003C_org.apache.juneau.examples.addressbook.Address_x003E_'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;choice</xt> <xa>minOccurs</xa>=<xs>'0'</xs> <xa>maxOccurs</xa>=<xs>'unbounded'</xs><xt>&gt;</xt>
-               <xt>&lt;element</xt> <xa>name</xa>=<xs>'address'</xs> <xa>_type</xa>=<xs>'juneau:org.apache.juneau.examples.addressbook.Address'</xs><xt>/&gt;</xt>
-               <xt>&lt;element</xt> <xa>name</xa>=<xs>'null'</xs> <xa>_type</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-            <xt>&lt;/choice&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'org.apache.juneau.examples.addressbook.Address'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'personUri'</xs> <xa>_type</xa>=<xs>'string'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'id'</xs> <xa>_type</xa>=<xs>'integer'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'street'</xs> <xa>_type</xa>=<xs>'string'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'city'</xs> <xa>_type</xa>=<xs>'string'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'state'</xs> <xa>_type</xa>=<xs>'string'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'zip'</xs> <xa>_type</xa>=<xs>'integer'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-            <xt>&lt;element</xt> <xa>name</xa>=<xs>'isCurrent'</xs> <xa>_type</xa>=<xs>'boolean'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-         <xt>&lt;attribute</xt> <xa>name</xa>=<xs>'uri'</xs> <xa>_type</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-   <xt>&lt;/schema&gt;</xt>
-      </p>
-      <p>
-         Now if we add in some namespaces, we'll see how multiple namespaces are handled.
-      </p>
-      <p class='bcode'>
-   <ja>@Xml</ja></ja>(prefix=<js>"per"</js>)
-   <ja>@Bean</ja></ja>(typeName=<js>"person"</js>)
-   <jk>public class</jk> Person {
-   ...
-   }
-
-   <ja>@Xml</ja>(prefix=<js>"addr"</js>)
-   <ja>@Bean</ja>(typeName=<js>"address"</js>)
-   <jk>public class</jk> Address {
-      ...
-      <ja>@Xml</ja>(prefix=<js>"mail"</js>) <jk>public</jk> String <jf>street</jf>, <jf>city</jf>, <jf>state</jf>;
-      <ja>@Xml</ja>(prefix=<js>"mail"</js>) <jk>public int</jk> <jf>zip</jf>;
-      ...
-   }
-      </p>
-      
-      <h5 class='figure'>XML results</h5>
-      <p class='bcode'>
-   <xt>&lt;per:person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>xmlns:addr</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>xmlns:mail</xa>=<xs>'http://www.apache.org/mail/'</xs> 
-         <xa>uri</xa>=<xs>'http://sample/addressBook/person/1'</xs><xt>&gt;</xt>
-      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-      <xt>&lt;per:addressBookUri&gt;</xt>http://sample/addressBook<xt>&lt;/per:addressBookUri&gt;</xt>
-      <xt>&lt;per:birthDate&gt;</xt>1946-08-12T00:00:00Z<xt>&lt;/per:birthDate&gt;</xt>
-      <xt>&lt;per:addresses&gt;</xt>
-         <xt>&lt;addr:address</xt> <xa>uri</xa>=<xs>'http://sample/addressBook/address/1'</xs><xt>&gt;</xt>
-            <xt>&lt;addr:personUri&gt;</xt>http://sample/addressBook/person/1<xt>&lt;/addr:personUri&gt;</xt>
-            <xt>&lt;addr:id&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-            <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-            <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-            <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-            <xt>&lt;mail:zip&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-            <xt>&lt;addr:isCurrent&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-         <xt>&lt;/addr:address&gt;</xt>
-      <xt>&lt;/per:addresses&gt;</xt>
-   <xt>&lt;/per:person&gt;</xt>
-      </p>
-      <p>
-         The schema consists of 4 documents separated by a <js>'\u0000'</js> character.
-      </p>
-      
-      <h5 class='figure'>XML-Schema results</h5>
-      <p class='bcode'>
-   <xt>&lt;schema</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.w3.org/2001/XMLSchema'</xs> 
-         <xa>targetNamespace</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>elementFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>xmlns:juneau</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>xmlns:addr</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>xmlns:mail</xa>=<xs>'http://www.apache.org/mail/'</xs><xt>&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/person/'</xs> <xa>schemaLocation</xa>=<xs>'per.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/address/'</xs> <xa>schemaLocation</xa>=<xs>'addr.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/mail/'</xs> <xa>schemaLocation</xa>=<xs>'mail.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'int'</xs><xt>&gt;</xt>
-         <xt>&lt;simpleContent&gt;</xt>
-            <xt>&lt;extension</xt> <xa>base</xa>=<xs>'integer'</xs><xt>/&gt;</xt>
-         <xt>&lt;/simpleContent&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'java.lang.String'</xs><xt>&gt;</xt>
-         <xt>&lt;simpleContent&gt;</xt>
-            <xt>&lt;extension</xt> <xa>base</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-         <xt>&lt;/simpleContent&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'java.net.URI'</xs><xt>&gt;</xt>
-         <xt>&lt;simpleContent&gt;</xt>
-            <xt>&lt;extension</xt> <xa>base</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-         <xt>&lt;/simpleContent&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'java.util.Calendar'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;any</xt> <xa>processContents</xa>=<xs>'skip'</xs> <xa>maxOccurs</xa>=<xs>'unbounded'</xs> <xa>minOccurs</xa>=<xs>'0'</xs><xt>/&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'java.util.LinkedList_x003C_org.apache.juneau.examples.addressbook.Address_x003E_'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;choice</xt> <xa>minOccurs</xa>=<xs>'0'</xs> <xa>maxOccurs</xa>=<xs>'unbounded'</xs><xt>&gt;</xt>
-               <xt>&lt;element</xt> <xa>name</xa>=<xs>'address'</xs> <xa>_type</xa>=<xs>'addr:org.apache.juneau.examples.addressbook.Address'</xs><xt>/&gt;</xt>
-               <xt>&lt;element</xt> <xa>name</xa>=<xs>'null'</xs> <xa>_type</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-            <xt>&lt;/choice&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'boolean'</xs><xt>&gt;</xt>
-         <xt>&lt;simpleContent&gt;</xt>
-            <xt>&lt;extension</xt> <xa>base</xa>=<xs>'boolean'</xs><xt>/&gt;</xt>
-         <xt>&lt;/simpleContent&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-   <xt>&lt;/schema&gt;</xt>
-   [\u0000]
-   <xt>&lt;schema</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.w3.org/2001/XMLSchema'</xs> 
-         <xa>targetNamespace</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>elementFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>attributeFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>xmlns:juneau</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>xmlns:addr</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>xmlns:mail</xa>=<xs>'http://www.apache.org/mail/'</xs><xt>&gt;</xt>
-      <xt>&lt;impor</xt>t <xa>namespace</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> <xa>schemaLocation</xa>=<xs>'juneau.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/address/'</xs> <xa>schemaLocation</xa>=<xs>'addr.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/mail/'</xs> <xa>schemaLocation</xa>=<xs>'mail.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'person'</xs> <xa>_type</xa>=<xs>'per:org.apache.juneau.examples.addressbook.Person'</xs><xt>/&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'org.apache.juneau.examples.addressbook.Person'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;any</xt> <xa>minOccurs</xa>=<xs>'0'</xs> <xa>maxOccurs</xa>=<xs>'unbounded'</xs><xt>/&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-         <xt>&lt;attribute</xt> <xa>name</xa>=<xs>'uri'</xs> <xa>_type</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'id'</xs> <xa>_type</xa>=<xs>'juneau:int'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'name'</xs> <xa>_type</xa>=<xs>'juneau:java.lang.String'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'addressBookUri'</xs> <xa>_type</xa>=<xs>'juneau:java.net.URI'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'birthDate'</xs> <xa>_type</xa>=<xs>'juneau:java.util.Calendar'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'addresses'</xs> <xa>_type</xa>=<xs>'juneau:java.util.LinkedList_x003C_org.apache.juneau.examples.addressbook.Address_x003E_'</xs><xt>/&gt;</xt>
-   <xt>&lt;/schema&gt;</xt>
-   [\u0000]
-   <xt>&lt;schema</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.w3.org/2001/XMLSchema'</xs> 
-         <xa>targetNamespace</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>elementFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>attributeFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>xmlns:juneau</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>xmlns:addr</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>xmlns:mail</xa>=<xs>'http://www.apache.org/mail/'</xs><xt>&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> <xa>schemaLocation</xa>=<xs>'juneau.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/person/'</xs> <xa>schemaLocation</xa>=<xs>'per.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/mail/'</xs> <xa>schemaLocation</xa>=<xs>'mail.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;complexType</xt> <xa>name</xa>=<xs>'org.apache.juneau.examples.addressbook.Address'</xs><xt>&gt;</xt>
-         <xt>&lt;sequence&gt;</xt>
-            <xt>&lt;any</xt> <xa>minOccurs</xa>=<xs>'0'</xs> <xa>maxOccurs</xa>=<xs>'unbounded'</xs><xt>/&gt;</xt>
-         <xt>&lt;/sequence&gt;</xt>
-         <xt>&lt;attribute</xt> <xa>name</xa>=<xs>'uri'</xs> <xa>_type</xa>=<xs>'string'</xs><xt>/&gt;</xt>
-      <xt>&lt;/complexType&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'personUri'</xs> <xa>_type</xa>=<xs>'juneau:java.net.URI'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'id'</xs> <xa>_type</xa>=<xs>'juneau:int'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'isCurrent'</xs> <xa>_type</xa>=<xs>'juneau:boolean'</xs><xt>/&gt;</xt>
-   <xt>&lt;/schema&gt;</xt>
-   [\u0000]
-   <xt>&lt;schema</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.w3.org/2001/XMLSchema'</xs> 
-         <xa>targetNamespace</xa>=<xs>'http://www.apache.org/mail/'</xs> 
-         <xa>elementFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>attributeFormDefault</xa>=<xs>'qualified'</xs> 
-         <xa>xmlns:juneau</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>xmlns:addr</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>xmlns:mail</xa>=<xs>'http://www.apache.org/mail/'</xs><xt>&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> <xa>schemaLocation</xa>=<xs>'juneau.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/person/'</xs> <xa>schemaLocation</xa>=<xs>'per.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;import</xt> <xa>namespace</xa>=<xs>'http://www.apache.org/address/'</xs> <xa>schemaLocation</xa>=<xs>'addr.xsd'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'street'</xs> <xa>_type</xa>=<xs>'juneau:java.lang.String'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'city'</xs> <xa>_type</xa>=<xs>'juneau:java.lang.String'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'state'</xs> <xa>_type</xa>=<xs>'juneau:java.lang.String'</xs><xt>/&gt;</xt>
-      <xt>&lt;element</xt> <xa>name</xa>=<xs>'zip'</xs> <xa>_type</xa>=<xs>'juneau:int'</xs><xt>/&gt;</xt>
-   <xt>&lt;/schema&gt;</xt>   
-      </p>
-      <p>
-         For convenience, the <a href="../../../../org/apache/juneau/xml/XmlSchemaSerializer.html" title="class in org.apache.juneau.xml"><code>#getValidator(SerializerSession,Object)</code></a> method is provided to create a 
-         <a href="http://docs.oracle.com/javase/7/docs/api/javax/xml/validation/Validator.html?is-external=true" title="class or interface in javax.xml.validation"><code>Validator</code></a> using the input from the serialize method.
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="Recursion"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.7 - Non-tree models and recursion detection</h3>
-   <div class='topic'>
-      <p>
-         The XML serializer is designed to be used against POJO tree structures. 
-         <br>It expects that there not be loops in the POJO model (e.g. children with references to parents, etc...).
-         <br>If you try to serialize models with loops, you will usually cause a <code>StackOverflowError</code> to 
-         be thrown (if <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxDepth"><code>Serializer.SERIALIZER_maxDepth</code></a> is not reached 
-         first).
-      </p>
-      <p>
-         If you still want to use the XML serializer on such models, Juneau provides the 
-         <a href="../../../../org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>Serializer.SERIALIZER_detectRecursions</code></a> setting.
-         <br>It tells the serializer to look for instances of an object in the current branch of the tree and skip 
-         serialization when a duplicate is encountered.
-      </p>
-      <p>
-         For example, let's make a POJO model out of the following classes:
-      </p>
-      <p class='bcode'>
-   <ja>@Bean</ja>(typeName=<js>"a"</js>)
-   <jk>public class</jk> A {
-      <jk>public</jk> B b;
-   }
-   
-   <jk>public class</jk> B {
-      <jk>public</jk> C c;
-   }
-   
-   <jk>public class</jk> C {
-      <jk>public</jk> A a;
-   }
-      </p>
-      <p>
-         Now we create a model with a loop and serialize the results.
-      </p>
-      <p class='bcode'>
-   <jc>// Create a new serializer with readable output.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>()
-      .ws()
-      .sq()
-      .ns()
-      .detectRecursions(<jk>true</jk>)
-      .build();
-
-   <jc>// Create a recursive loop.</jc>
-   A a = <jk>new</jk> A();
-   a.<jf>b</jf> = <jk>new</jk> B();
-   a.<jf>b</jf>.<jf>c</jf> = <jk>new</jk> C();
-   a.<jf>b</jf>.<jf>c</jf>.<jf>a</jf> = a;
-   
-   <jc>// Serialize to XML.</jc>
-   String xml = s.serialize(a);
-      </p>
-      <p>
-         What we end up with is the following, which does not serialize the contents of the <code>c</code> field:
-      </p>
-      <p class='bcode'>
-   <xt>&lt;a&gt;</xt>
-      <xt>&lt;b&gt;</xt>
-         <xt>&lt;c/&gt;</xt>
-      <xt>&lt;/b&gt;</xt>
-   <xt>&lt;/a&gt;</xt>     
-      </p>
-      <p>
-         Without recursion detection enabled, this would cause a stack-overflow error.
-      </p>
-      <p>
-         Recursion detection introduces a performance penalty of around 20%.
-         <br>For this reason the setting is disabled by default.
-      </p>
-   </div>
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.8 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this serializer:
-      </p>
-      <ul>
-         <li><a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li><a href="../../../../org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSerializer</code></a> - Serializer context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="SerializerOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.9 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau serializers, the XML serializer is thread safe and maintains an internal cache of 
-            bean classes encountered.
-            <br>For performance reasons, it's recommended that serializers be reused whenever possible instead of 
-            always creating new instances.
-      </ul>
-   </div>
-</div>
-
-
-<!-- ======================================================================================================== -->
-<a id="XmlParser"></a>
-<h2 class='topic' onclick='toggle(this)'>3 - XmlParser class</h2>
-<div class='topic'>
-   <p>
-      The <a href="../../../../org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml"><code>XmlParser</code></a> class is the class used to parse Juneau-generated XML back into 
-      POJOs.
-   </p>  
-   <p>
-      A static reusable instance of <code>XmlParser</code> is also provided for convenience:
-   </p>
-   <ul>
-      <li><a href="../../../../org/apache/juneau/xml/XmlParser.html#DEFAULT"><code>XmlParser.DEFAULT</code></a>
-   </ul>
-   <p>
-      Let's build upon the previous example and parse the generated XML back into the original bean.
-      <br>We start with the XML that was generated.
-   </p>
-   <p class='bcode'>
-   <jc>// Create a new serializer with readable output.</jc>
-   XmlSerializer s = XmlSerializer.<jsm>create</jsm>().ws().sq().ns().build();
-
-   <jc>// Create our bean.</jc>
-   Person p = <jk>new</jk> Person(1, <js>"John Smith"</js>, <js>"http://sample/addressBook/person/1"</js>, 
-      <js>"http://sample/addressBook"</js>, <js>"Aug 12, 1946"</js>);
-   Address a = <jk>new</jk> Address();
-   a.<jf>uri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/address/1"</js>);
-   a.<jf>personUri</jf> = <jk>new</jk> URI(<js>"http://sample/addressBook/person/1"</js>);
-   a.<jf>id</jf> = 1;
-   a.<jf>street</jf> = <js>"100 Main Street"</js>;
-   a.<jf>city</jf> = <js>"Anywhereville"</js>;
-   a.<jf>state</jf> = <js>"NY"</js>;
-   a.<jf>zip</jf> = 12345;
-   a.<jf>isCurrent</jf> = <jk>true</jk>;
-   p.<jf>addresses</jf>.add(a);  
-
-   <jc>// Serialize the bean to XML.</jc>
-   String xml = s.serialize(p);
-   </p>
-   <p>
-      This code produced the following:
-   </p>
-   <p class='bcode'>
-   <xt>&lt;per:person</xt> 
-         <xa>xmlns</xa>=<xs>'http://www.apache.org/2013/Juneau'</xs> 
-         <xa>xmlns:per</xa>=<xs>'http://www.apache.org/person/'</xs> 
-         <xa>xmlns:addr</xa>=<xs>'http://www.apache.org/address/'</xs> 
-         <xa>xmlns:mail</xa>=<xs>'http://www.apache.org/mail/'</xs> 
-         <xa>uri</xa>=<xs>'http://sample/addressBook/person/1'</xs><xt>&gt;</xt>
-      <xt>&lt;per:id&gt;</xt>1<xt>&lt;/per:id&gt;</xt>
-      <xt>&lt;per:name&gt;</xt>John Smith<xt>&lt;/per:name&gt;</xt>
-      <xt>&lt;per:addressBookUri&gt;</xt>http://sample/addressBook<xt>&lt;/per:addressBookUri&gt;</xt>
-      <xt>&lt;per:birthDate&gt;</xt>1946-08-12T04:00:00Z<xt>&lt;/per:birthDate&gt;</xt>
-      <xt>&lt;per:addresses&gt;</xt>
-         <xt>&lt;addr:address</xt> <xa>uri</xa>=<xs>'http://sample/addressBook/address/1'</xs><xt>&gt;</xt>
-            <xt>&lt;addr:personUri&gt;</xt>http://sample/addressBook/person/1<xt>&lt;/addr:personUri&gt;</xt>
-            <xt>&lt;addr:id&gt;</xt>1<xt>&lt;/addr:id&gt;</xt>
-            <xt>&lt;mail:street&gt;</xt>100 Main Street<xt>&lt;/mail:street&gt;</xt>
-            <xt>&lt;mail:city&gt;</xt>Anywhereville<xt>&lt;/mail:city&gt;</xt>
-            <xt>&lt;mail:state&gt;</xt>NY<xt>&lt;/mail:state&gt;</xt>
-            <xt>&lt;mail:zip&gt;</xt>12345<xt>&lt;/mail:zip&gt;</xt>
-            <xt>&lt;addr:isCurrent&gt;</xt>true<xt>&lt;/addr:isCurrent&gt;</xt>
-         <xt>&lt;/addr:address&gt;</xt>
-      <xt>&lt;/per:addresses&gt;</xt>
-   <xt>&lt;/per:person&gt;</xt>
-   </p>
-   <p>
-      The code to convert this back into a bean is:
-   </p>
-   <p class='bcode'>
-   <jc>// Parse it back into a bean using the reusable XML parser.</jc>
-   Person p = XmlParser.<jsf>DEFAULT</jsf>.parse(xml, Person.<jk>class</jk>);
-
-   <jc>// Render it as JSON.</jc>
-   String json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(p);
-   </p>
-   <p>
-      We print it out to JSON to show that all the data has been preserved:
-   </p>
-   <p class='bcode'>
-   {
-      id: 1, 
-      name: <js>'John Smith'</js>, 
-      uri: <js>'http://sample/addressBook/person/1'</js>, 
-      addressBookUri: <js>'http://sample/addressBook'</js>, 
-      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
-      addresses: [
-         {
-            uri: <js>'http://sample/addressBook/address/1'</js>, 
-            personUri: <js>'http://sample/addressBook/person/1'</js>, 
-            id: 1, 
-            street: <js>'100 Main Street'</js>, 
-            city: <js>'Anywhereville'</js>, 
-            state: <js>'NY'</js>, 
-            zip: 12345, 
-            isCurrent: <jk>true</jk>
-         }
-      ]
-   }  
-   </p>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="GenericParsing"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.1 - Parsing into generic POJO models</h3>
-   <div class='topic'>
-      <p>
-         The XML parser is not limited to parsing back into the original bean classes.
-         <br>If the bean classes are not available on the parsing side, the parser can also be used to parse into a 
-         generic model consisting of <code>Maps</code>, <code>Collections</code>, and primitive objects.
-      </p>
-      <p>
-         You can parse into any <code>Map</code> type (e.g. <code>HashMap</code>, <code>TreeMap</code>), but
-         using <a href="../../../../org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a> is recommended since it has many convenience methods
-         for converting values to various types.
-         <br>The same is true when parsing collections.  You can use any Collection (e.g. <code>HashSet</code>, 
-         <code>LinkedList</code>) or array (e.g. <code>Object[]</code>, <code>String[]</code>, 
-         <code>String[][]</code>), but using <a href="../../../../org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a> is recommended.
-      </p>
-      <p>
-         When the map or list type is not specified, or is the abstract <code>Map</code>, <code>Collection</code>, 
-         or <code>List</code> types, the parser will use <code>ObjectMap</code> and <code>ObjectList</code> by 
-         default.
-      </p>
-   </div>
-   
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserConfigurableProperties"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.2 - Configurable properties</h3>
-   <div class='topic'>
-      <p>
-         See the following classes for all configurable properties that can be used on this parser:
-      </p>
-      <ul>
-         <li><a href="../../../../org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> - Bean context properties.
-         <li><a href="../../../../org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml"><code>XmlParser</code></a> - Parser context properties.
-      </ul>
-   </div>      
-
-
-   <!-- ======================================================================================================== -->
-   <a id="ParserOtherNotes"></a>
-   <h3 class='topic' onclick='toggle(this)'>3.3 - Other notes</h3>
-   <div class='topic'>
-      <ul class='spaced-list'>
-         <li>
-            Like all other Juneau parsers, the XML parser is thread safe and maintains an internal cache of bean 
-            classes encountered.
-            <br>For performance reasons, it's recommended that parser be reused whenever possible instead of always 
-            creating new instances.
-      </ul>
-   </div>
-   
-</div>
-
-<p align="center"><i><b>*** fín ***</b></i></p></div>
+<div class="block">XML Marshalling Support</div>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->
 <div class="bottomNav"><a name="navbar.bottom">
diff --git a/content/site/apidocs/overview-summary.html b/content/site/apidocs/overview-summary.html
index 71f6352..536f5af 100644
--- a/content/site/apidocs/overview-summary.html
+++ b/content/site/apidocs/overview-summary.html
@@ -477,6 +477,11 @@
       <li><p><a class='doclink' href='#juneau-marshall.Groups'>SerializerGroups and ParserGroups</a></p>
       <li><p><a class='doclink' href='#juneau-marshall.ObjectMap'>ObjectMap and ObjectList</a></p>
       <li><p><a class='doclink' href='#juneau-marshall.ConfigurableProperties'>Configurable Properties</a></p>
+      <ol>
+         <li><p><a class='doclink' href='#juneau-marshall.ConfigurableProperties.Common'>Common Properties</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.ConfigurableProperties.CommonSerializer'>Common Serializer Properties</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.ConfigurableProperties.CommonParser'>Common Parser Properties</a></p>
+      </ol>
       <li><p><a class='doclink' href='#juneau-marshall.ContextsBuildersSessionsPropertyStores'>Contexts, Builders, Sessions, and PropertyStores</a></p>
       <li><p><a class='doclink' href='#juneau-marshall.Transforms'>Transforms</a></p>
       <ol>
@@ -496,7 +501,7 @@
          <li><p><a class='doclink' href='#juneau-marshall.PojoBuilders'>POJO Builders</a></p>
          <li><p><a class='doclink' href='#juneau-marshall.URIs'>URIs</a></p>
          <li><p><a class='doclink' href='#juneau-marshall.BeanFilters'>BeanFilters</a></p>
-         <li><p><a class='doclink' href='#juneau-marshall.InterfaceFilters'>Interface filters</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.InterfaceFilters'>Interface Filters</a></p>
          <li><p><a class='doclink' href='#juneau-marshall.StopClasses'>Stop Classes</a></p>
          <li><p><a class='doclink' href='#juneau-marshall.BypassSerialization'>Bypass Serialization using Readers and InputStreams</a></p>
       </ol>
@@ -505,20 +510,77 @@
          <li><p><a class='doclink' href='#juneau-marshall.BeanSubTypes'>Bean Subtypes</a></p>
       </ol>
       <li><p><a class='doclink' href='#juneau-marshall.VirtualBeans'>Virtual Beans</a></p>
+      <li><p><a class='doclink' href='#juneau-marshall.Recursion'>Non-Tree Models and Recursion Detection</a></p>
+      <li><p><a class='doclink' href='#juneau-marshall.ParsingIntoGenericModels'>Parsing into Generic Models</a></p>
       <li><p><a class='doclink' href='#juneau-marshall.ReadingContinuousStreams'>Reading Continuous Streams</a></p>
       <li><p><a class='doclink' href='#juneau-marshall.JacksonComparison'>Comparison with Jackson</a></p>
       <li><p><a class='doclink' href='#juneau-marshall.PojoCategories'>POJO Categories</a></p>
-      <li><p><a class='doclink' href='#juneau-marshall.BestPractices'>Best Practices</a></p>
-      <li><p><a class='doclink' href='#juneau-marshall.AdditionalInfo'>Additional Information</a></p>
+      <li><p><a class='doclink' href='#juneau-marshall.JsonDetails'>JSON Details</a></p>
+      <ol>
+         <li><p><a class='doclink' href='#juneau-marshall.JsonDetails.JsonMethodology'>JSON Methodology</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.JsonDetails.JsonSerializers'>JSON Serializers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.JsonDetails.JsonParsers'>JSON Parsers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.JsonDetails.JsonAnnotation'>@Json Annotation</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.JsonDetails.JsonSchema'>JSON-Schema Support</a></p>
+      </ol>
+      <li><p><a class='doclink' href='#juneau-marshall.XmlDetails'>XML Details</a></p>
+      <ol>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.XmlMethodology'>XML Methodology</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.XmlSerializers'>XML Serializers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.XmlParsers'>XML Parsers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.BeanTypeNameAnnotation'>@Bean(typeName) Annotation</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.XmlChildNameAnnotation'>@Xml(childName) Annotation</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.XmlFormatAnnotation'>@Xml(format) Annotation</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.Namespaces'>Namespaces</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.UriProperties'>URI Properties</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.XmlDetails.XmlSchema'>XML-Schema Support</a></p>
+      </ol>
+      <li><p><a class='doclink' href='#juneau-marshall.HtmlDetails'>HTML Details</a></p>
+      <ol>
+         <li><p><a class='doclink' href='#juneau-marshall.HtmlDetails.HtmlMethodology'>HTML Methodology</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.HtmlDetails.HtmlSerializers'>HTML Serializers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.HtmlDetails.HtmlParsers'>HTML Parsers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.HtmlDetails.HtmlAnnotation'>@Html Annotation</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.HtmlDetails.HtmlSchema'>HTML-Schema Support</a></p>
+      </ol>
+      <li><p><a class='doclink' href='#juneau-marshall.UonDetails'>UON Details</a></p>
+      <ol>
+         <li><p><a class='doclink' href='#juneau-marshall.UonDetails.UonMethodology'>UON Methodology</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UonDetails.UonSerializers'>UON Serializers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UonDetails.UonParsers'>UON Parsers</a></p>
+      </ol>
+      <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails'>URL-Encoding Details</a></p>
+      <ol>
+         <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails.UrlEncodingMethodology'>URL-Encoding Methodology</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails.UrlEncodingSerializers'>URL-Encoding Serializers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails.UrlEncodingParsers'>URL-Encoding Parsers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails.UrlEncodingAnnotation'>@UrlEncoding Annotation</a></p>
+      </ol>
+      <li><p><a class='doclink' href='#juneau-marshall.MsgPackDetails'>MessagePack Details</a></p>
       <ol>
-         <li><p><a class='doclink' href='#juneau-marshall.AdditionalInfo.JSON'>JSON</a></p>
-         <li><p><a class='doclink' href='#juneau-marshall.AdditionalInfo.XML'>XML</a></p>
-         <li><p><a class='doclink' href='#juneau-marshall.AdditionalInfo.HTML'>HTML</a></p>
-         <li><p><a class='doclink' href='#juneau-marshall.AdditionalInfo.UON'>UON</a></p>
-         <li><p><a class='doclink' href='#juneau-marshall.AdditionalInfo.URLEncoding'>URL-Encoding</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails.MsgPackMethodology'>MessagePack Methodology</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails.MspPackSerializers'>MessagePack Serializers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall.UrlEncodingDetails.MsgPackParsers'>MessagePack Parsers</a></p>
       </ol>
+      <li><p><a class='doclink' href='#juneau-marshall.SoapDetails'>SOAP Details</a></p>
+      <li><p><a class='doclink' href='#juneau-marshall.CsvDetails'>CSV Details</a></p>
+      <li><p><a class='doclink' href='#juneau-marshall.JsoDetails'>Java Serialized Object Details</a></p>
+      <li><p><a class='doclink' href='#juneau-marshall.BestPractices'>Best Practices</a></p>
    </ol>
    <li><p class='toc2'><a class='doclink' href='#juneau-marshall-rdf'><i>juneau-marshall-rdf</i></a></p>
+   <ol>
+      <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails'>RDF Details</a></p>
+      <ol>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.RdfMethodology'>RDF Methodology</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.RdfSerializers'>RDF Serializers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.RdfParsers'>RDF Parsers</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.RdfAnnotation'>@Rdf Annotation</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.Namespaces'>Namespaces</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.UriProperties'>URI Properties</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.RootProperty'>Root Property</a></p>
+         <li><p><a class='doclink' href='#juneau-marshall-rdf.RdfDetails.TypedLiterals'>Typed Literals</a></p>
+      </ol>
+   </ol>
    <li><p class='toc2'><a class='doclink' href='#juneau-dto'><i>juneau-dto</i></a></p>
    <ol>
       <li><p><a class='doclink' href='#juneau-dto.HTML5'>HTML5</a></p>
@@ -1363,28 +1425,19 @@
          <br>For example, JSON has the following predefined reusable serializers and parsers:
       </p>
       <ul class='doctree'>
-         <li class='jc'>
-            <a href="org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a>
-            <ul>
-               <li class='jf'>
-                  <a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT"><code>DEFAULT</code></a>
-               <li class='jf'>
-                  <a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX"><code>DEFAULT_LAX</code></a>
-               <li class='jf'>
-                  <a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_READABLE"><code>DEFAULT_READABLE</code></a>
-               <li class='jf'>
-                  <a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX_READABLE"><code>DEFAULT_LAX_READABLE</code></a>
-               <li class='jf'>
-                  <a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX_READABLE_SAFE"><code>DEFAULT_LAX_READABLE_SAFE</code></a>
+         <li class='jc'><a href="org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT"><code>DEFAULT</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX"><code>DEFAULT_LAX</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_READABLE"><code>DEFAULT_READABLE</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX_READABLE"><code>DEFAULT_LAX_READABLE</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX_READABLE_SAFE"><code>DEFAULT_LAX_READABLE_SAFE</code></a>
             </ul>
          </li>
-         <li class='jc'>
-            <a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a> 
+         <li class='jc'><a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a> 
             <ul>
-               <li class='jf'>
-                  <a href="org/apache/juneau/json/JsonParser.html#DEFAULT"><code>DEFAULT</code></a>
-               <li class='jf'>
-                  <a href="org/apache/juneau/json/JsonParser.html#DEFAULT_STRICT"><code>DEFAULT_STRICT</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonParser.html#DEFAULT"><code>DEFAULT</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonParser.html#DEFAULT_STRICT"><code>DEFAULT_STRICT</code></a>
             </ul>
          </li>
       </ul>
@@ -1406,96 +1459,107 @@
       .quoteChar(<js>'"'</js>)  <jc>// Use a different quote character.</jc>
       .build();
       </p>
+
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.ConfigurableProperties.Common"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.5.1 - Common Properties</h4>
+      <div class='topic'>
+         <p>
+            All serializers and parsers extend from the <a href="org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a> class.
+            <br>Therefore, the following properties are common to all serializers and parsers:
+         </p>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanClassVisibility"><code>BEAN_beanClassVisibility</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanConstructorVisibility"><code>BEAN_beanConstructorVisibility</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanDictionary"><code>BEAN_beanDictionary</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanFieldVisibility"><code>BEAN_beanFieldVisibility</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanFilters"><code>BEAN_beanFilters</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanMapPutReturnsOldValue"><code>BEAN_beanMapPutReturnsOldValue</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanMethodVisibility"><code>BEAN_beanMethodVisibility</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beansRequireDefaultConstructor"><code>BEAN_beansRequireDefaultConstructor</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beansRequireSerializable"><code>BEAN_beansRequireSerializable</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beansRequireSettersForGetters"><code>BEAN_beansRequireSettersForGetters</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beansRequireSomeProperties"><code>BEAN_beansRequireSomeProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_beanTypePropertyName"><code>BEAN_beanTypePropertyName</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_debug"><code>BEAN_debug</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_excludeProperties"><code>BEAN_excludeProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_ignoreInvocationExceptionsOnGetters"><code>BEAN_ignoreInvocationExceptionsOnGetters</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_ignoreInvocationExceptionsOnSetters"><code>BEAN_ignoreInvocationExceptionsOnSetters</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_ignorePropertiesWithoutSetters"><code>BEAN_ignorePropertiesWithoutSetters</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_ignoreUnknownBeanProperties"><code>BEAN_ignoreUnknownBeanProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_ignoreUnknownNullBeanProperties"><code>BEAN_ignoreUnknownNullBeanProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_implClasses"><code>BEAN_implClasses</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_includeProperties"><code>BEAN_includeProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_locale"><code>BEAN_locale</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_mediaType"><code>BEAN_mediaType</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_notBeanClasses"><code>BEAN_notBeanClasses</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_notBeanPackages"><code>BEAN_notBeanPackages</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_pojoSwaps"><code>BEAN_pojoSwaps</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_propertyNamer"><code>BEAN_propertyNamer</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_sortProperties"><code>BEAN_sortProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_timeZone"><code>BEAN_timeZone</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_useInterfaceProxies"><code>BEAN_useInterfaceProxies</code></a>
+               <li class='jf'><a href="org/apache/juneau/BeanContext.html#BEAN_useJavaBeanIntrospector"><code>BEAN_useJavaBeanIntrospector</code></a>
+            </ul>
+         </ul>
+      </div>
       
-      <h5 class='topic'>Additional Information</h5>
-      <p>
-         The following is a list of all configurable properties across all serializers and parsers.
-      </p>
-      <ul class='doctree'>
-         <li class='jc'>
-            <a href="org/apache/juneau/BeanContext.html" title="class in org.apache.juneau"><code>BeanContext</code></a>
-            - Properties associated with handling beans on serializers and parsers.
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.ConfigurableProperties.CommonSerializer"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.5.2 - Common Serializer Properties</h4>
+      <div class='topic'>
+         <p>
+            In addition to the common properties above, the following properties are common to all serializers:
+         </p>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer"><code>Serializer</code></a>
             <ul>
-               <li class='jc'>
-                  <a href="org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer"><code>Serializer</code></a>
-                  - Configurable properties common to all serializers.
-                  <ul>
-                     <li class='jc'>
-                        <a href="org/apache/juneau/html/HtmlSerializer.html" title="class in org.apache.juneau.html"><code>HtmlSerializer</code></a>
-                        - Configurable properties on the HTML serializer.
-                        <ul>
-                           <li class='jc'>
-                              <a href="org/apache/juneau/html/HtmlDocSerializer.html" title="class in org.apache.juneau.html"><code>HtmlDocSerializer</code></a> 
-                              - Configurable properties on the HTML document serializer.
-                        </ul>
-                     </li>
-                     <li class='jic'>
-                        <a href="org/apache/juneau/jena/RdfCommon.html" title="interface in org.apache.juneau.jena"><code>RdfCommon</code></a> 
-                        - Configurable properties common to the RDF serializers and parsers.
-                        <ul>
-                           <li class='jc'>
-                              <a href="org/apache/juneau/jena/RdfSerializer.html" title="class in org.apache.juneau.jena"><code>RdfSerializer</code></a>
-                              - Configurable properties on the RDF serializers.
-                        </ul>
-                     </li>
-                     <li class='jc'>
-                        <a href="org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a> 
-                        - Configurable properties on the JSON serializer.
-                     <li class='jc'>
-                        <a href="org/apache/juneau/msgpack/MsgPackSerializer.html" title="class in org.apache.juneau.msgpack"><code>MsgPackSerializer</code></a> 
-                        - Configurable properties on the MessagePack serializer.
-                     <li class='jc'>
-                        <a href="org/apache/juneau/soap/SoapXmlSerializer.html" title="class in org.apache.juneau.soap"><code>SoapXmlSerializer</code></a> 
-                        - Configurable properties on the SOAP/XML serializer.
-                     <li class='jc'>
-                        <a href="org/apache/juneau/uon/UonSerializer.html" title="class in org.apache.juneau.uon"><code>UonSerializer</code></a> 
-                        - Configurable properties on the URL-Encoding and UON serializers.
-                     <li class='jc'>
-                        <a href="org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSerializer</code></a> 
-                        - Configurable properties on the XML serializer.
-                  </ul>
-               </li>
-               <li class='jc'>
-                  <a href="org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser"><code>Parser</code></a> 
-                  - Configurable properties common to all parsers.
-                  <ul>
-                     <li class='jc'>
-                        <a href="org/apache/juneau/html/HtmlParser.html" title="class in org.apache.juneau.html"><code>HtmlParser</code></a> 
-                        - Configurable properties on the HTML parser.
-                     <li class='jic'>
-                        <a href="org/apache/juneau/jena/RdfCommon.html" title="interface in org.apache.juneau.jena"><code>RdfCommon</code></a> 
-                        - Configurable properties common to the RDF serializers and parsers.
-                        <ul>
-                           <li class='jc'>
-                           <a href="org/apache/juneau/jena/RdfParser.html" title="class in org.apache.juneau.jena"><code>RdfParser</code></a> 
-                           - Configurable properties on the RDF parsers.
-                        </ul>
-                     </li>
-                     <li class='jc'>
-                        <a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a> 
-                        - Configurable properties on the JSON parser.
-                     <li class='jc'>
-                        <a href="org/apache/juneau/msgpack/MsgPackParser.html" title="class in org.apache.juneau.msgpack"><code>MsgPackParser</code></a> 
-                        - Configurable properties on the MessagePack parser.
-                     <li class='jc'>
-                        <a href="org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon"><code>UonParser</code></a> 
-                        - Configurable properties on the URL-Encoding and UON parsers.
-                     <li class='jc'>
-                        <a href="org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml"><code>XmlParser</code></a> 
-                        - Configurable properties on the XML parser.
-                  </ul>
-               </li>
-               <li class='jc'>
-                  <a href="org/apache/juneau/rest/RestContext.html" title="class in org.apache.juneau.rest"><code>RestContext</code></a> 
-                  - Configurable properties on the REST servlet.
-               </li>
-               <li class='jc'>
-                  <a href="org/apache/juneau/rest/client/RestClient.html" title="class in org.apache.juneau.rest.client"><code>RestClient</code></a> 
-                  - Configurable properties on the REST client.
-               </li>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_abridged"><code>SERIALIZER_abridged</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_addBeanTypeProperties"><code>SERIALIZER_addBeanTypeProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>SERIALIZER_detectRecursions</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_ignoreRecursions"><code>SERIALIZER_ignoreRecursions</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_initialDepth"><code>SERIALIZER_initialDepth</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_listener"><code>SERIALIZER_listener</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxDepth"><code>SERIALIZER_maxDepth</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxIndent"><code>SERIALIZER_maxIndent</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_quoteChar"><code>SERIALIZER_quoteChar</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_sortCollections"><code>SERIALIZER_sortCollections</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_sortMaps"><code>SERIALIZER_sortMaps</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_trimEmptyCollections"><code>SERIALIZER_trimEmptyCollections</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_trimEmptyMaps"><code>SERIALIZER_trimEmptyMaps</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_trimNullProperties"><code>SERIALIZER_trimNullProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_trimStrings"><code>SERIALIZER_trimStrings</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriContext"><code>SERIALIZER_uriContext</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriRelativity"><code>SERIALIZER_uriRelativity</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_uriResolution"><code>SERIALIZER_uriResolution</code></a>
+               <li class='jf'><a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_useWhitespace"><code>SERIALIZER_useWhitespace</code></a>
             </ul>
-         </li>
-      </ul>
+         </ul>
+      </div>
+
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.ConfigurableProperties.CommonParser"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.5.3 - Common Parser Properties</h4>
+      <div class='topic'>
+         <p>
+            In addition to the common properties above, the following properties are common to all parsers:
+         </p>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser"><code>Parser</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/parser/Parser.html#PARSER_autoCloseStreams"><code>PARSER_autoCloseStreams</code></a>
+               <li class='jf'><a href="org/apache/juneau/parser/Parser.html#PARSER_fileCharset"><code>PARSER_fileCharset</code></a>
+               <li class='jf'><a href="org/apache/juneau/parser/Parser.html#PARSER_inputStreamCharset"><code>PARSER_inputStreamCharset</code></a>
+               <li class='jf'><a href="org/apache/juneau/parser/Parser.html#PARSER_listener"><code>PARSER_listener</code></a>
+               <li class='jf'><a href="org/apache/juneau/parser/Parser.html#PARSER_strict"><code>PARSER_strict</code></a>
+               <li class='jf'><a href="org/apache/juneau/parser/Parser.html#PARSER_trimStrings"><code>PARSER_trimStrings</code></a>
+               <li class='jf'><a href="org/apache/juneau/parser/Parser.html#PARSER_unbuffered"><code>PARSER_unbuffered</code></a>
+            </ul>
+         </ul>
+      </div>
+      
    </div>
    
    <!-- ======================================================================================================= -->
@@ -3585,12 +3649,196 @@
       </p>
    </div>
 
+   <!-- ======================================================================================================== -->
+   <a id="juneau-marshall.Recursion"></a>
+   <h3 class='topic' onclick='toggle(this)'>2.10 - Non-Tree Models and Recursion Detection</h3>
+   <div class='topic'>
+      <p>
+         The Juneau Serializer API is designed to be used against POJO tree structures. 
+         <br>It expects that there not be loops in the POJO model (e.g. children with references to parents, etc...).
+         <br>If you try to serialize models with loops, you will usually cause a <code>StackOverflowError</code> to 
+         be thrown (if <a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_maxDepth"><code>Serializer.SERIALIZER_maxDepth</code></a> is not reached 
+         first).
+      </p>
+      <p>
+         If you still want to use the Juneau serializers on such models, Juneau provides the 
+         <a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>Serializer.SERIALIZER_detectRecursions</code></a> setting.
+         <br>It tells the serializer to look for instances of an object in the current branch of the tree and skip 
+         serialization when a duplicate is encountered.
+      </p>
+      <p>
+         For example, let's make a POJO model out of the following classes:
+      </p>
+      <p class='bcode'>
+   <jk>public class</jk> A {
+      <jk>public</jk> B b;
+   }
+   
+   <jk>public class</jk> B {
+      <jk>public</jk> C c;
+   }
+   
+   <jk>public class</jk> C {
+      <jk>public</jk> A a;
+   }
+      </p>
+      <p>
+         Now we create a model with a loop and serialize the results.
+      </p>
+      <p class='bcode'>
+   <jc>// Clone an existing serializer and set property for detecting recursions.</jc>
+   JsonSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.builder().detectRecursions(<jk>true</jk>).build();
+
+   <jc>// Create a recursive loop.</jc>
+   A a = <jk>new</jk> A();
+   a.<jf>b</jf> = <jk>new</jk> B();
+   a.<jf>b</jf>.<jf>c</jf> = <jk>new</jk> C();
+   a.<jf>b</jf>.<jf>c</jf>.<jf>a</jf> = a;
+   
+   <jc>// Serialize to JSON.</jc>
+   String json = s.serialize(a);
+      </p>
+      <p>
+         What we end up with is the following, which does not serialize the contents of the <code>c</code> field:
+      </p>
+      <p class='bcode'>
+   {
+      b: {
+         c: {
+         }
+      }
+   }
+      </p>
+      <p>
+         Without recursion detection enabled, this would cause a stack-overflow error.
+      </p>
+      <p>
+         Recursion detection introduces a performance penalty of around 20%.
+         <br>For this reason the setting is disabled by default.
+      </p>
+   </div>
+
+   <!-- ======================================================================================================== -->
+   <a id="juneau-marshall.ParsingIntoGenericModels"></a>
+   <h3 class='topic' onclick='toggle(this)'>2.11 - Parsing into Generic Models</h3>
+   <div class='topic'>
+      <p>
+         The Juneau parsers are not limited to parsing back into the original bean classes.
+         <br>If the bean classes are not available on the parsing side, the parser can also be used to 
+         parse into a generic model consisting of <code>Maps</code>, <code>Collections</code>, and primitive
+         objects.
+      </p>
+      <p>
+         You can parse into any <code>Map</code> type (e.g. <code>HashMap</code>, <code>TreeMap</code>), but
+         using <a href="org/apache/juneau/ObjectMap.html" title="class in org.apache.juneau"><code>ObjectMap</code></a> is recommended since it has many convenience methods
+         for converting values to various types.
+         <br>The same is true when parsing collections.  You can use any Collection (e.g. <code>HashSet</code>, 
+         <code>LinkedList</code>) or array (e.g. <code>Object[]</code>, <code>String[]</code>, 
+         <code>String[][]</code>), but using <a href="org/apache/juneau/ObjectList.html" title="class in org.apache.juneau"><code>ObjectList</code></a> is recommended.
+      </p>
+      <p>
+         When the map or list type is not specified, or is the abstract <code>Map</code>, <code>Collection</code>, 
+         or <code>List</code> types, the parser will use <code>ObjectMap</code> and <code>ObjectList</code> by 
+         default.
+      </p>
+      <p>
+         For example, given the following JSON:
+      </p>
+      <p class='bcode'>
+   {
+      id: <jk>1</jk>, 
+      name: <js>'John Smith'</js>, 
+      uri: <js>'http://sample/addressBook/person/1'</js>, 
+      addressBookUri: <js>'http://sample/addressBook'</js>, 
+      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
+      addresses: [
+         {
+            uri: <js>'http://sample/addressBook/address/1'</js>, 
+            personUri: <js>'http://sample/addressBook/person/1'</js>, 
+            id: <jk>1</jk>, 
+            street: <js>'100 Main Street'</js>, 
+            city: <js>'Anywhereville'</js>, 
+            state: <js>'NY'</js>, 
+            zip: <jk>12345</jk>, 
+            isCurrent: <jk>true</jk>
+         }
+      ]
+   }
+      </p>
+      <p>
+         We can parse this into a generic <code>ObjectMap</code>:
+      </p>
+      <p class='bcode'> 
+   <jc>// Parse JSON into a generic POJO model.</jc>
+   ObjectMap m = JsonParser.<jsf>DEFAULT</jsf>.parse(json, ObjectMap.<jk>class</jk>);
+
+   <jc>// Convert it back to JSON.</jc>
+   String json = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.serialize(m);
+      </p>
+      <p>
+         What we end up with is the exact same output.
+         <br>Even the numbers and booleans are preserved because they are parsed into <code>Number</code> and 
+         <code>Boolean</code> objects when parsing into generic models.
+      </p>
+      <p class='bcode'>
+   {
+      id: <jk>1</jk>, 
+      name: <js>'John Smith'</js>, 
+      uri: <js>'http://sample/addressBook/person/1'</js>, 
+      addressBookUri: <js>'http://sample/addressBook'</js>, 
+      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
+      addresses: [
+         {
+            uri: <js>'http://sample/addressBook/address/1'</js>, 
+            personUri: <js>'http://sample/addressBook/person/1'</js>, 
+            id: <jk>1</jk>, 
+            street: <js>'100 Main Street'</js>, 
+            city: <js>'Anywhereville'</js>, 
+            state: <js>'NY'</js>, 
+            zip: <jk>12345</jk>, 
+            isCurrent: <jk>true</jk>
+         }
+      ]
+   }
+      </p>
+      <p>
+         Once parsed into a generic model, various convenience methods are provided on the <code>ObjectMap</code>
+            and <code>ObjectList</code> classes to retrieve values:
+      </p>
+      <p class='bcode'>
+   <jc>// Parse JSON into a generic POJO model.</jc>
+   ObjectMap m = JsonParser.<jsf>DEFAULT</jsf>.parse(json, ObjectMap.<jk>class</jk>);
+
+   <jc>// Get some simple values.</jc>
+   String name = m.getString(<js>"name"</js>);
+   <jk>int</jk> id = m.getInt(<js>"id"</js>);
+
+   <jc>// Get a value convertable from a String.</jc>
+   URI uri = m.get(URI.<jk>class</jk>, <js>"uri"</js>);
+
+   <jc>// Get a value using a swap.</jc>
+   CalendarSwap swap = <jk>new</jk> CalendarSwap.ISO8601DTZ();
+   Calendar birthDate = m.get(swap, <js>"birthDate"</js>);
+
+   <jc>// Get the addresses.</jc>
+   ObjectList addresses = m.getObjectList(<js>"addresses"</js>);
+
+   <jc>// Get the first address and convert it to a bean.</jc>
+   Address address = addresses.get(Address.<jk>class</jk>, 0);
+      </p>
+
+      <p>
+         As a general rule, parsing into beans is often more efficient than parsing into generic models.
+         <br>And working with beans is often less error prone than working with generic models.
+      </p>     
+   </div>
+
    <!-- ======================================================================================================= -->
    <a id="juneau-marshall.ReadingContinuousStreams"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.10 - Reading Continuous Streams</h3>
+   <h3 class='topic' onclick='toggle(this)'>2.12 - Reading Continuous Streams</h3>
    <div class='topic'>
       <p>
-         The following parsers can be configured to read continous streams of objects from the same input stream:
+         The following parsers can be configured to read continuous streams of objects from the same input stream:
       </p>
       <ul>
          <li class='jc'><a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a>
@@ -3599,7 +3847,7 @@
       </ul>
       <p>
          The <a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a> and <a href="org/apache/juneau/uon/UonParser.html" title="class in org.apache.juneau.uon"><code>UonParser</code></a>
-         classes can read continous streams by using the <a href="org/apache/juneau/parser/Parser.html#PARSER_unbuffered"><code>Parser.PARSER_unbuffered</code></a>
+         classes can read continuous streams by using the <a href="org/apache/juneau/parser/Parser.html#PARSER_unbuffered"><code>Parser.PARSER_unbuffered</code></a>
          setting.
          <br>This prevents the parsers from using an internal buffer that would read past the end of the currently
          parsed POJO.
@@ -3639,7 +3887,7 @@
    
    <!-- ======================================================================================================= -->
    <a id="juneau-marshall.JacksonComparison"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.11 - Comparison with Jackson</h3>
+   <h3 class='topic' onclick='toggle(this)'>2.13 - Comparison with Jackson</h3>
    <div class='topic'>
       <p>
          Juneau was developed independently from Jackson, but shares many of the same features and capabilities.
@@ -3752,7 +4000,7 @@
 
    <!-- ======================================================================================================= -->
    <a id="juneau-marshall.PojoCategories"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.12 - POJO Categories</h3>
+   <h3 class='topic' onclick='toggle(this)'>2.14 - POJO Categories</h3>
    <div class='topic'>
       <p>
          The following chart shows POJOs categorized into groups and whether they can be serialized or parsed:
@@ -4017,175 +4265,3820 @@
    </div>
 
    <!-- ======================================================================================================= -->
-   <a id="juneau-marshall.BestPractices"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.13 - Best Practices</h3>
-   <div class='topic'>
-      <ol class='spaced-list'>
-         <li>
-            Reuse instances of serializers and parsers whenever possible.
-            <br>They are designed to be thread safe and maintain internal caches of bean metadata to increase performance.
-         <li>
-            The <a href="org/apache/juneau/serializer/Serializer.html#SERIALIZER_detectRecursions"><code>SERIALIZER_detectRecursions</code></a> 
-            option on the <a href="org/apache/juneau/serializer/Serializer.html" title="class in org.apache.juneau.serializer"><code>Serializer</code></a> class can cause a performance penalty of 
-            around 20%.  
-            Therefore, it's recommended that this option be used only when necessary. 
-         <li>
-            In general, JSON serialization and parsing is about 20% faster than XML.  
-            JSON is also more compact than XML.
-            MessagePack is fastest and most compact of all.
-         <li>
-            The RDF parsers are SLOW.
-            RDF simply isn't efficient with node traversal, so creating tree structures out of RDF models
-            is highly inefficient.     
-         <li>
-            The <a href="org/apache/juneau/parser/Parser.html" title="class in org.apache.juneau.parser"><code>Parser</code></a> methods that take in <a href="org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau"><code>ClassMeta</code></a> 
-            parameters are slightly faster than methods that 
-            take in <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang"><code>Class</code></a> or <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><code>Object</code></a> parameters, since the latter methods involve 
-            hash lookups to resolve to <a href="org/apache/juneau/ClassMeta.html" title="class in org.apache.juneau"><code>ClassMeta</code></a> parameters.
-      </ol>
-   </div>
-
-   <!-- ======================================================================================================= -->
-   <a id="juneau-marshall.AdditionalInfo"></a>
-   <h3 class='topic' onclick='toggle(this)'>2.14 - Additional Information</h3>
+   <a id="juneau-marshall.JsonDetails"></a>
+   <h3 class='topic' onclick='toggle(this)'>2.15 - JSON Details</h3>
    <div class='topic'>
       <p>
-         Extensive javadocs exist for individual language support.
-         Refer to these docs for language-specific information.
+         Juneau supports converting arbitrary POJOs to and from JSON using ultra-efficient serializers and parsers.
+         <br>The JSON serializer converts POJOs directly to JSON without the need for intermediate DOM objects using a 
+         highly-efficient state machine.
+         <br>Likewise, the JSON parser creates POJOs directly from JSON without the need for intermediate DOM objects. 
+      </p>
+      <p>
+         The following example shows JSON for a typical bean:
       </p>
+      <h5 class='figure'>Sample Beans</h5>
+      <p class='bcode'>
+   <jk>public class</jk> Person {
+      
+      <jc>// Bean properties</jc>
+      <jk>public</jk> String <jf>name</jf>;
+      <ja>@Swap</ja>(CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
+      <jk>public</jk> List&lt;Address&gt; <jf>addresses</jf>; 
+   
+      <jc>// Getters/setters omitted</jc>
+   }
+   
+   <jk>public class</jk> Address {
 
-      <!-- =================================================================================================== -->
-      <a id="juneau-marshall.AdditionalInfo.JSON"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.13.1 - JSON</h4>
-      <div class='topic'>
-         <h5 class='toc'>Additional Information - org.apache.juneau.json</h5>
-         <ol class='toc'>
-            <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#Overview'>JSON support overview</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#OverviewExample'>Example</a></p>
-            </ol>
-            <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#JsonSerializer'>JsonSerializer class</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#Collections'>Collections</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#JsonSchemaSupport'>JSON-Schema support</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#Recursion'> Non-tree models and recursion detection</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#SerializerConfigurableProperties'>Configurable properties</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#SerializerOtherNotes'>Other notes</a></p>
-            </ol>
-            <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#JsonParser'>JsonParser class</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#GenericParsing'>Parsing into generic POJO models</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#ParserConfigurableProperties'>Configurable properties</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/json/package-summary.html#ParserOtherNotes'>Other notes</a></p>
-            </ol>
-         </ol>
-      </div>
+      <jc>// Bean properties</jc>
+      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>;
+      <jk>public</jk> StateEnum <jf>state</jf>;
+      <jk>public int</jk> <jf>zip</jf>;
+      <jk>public boolean</jk> <jf>isCurrent</jf>;
 
-      <!-- =================================================================================================== -->
-      <a id="juneau-marshall.AdditionalInfo.XML"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.13.2 - XML</h4>
-      <div class='topic'>
-         <h5 class='toc'>Additional Information - org.apache.juneau.xml</h5>
-         <ol class='toc'>
-            <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#Overview'>XML support overview</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#OverviewExample'>XML support overview - example</a></p>
-            </ol>
-            <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#XmlSerializer'>XmlSerializer class</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#Methodology'>XML support methodology</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#XmlAnnotation'>@Xml annotations</a></p>
-               <ol>
-                  <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#XmlName'>@Bean.typeName()</a></p>
-                  <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#XmlChildName'>@Xml.childName()</a></p>
-                  <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#XmlFormat'>@Xml.format()</a></p>
-               </ol>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#Namespaces'>Namespaces</a></p>
-               <ol>
-                  <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#AutoDetectNamespaces'>Auto-detection of namespaces</a></p>
-               </ol>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#Collections'>Collections</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#XmlSchemaSupport'>XML-Schema support</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#Recursion'> Non-tree models and recursion detection</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#SerializerConfigurableProperties'>Configurable properties</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#SerializerOtherNotes'>Other notes</a></p>
-            </ol>
-            <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#XmlParser'>XmlParser class</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#GenericParsing'>Parsing into generic POJO models</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#ParserConfigurableProperties'>Configurable properties</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/xml/package-summary.html#ParserOtherNotes'>Other notes</a></p>
-            </ol>
-         </ol>
-      </div>
-      
-      <!-- =================================================================================================== -->
-      <a id="juneau-marshall.AdditionalInfo.HTML"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.13.3 - HTML</h4>
-      <div class='topic'>
-         <h5 class='toc'>Additional Information - org.apache.juneau.html</h5>
-         <ol class='toc'>
-            <li><p><a class='doclink' href='org/apache/juneau/html/package-summary.html#HtmlSerializer'>HTML serialization support</a></p> 
-            <li><p><a class='doclink' href='org/apache/juneau/html/package-summary.html#HtmlParser'>HTML parsing support</a></p> 
-         </ol>
-      </div>
+      <jc>// Getters/setters omitted</jc>
+   }  
+      </p>
+      <h5 class='figure'>Sample Code</h5>
+      <p class='bcode'>
+   Person p = <jk>new</jk> Person()
+      .name(<js>"John Smith"</js>)
+      .birthDate(<js>"1946-08-12T00:00:00Z"</js>)
+      .addresses(
+         <jk>new</jk> Address() 
+            .street(<js>"100 Main Street"</js>)
+            .city(<js>"Anywhereville"</js>)
+            .state(<jsf>NY</jsf>)
+            .zip(12345)
+            .isCurrent(<jk>true</jk>);
+      );
+      </p>
+      <h5 class='figure'>Normal JSON</h5>
+      <p class='bcode'>
+   {
+      <js>"name"</js>: <js>"John Smith"</js>, 
+      <js>"birthDate"</js>: <js>"1946-08-12T00:00:00Z"</js>, 
+      <js>"addresses"</js>: [
+         {
+            <js>"street"</js>: <js>"100 Main Street"</js>, 
+            <js>"city"</js>: <js>"Anywhereville"</js>, 
+            <js>"state"</js>: <js>"NY"</js>, 
+            <js>"zip"</js>: 12345, 
+            <js>"isCurrent"</js>: <jk>true</jk>
+         }
+      ]
+   } 
+         </p>
+      <h5 class='figure'>Lax JSON</h5>
+      <p class='bcode'>
+   {
+      name: <js>'John Smith'</js>, 
+      birthDate: <js>'1946-08-12T00:00:00Z'</js>, 
+      addresses: [
+         {
+            street: <js>'100 Main Street'</js>, 
+            city: <js>'Anywhereville'</js>, 
+            state: <js>'NY'</js>, 
+            zip: 12345, 
+            isCurrent: <jk>true</jk>
+         }
+      ]
+   } 
+         </p>
       
-      <!-- =================================================================================================== -->
-      <a id="juneau-marshall.AdditionalInfo.UON"></a>
-      <h4 class='topic' onclick='toggle(this)'>2.13.4 - UON</h4>
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.JsonDetails.JsonMethodology"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.15.1 - JSON Methodology</h4>
       <div class='topic'>
-         <h5 class='toc'>Additional Information - org.apache.juneau.uon</h5>
-         <ol class='toc'>
-            <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#Overview'>UON support overview</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#OverviewExample'>Example</a></p>
-            </ol>
-            <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#UrlEncodingSerializer'>UrlEncodingSerializer and UonSerializer classes</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#BeanAnnotations'>@Bean and @BeanProperty annotations</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#Collections'>Collections</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#Recursion'> Non-tree models and recursion detection</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#SerializerConfigurableProperties'>Configurable properties</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#SerializerOtherNotes'>Other notes</a></p>
-            </ol>
-            <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#UrlEncodingParser'>UrlEncodingParser and UonParser classes</a></p> 
-            <ol>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#GenericParsing'>Parsing into generic POJO models</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#ParserConfigurableProperties'>Configurable properties</a></p>
-               <li><p><a class='doclink' href='org/apache/juneau/uon/package-summary.html#ParserOtherNotes'>Other notes</a></p>
-            </ol>
-         </ol>
-      </div>
+         <p>
+            The JSON data type produced depends on the Java object type being serialized.
+         </p>
+         <ul class='spaced-list'>
+            <li>
+               Primitives and primitive objects are converted to JSON primitives.
+            <li>
+               Beans and Maps are converted to JSON objects.
+            <li>
+               Collections and arrays are converted to JSON arrays.
+            <li>
+               Anything else is converted to JSON strings.
+         </ul>
+         
+         <h5 class='figure'>Data type conversions:</h5>
+         <table class='styled' style='max-width:800px;'>
+            <tr>
+               <th>POJO type</th>
+               <th>JSON type</th>
+               <th>Example</th>
+               <th>Serialized form</th>
+            </tr>
+            <tr>
+               <td>String</td>
+               <td>String</td>
+               <td><code>serialize(<js>"foobar"</js>);</code></td>
+               <td><code><js>'foobar'</js></code>
+            </tr>
+            <tr>
+               <td>Number</td>
+               <td>Number</td>
+               <td><code>serialize(123);</code></td>
+               <td><code>123</code>
+            </tr>
+            <tr>
+               <td>Boolean</td>
+               <td>Boolean</td>
+               <td><code>serialize(<jk>true</jk>);</code></td>
+               <td><code><jk>true</jk></code>
+            </tr>
+            <tr>
+               <td>Null</td>
+               <td>Null</td>
+               <td><code>serialize(<jk>null</jk>);</code></td>
+               <td><code><jk>null</jk></code>
+            </tr>
+            <tr>
+               <td>Beans with properties of any type on this list</td>
+               <td>Object</td>
+               <td><code>serialize(<jk>new</jk> MyBean());</code></td>
+               <td><code>{p1:<js>'val1'</js>,p2:<jk>true</jk>}</code>
+            </tr>
+            <tr>
+               <td>Maps with values of any type on this list</td>
+               <td>Object</td>
+               <td><code>serialize(<jk>new</jk> TreeMap());</code></td>
+               <td><code>{key1:<js>'val1'</js>,key2:<jk>true</jk>}</code>
+            </tr>
+            <tr>
+               <td>Collections and arrays of any type on this list</td>
+               <td>Array</td>
+               <td><code>serialize(<jk>new</jk> Object[]{1,<js>"foo"</js>,<jk>true</jk>});</code></td>
+               <td><code>[1,<js>'foo'</js>,<jk>true</jk>]</code>
+            </tr>
+         </table>
+         <p>
+            In addition, swaps can be used to convert non-serializable POJOs into serializable forms, such as converting 
+            <code>Calendar</code> object to ISO8601 strings, or <code><jk>byte</jk>[]</code> arrays to Base-64 
+            encoded strings.
+         </p>
+      </div>
+      
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.JsonDetails.JsonSerializers"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.15.2 - JSON Serializers</h4>
+      <div class='topic'>
+         <p>
+            The <a href="org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a> class is used to serialize POJOs into JSON.
+         </p>  
+         <p>
+            The JSON serializer provides the following settings:
+         </p>
+         <ul class='doctree'>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.Common'>Common Properties</a>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.CommonSerializer'>Common Serializer Properties</a>
+            <li class='jc'><a href="org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#JSON_addBeanTypeProperties"><code>JSON_addBeanTypeProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#JSON_escapeSolidus"><code>JSON_escapeSolidus</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#JSON_simpleMode"><code>JSON_simpleMode</code></a>
+            </ul>
+         </ul>
+         <p>
+            The following pre-configured serializers are provided for convenience:
+         </p>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT"><code>DEFAULT</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX"><code>DEFAULT_LAX</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX_READABLE"><code>DEFAULT_LAX_READABLE</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_LAX_READABLE_SAFE"><code>DEFAULT_LAX_READABLE_SAFE</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonSerializer.html#DEFAULT_READABLE"><code>DEFAULT_READABLE</code></a>
+            </ul>
+         </ul>
+      </div>      
+      
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.JsonDetails.JsonParsers"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.15.3 - JSON Parsers</h4>
+      <div class='topic'>
+         <p>
+            The <a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a> class is used to parse JSON into POJOs.
+         </p>  
+         <p>
+            The JSON parser provides the following settings:
+         </p>
+         <ul class='doctree'>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.Common'>Common Properties</a>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.CommonParser'>Common Parser Properties</a>
+            <li class='jc'><a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/json/JsonParser.html#JSON_validateEnd"><code>JSON_validateEnd</code></a>
+            </ul>
+         </ul>
+         <p>
+            The following pre-configured parsers are provided for convenience:
+         </p>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/json/JsonParser.html" title="class in org.apache.juneau.json"><code>JsonParser</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/json/JsonParser.html#DEFAULT"><code>DEFAULT</code></a>
+               <li class='jf'><a href="org/apache/juneau/json/JsonParser.html#DEFAULT_STRICT"><code>DEFAULT_STRICT</code></a>
+            </ul>
+         </ul>
+         <p>
+            The JSON parser supports ALL valid JSON, including:
+         </p>
+         <ul class='spaced-list'>
+            <li>
+               Javascript comments.
+            <li>
+               Single or double quoted values.
+            <li>
+               Quoted (strict) or unquoted (non-strict) attributes.
+            <li>
+               JSON fragments (such as string, numeric, or boolean primitive values).
+            <li>
+               Concatenated strings. 
+         </ul> 
+      </div>      
+      
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.JsonDetails.JsonAnnotation"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.15.4 - @Json Annotation</h4>
+      <div class='topic'>
+         <p>
+            The <a href="org/apache/juneau/json/annotation/Json.html#wrapperAttr--"><code>@Json(wrapperAttr)</code></a> annotation
+            can be used to wrap beans inside a JSON object with a specified attribute name.
+         </p>     
+         <p>
+            The annotation can be applied to beans as well as other objects serialized to other types (e.g. strings).
+         </p>
+         <h5 class='figure'>Example:</h5>
+         <p class='bcode' style='width:800px;'>
+   <ja>@Json</ja>(wrapperAttr=<js>"personBean"</js>)
+   <jk>public class</jk> Person {
+      <jk>public</jk> String <jf>name</jf> = <js>"John Smith"</js>;
+   }
+         </p>
+         <p>
+            The following shows the JSON representation with and without the annotation present:
+         </p>
+         <table class='styled' style='width:800px;'>
+            <tr>
+               <th>Without annotation</th>
+               <th>With annotation</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   {
+      name: <js>'John Smith'</js>
+   }
+               </td>
+               <td class='code'>
+   {
+      personBean: {
+         name: <js>'John Smith'</js>
+      }
+   }
+               </td>
+            </tr>
+         </table>
+      </div>      
+
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.JsonDetails.JsonSchema"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.15.5 - JSON-Schema Support</h4>
+      <div class='topic'>
+         <p>
+            Juneau provides the <a href="org/apache/juneau/json/JsonSchemaSerializer.html" title="class in org.apache.juneau.json"><code>JsonSchemaSerializer</code></a> class for generating JSON-Schema 
+            documents that describe the output generated by the <a href="org/apache/juneau/json/JsonSerializer.html" title="class in org.apache.juneau.json"><code>JsonSerializer</code></a> class.
+            <br>This class shares the same properties as <code>JsonSerializer</code>.
+            <br>For convenience the <a href="org/apache/juneau/json/JsonSerializer.html#getSchemaSerializer--"><code>JsonSerializer.getSchemaSerializer()</code></a> method has been 
+            added for creating instances of schema serializers from the regular serializer instance.
+         </p>
+         <p>
+            <i>Note:</i> As of this writing, JSON-Schema has not been standardized, so the output generated by the 
+            schema serializer may be subject to future modifications.
+         </p>
+         <h5 class='figure'>Sample Beans</h5>
+         <p class='bcode'>
+   <jk>public class</jk> Person {
+      
+      <jc>// Bean properties</jc>
+      <jk>public</jk> String <jf>name</jf>;
+      <jk>public</jk> Calendar <jf>birthDate</jf>;
+      <jk>public</jk> List&lt;Address&gt; <jf>addresses</jf>; 
+   
+      <jc>// Getters/setters omitted</jc>
+   }
+   
+   <jk>public class</jk> Address {
+
+      <jc>// Bean properties</jc>
+      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>;
+      <jk>public</jk> StateEnum <jf>state</jf>;
+      <jk>public int</jk> <jf>zip</jf>;
+      <jk>public boolean</jk> <jf>isCurrent</jf>;
+
+      <jc>// Getters/setters omitted</jc>
+   }  
+         </p>
+         <p>
+            The code for creating our POJO model and generating JSON-Schema is shown below:
+         </p>
+         <p class='bcode'>
+   <jc>// Get the schema serializer for one of the default JSON serializers.</jc>
+   JsonSchemaSerializer s = JsonSerializer.<jsf>DEFAULT_LAX_READABLE</jsf>.getSchemaSerializer();
+   
+   <jc>// Get the JSON Schema for the POJO.</jc>
+   String jsonSchema = s.serialize(<jk>new</jk> Person());
+         </p>
+         
+         <h5 class='figure'>JSON Schema</h5>
+         <p class='bcode'>
+   {
+      type: <js>'object'</js>, 
+      description: <js>'org.apache.juneau.sample.Person'</js>, 
+      properties: {
+         name: {
+            type: <js>'string'</js>, 
+            description: <js>'java.lang.String'</js>
+         }, 
+         birthDate: {
+            type: <js>'string'</js>, 
+            description: <js>'java.util.Calendar'</js>
+         }, 
+         addresses: {
+            type: <js>'array'</js>, 
+            description: <js>'java.util.LinkedList&lt;org.apache.juneau.sample.Address&gt;'</js>, 
+            items: {
+               type: <js>'object'</js>, 
+               description: <js>'org.apache.juneau.sample.Address'</js>, 
+               properties: {
+                  street: {
+                     type: <js>'string'</js>, 
+                     description: <js>'java.lang.String'</js>
+                  }, 
+                  city: {
+                     type: <js>'string'</js>, 
+                     description: <js>'java.lang.String'</js>
+                  }, 
+                  state: {
+                     type: <js>'string'</js>, 
+                     description: <js>'java.lang.String'</js>
+                  }, 
+                  zip: {
+                     type: <js>'number'</js>, 
+                     description: <js>'int'</js>
+                  }, 
+                  isCurrent: {
+                     type: <js>'boolean'</js>, 
+                     description: <js>'boolean'</js>
+                  }
+               }
+            }
+         }
+      }
+   }
+         </p>
+      </div>      
+   </div>
+
+   <!-- ======================================================================================================= -->
+   <a id="juneau-marshall.XmlDetails"></a>
+   <h3 class='topic' onclick='toggle(this)'>2.16 - XML Details</h3>
+   <div class='topic'>
+      <p>
+         Juneau supports converting arbitrary POJOs to and from XML using ultra-efficient serializers and parsers.
+         <br>The XML serializer converts POJOs directly to XML without the need for intermediate DOM objects.
+         <br>Likewise, the XML parser uses a STaX parser and creates POJOs directly without intermediate DOM objects. 
+      </p>
+      <p>
+         Unlike frameworks such as JAXB, Juneau does not require POJO classes to be annotated to produce and consume 
+         XML.
+         <br>However, several XML annotations are provided for handling namespaces and fine-tuning the format of the XML produced.
+      </p>
+      <p>
+         The following example shows XML for a typical bean:
+      </p>
+      <h5 class='figure'>Sample Beans</h5>
+      <p class='bcode'>
+   <ja>@Bean</ja>(typeName=<js>"person"</js>)
+   <jk>public class</jk> Person {
+      
+      <jc>// Bean properties</jc>
+      <jk>public</jk> String <jf>name</jf>;
+      <ja>@Swap</ja>(CalendarSwap.ISO8601DTZ.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
+      <jk>public</jk> List&lt;Address&gt; <jf>addresses</jf>; 
+   
+      <jc>// Getters/setters omitted</jc>
+   }
+   
+   <ja>@Bean</ja>(typeName=<js>"address"</js>)
+   <jk>public class</jk> Address {
+
+      <jc>// Bean properties</jc>
+      <jk>public</jk> String <jf>street</jf>, <jf>city</jf>;
+      <jk>public</jk> StateEnum <jf>state</jf>;
+      <jk>public int</jk> <jf>zip</jf>;
+      <jk>public boolean</jk> <jf>isCurrent</jf>;
+
+      <jc>// Getters/setters omitted</jc>
+   }  
+      </p>
+      <h5 class='figure'>Sample Code</h5>
+      <p class='bcode'>
+   Person p = <jk>new</jk> Person()
+      .name(<js>"John Smith"</js>)
+      .birthDate(<js>"1946-08-12T00:00:00Z"</js>)
+      .addresses(
+         <jk>new</jk> Address() 
+            .street(<js>"100 Main Street"</js>)
+            .city(<js>"Anywhereville"</js>)
+            .state(<jsf>NY</jsf>)
+            .zip(12345)
+            .isCurrent(<jk>true</jk>);
+      );
+      </p>
+      <h5 class='figure'>Normal XML:</h5>
+      <p class='bcode'>
+   <xt>&lt;person&gt;</xt>
+      <xt>&lt;name&gt;</xt>John Smith<xt>&lt;/name&gt;</xt>
+      <xt>&lt;birthDate&gt;</xt>1946-08-12T04:00:00Z<xt>&lt;/birthDate&gt;</xt>
+      <xt>&lt;addresses&gt;</xt>
+         <xt>&lt;address&gt;</xt>
+            <xt>&lt;street&gt;</xt>100 Main Street<xt>&lt;/street&gt;</xt>
+            <xt>&lt;city&gt;</xt>Anywhereville<xt>&lt;/city&gt;</xt>
+            <xt>&lt;state&gt;</xt>NY<xt>&lt;/state&gt;</xt>
+            <xt>&lt;zip&gt;</xt>12345<xt>&lt;/zip&gt;</xt>
+            <xt>&lt;isCurrent&gt;</xt>true<xt>&lt;/isCurrent&gt;</xt>
+         <xt>&lt;/address&gt;</xt>
+      <xt>&lt;/addresses&gt;</xt>
+   <xt>&lt;/person&gt;</xt>
+      </p>
+      <p>
+         <br>Juneau produces JSON-equivalent XML, meaning any valid JSON document can be losslessly converted into an XML 
+         equivalent.
+         <br>In fact, all of the Juneau serializers and parsers are built upon this JSON-equivalence.
+      </p>
+
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.XmlDetails.XmlMethodology"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.16.1 - XML Methodology</h4>
+      <div class='topic'>
+
+         <p>
+            The following examples show how different data types are represented in XML.
+            They mirror how the data structures are represented in JSON.
+         </p>
+         
+         <h5 class='topic'>Simple types</h5>
+         <p>
+            The representation of loose (not a direct bean property value) simple types are shown below:
+         </p>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Data type</th>
+               <th>JSON example</th>
+               <th>XML</th>
+            </tr>
+            <tr>
+               <td>string</td>
+               <td class='code'><js>'foo'</js></td>
+               <td class='code'><xt>&lt;string&gt;</xt>foo<xt>&lt;/string&gt;</xt></td>
+            </tr>
+            <tr>
+               <td>boolean</td>
+               <td class='code'><jk>true</jk></td>
+               <td class='code'><xt>&lt;boolean&gt;</xt>true<xt>&lt;/boolean&gt;</xt></td>
+            </tr>
+            <tr>
+               <td>integer</td>
+               <td class='code'>123</td>
+               <td class='code'><xt>&lt;number&gt;</xt>123<xt>&lt;/number&gt;</xt></td>
+            </tr>
+            <tr>
+               <td>float</td>
+               <td class='code'>1.23</td>
+               <td class='code'><xt>&lt;number&gt;</xt>1.23<xt>&lt;/number&gt;</xt></td>
+            </tr>
+            <tr>
+               <td>null</td>
+               <td class='code'><jk>null</jk></td>
+               <td class='code'><xt>&lt;null/&gt;</xt></td>
+            </tr>
+         </table>
+         
+         <h5 class='topic'>Maps</h5>
+         <p>
+            Loose maps and beans use the element <xt>&lt;object&gt;</xt> for encapsulation.
+         </p>
+         <p>
+            <xa>_type</xa> attributes are added to bean properties or map entries if the type cannot be inferred 
+            through reflection (e.g. an <code>Object</code> or superclass/interface value type).
+         </p>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Data type</th>
+               <th>JSON example</th>
+               <th>XML</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   Map&lt;String,String&gt;
+               </td>
+               <td class='code'>
+   {
+      k1: <js>'v1'</js>
+      k2: <jk>null</jk>
+   }
+               </td>
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;k1&gt;<xv>v1</xv>&lt;/k1&gt;
+      &lt;k2 <xa>_type</xa>=<xs>'null'</xs>/&gt;
+   &lt;/object&gt;
+            </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   Map&lt;String,Number&gt;
+               </td>
+               <td class='code'>
+   {
+      k1: 123,
+      k2: 1.23,
+      k3: <jk>null</jk>
+   }
+               </td>
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;k1&gt;<xv>123</xv>&lt;/k1&gt;
+      &lt;k2&gt;<xv>1.23</xv>&lt;/k2&gt;
+      &lt;k3 <xa>_type</xa>=<xs>'null'</xs>/&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   Map&lt;String,Object&gt;
+               </td>
+               <td class='code'>
+   {
+      k1: <js>'v1'</js>
+      k2: 123,
+      k3: 1.23,
+      k4: <jk>true</jk>,
+      k5: <jk>null</jk>
+   }
+               </td>
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;k1&gt;<xv>v1</xv>&lt;/k1&gt;
+      &lt;k2 <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>123</xv>&lt;/k2&gt;
+      &lt;k3 <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>1.23</xv>&lt;/k3&gt;
+      &lt;k4 <xa>_type</xa>=<xs>'boolean'</xs>&gt;<xv>true</xv>&lt;/k4&gt;
+      &lt;k5 <xa>_type</xa>=<xs>'null'</xs>/&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+         </table>
+         
+         <h5 class='topic'>Arrays</h5>
+         <p>
+            Loose collections and arrays use the element <xt>&lt;array&gt;</xt> for encapsulation.
+         </p>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Data type</th>
+               <th>JSON example</th>
+               <th>XML</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   String[]
+               </td>
+               <td class='code'>
+   [
+      <js>'foo'</js>
+      <jk>null</jk>
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
+      &lt;null/&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   Number[]
+               </td>
+               <td class='code'>
+   [
+      123,
+      1.23,
+      <jk>null</jk>
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
+      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
+      &lt;null/&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   Object[]
+               </td>
+               <td class='code'>
+   [
+      <js>'foo'</js>,
+      123,
+      1.23,
+      <jk>true</jk>,
+      <jk>null</jk>
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
+      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
+      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
+      &lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;
+      &lt;null/&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   String[][]
+               </td>
+               <td class='code'>
+   [
+      [<js>'foo'</js>, <jk>null</jk>],
+      <jk>null</jk>,
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;array&gt;
+         &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
+         &lt;null/&gt;
+      &lt;/array&gt;
+      &lt;null/&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   <jk>int</jk>[]
+               </td>
+               <td class='code'>
+   [
+      123
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   <jk>boolean</jk>[]
+               </td>
+               <td class='code'>
+   [
+      <jk>true</jk>
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   List&lt;String&gt;
+               </td>
+               <td class='code'>
+   [
+      <js>'foo'</js>
+      <jk>null</jk>
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
+      &lt;null/&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   List&lt;Number&gt;
+               </td>
+               <td class='code'>
+   [
+      123,
+      1.23,
+      <jk>null</jk>
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
+      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
+      &lt;null/&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   List&lt;Object&gt;
+               </td>
+               <td class='code'>
+   [
+      <js>'foo'</js>,
+      123,
+      1.23,
+      <jk>true</jk>,
+      <jk>null</jk>
+   ]
+               </td>
+               <td class='code'><xt>
+   &lt;array&gt;
+      &lt;string&gt;<xv>foo</xv>&lt;/string&gt;
+      &lt;number&gt;<xv>123</xv>&lt;/number&gt;
+      &lt;number&gt;<xv>1.23</xv>&lt;/number&gt;
+      &lt;boolean&gt;<xv>true</xv>&lt;/boolean&gt;
+      &lt;null/&gt;
+   &lt;/array&gt;
+               </xt></td>
+            </tr>
+         </table>
+   
+         <h5 class='topic'>Beans</h5>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Data type</th>
+               <th>JSON example</th>
+               <th>XML</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   <jk>class</jk> MyBean {
+      <jk>public</jk> String a;
+      <jk>public</jk> <jk>int</jk> b;
+      <jk>public</jk> Object c;  <jc>// String value</jc>
+      <jk>public</jk> Object d;  <jc>// Integer value</jc>     
+      <jk>public</jk> MyBean2 e;  
+      <jk>public</jk> String[] f;  
+      <jk>public</jk> <jk>int</jk>[] g;   
+   }
+   <jk>class</jk> MyBean2 {
+      String h;  
+   }
+               </td>
+               <td class='code'>
+   {
+      a: <js>'foo'</js>,
+      b: 123,
+      c: <js>'bar'</js>,
+      d: 456,
+      e: {
+         h: <js>'baz'</js>
+      }
+      f: [<js>'qux'</js>]
+      g: [789]
+   }
+               </td>
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;a&gt;<xv>foo</xv>&lt;/a&gt;
+      &lt;b&gt;<xv>123</xv>&lt;/b&gt;
+      &lt;c&gt;<xv>bar</xv>&lt;/c&gt;
+      &lt;d <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>456</xv>&lt;/d&gt;
+      &lt;e&gt;
+         &lt;h&gt;<xv>baz</xv>&lt;/h&gt;
+      &lt;/e&gt;
+      &lt;f&gt;
+         &lt;string&gt;<xv>qux</xv>&lt;/string&gt;
+      &lt;/f&gt;
+      &lt;g&gt;
+         &lt;number&gt;<xv>789</xv>&lt;/number&gt;
+      &lt;/g&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+         </table>
+         
+         <h5 class='topic'>Beans with Map properties</h5>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Data type</th>
+               <th>JSON example</th>
+               <th>XML</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   <jk>class</jk> MyBean {
+      <jk>public</jk> Map&lt;String,String&gt; a;
+      <jk>public</jk> Map&lt;String,Number&gt; b;
+      <jk>public</jk> Map&lt;String,Object&gt; c; 
+   }
+               </td>
+               <td class='code'>
+   {
+      a: {
+         k1: <js>'foo'</js>
+      },
+      b: {
+         k2: 123
+      },
+      c: {
+         k3: <js>'bar'</js>,
+         k4: 456,
+         k5: <jk>true</jk>,
+         k6: <jk>null</jk>
+      }
+   }
+               </td>
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;a&gt;
+         &lt;k1&gt;<xv>foo</xv>&lt;/k1&gt;
+      &lt;/a&gt;
+      &lt;b&gt;
+         &lt;k2&gt;<xv>123</xv>&lt;/k2&gt;
+      &lt;/b&gt;
+      &lt;c&gt;
+         &lt;k3&gt;<xv>bar</xv>&lt;/k3&gt;
+         &lt;k4 <xa>_type</xa>=<xs>'number'</xs>&gt;<xv>456</xv>&lt;/k4&gt;
+         &lt;k5 <xa>_type</xa>=<xs>'boolean'</xs>&gt;<xv>true</xv>&lt;/k5&gt;
+         &lt;k6 <xa>_type</xa>=<xs>'null'</xs>/&gt;
+      &lt;/c&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+         </table>
+      </div>
+      
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.XmlDetails.XmlSerializers"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.16.2 - XML Serializers</h4>
+      <div class='topic'>
+         <p>
+            The <a href="org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSerializer</code></a> class is used to serialize POJOs into XML.
+         </p>  
+         <p>
+            The <a href="org/apache/juneau/xml/XmlDocSerializer.html" title="class in org.apache.juneau.xml"><code>XmlDocSerializer</code></a> class is the same, but serializes a <xt>&lt;?xml?&gt;</xt> header 
+            at the top of the file.
+         </p>
+         <p>
+            The XML serializers provide the following settings:
+         </p>
+         <ul class='doctree'>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.Common'>Common Properties</a>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.CommonSerializer'>Common Serializer Properties</a>
+            <li class='jc'><a href="org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSerializer</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#XML_addBeanTypeProperties"><code>XML_addBeanTypeProperties</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#XML_addNamespaceUrisToRoot"><code>XML_addNamespaceUrisToRoot</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#XML_autoDetectNamespaces"><code>XML_autoDetectNamespaces</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#XML_defaultNamespace"><code>XML_defaultNamespace</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#XML_enableNamespaces"><code>XML_enableNamespaces</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#XML_namespaces"><code>XML_namespaces</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#XML_xsNamespace"><code>XML_xsNamespace</code></a>
+            </ul>
+         </ul>
+         <p>
+            The following pre-configured serializers are provided for convenience:
+         </p>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/xml/XmlSerializer.html" title="class in org.apache.juneau.xml"><code>XmlSerializer</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT"><code>DEFAULT</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT_JUNEAU_NAMESPACE"><code>DEFAULT_JUNEAU_NAMESPACE</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT_NS"><code>DEFAULT_NS</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT_NS_SQ"><code>DEFAULT_NS_SQ</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT_NS_SQ_READABLE"><code>DEFAULT_NS_SQ_READABLE</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT_SQ"><code>DEFAULT_SQ</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT_SQ_READABLE"><code>DEFAULT_SQ_READABLE</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlSerializer.html#DEFAULT_XS_NAMESPACE"><code>DEFAULT_XS_NAMESPACE</code></a>            
+            </ul>
+         </ul>
+      </div>      
+      
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.XmlDetails.XmlParsers"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.16.3 - XML Parsers</h4>
+      <div class='topic'>
+         <p>
+            The <a href="org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml"><code>XmlParser</code></a> class is used to parse XML into POJOs.
+         </p>  
+         <p>
+            The XML parser provides the following settings:
+         </p>
+         <ul class='doctree'>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.Common'>Common Properties</a>
+            <li class='link'><a class='doclink' href='#juneau-marshall.ConfigurableProperties.CommonParser'>Common Parser Properties</a>
+            <li class='jc'><a href="org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml"><code>XmlParser</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlParser.html#XML_eventAllocator"><code>XML_eventAllocator</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlParser.html#XML_preserveRootElement"><code>XML_preserveRootElement</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlParser.html#XML_reporter"><code>XML_reporter</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlParser.html#XML_resolver"><code>XML_resolver</code></a>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlParser.html#XML_validating"><code>XML_validating</code></a>            
+            </ul>
+         </ul>
+         <p>
+            The following pre-configured parsers are provided for convenience:
+         </p>
+         <ul class='doctree'>
+            <li class='jc'><a href="org/apache/juneau/xml/XmlParser.html" title="class in org.apache.juneau.xml"><code>XmlParser</code></a>
+            <ul>
+               <li class='jf'><a href="org/apache/juneau/xml/XmlParser.html#DEFAULT"><code>DEFAULT</code></a>
+            </ul>
+         </ul>
+      </div>      
+      
+      <!-- ======================================================================================================= -->
+      <a id="juneau-marshall.XmlDetails.BeanTypeNameAnnotation"></a>
+      <h4 class='topic' onclick='toggle(this)'>2.16.4 - @Bean(typeName) Annotation</h4>
+      <div class='topic'>
+         <p>
+            The <a href="org/apache/juneau/annotation/Bean.html#typeName--"><code>@Bean.typeName()</code></a> annotation can be used to 
+            override the Juneau default name on bean elements. 
+            Types names serve two distinct purposes:
+         </p>
+         <ol>
+            <li>To override the element name.
+            <li>To serve as a class identifier so that the bean class can be inferred during parsing if it
+               cannot automatically be inferred through reflection.
+         </ol>
+         
+         <h5 class='figure'>Example</h5>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Data type</th>
+               <th>JSON example</th>
+               <th>Without annotation</th>
+               <th>With annotation</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(typeName=<js>"X"</js>)
+   <jk>class</jk> MyBean {
+      <jk>public</jk> String a;
+      <jk>public int</jk> b;
+   }  
+               </td>
+               <td class='code'>
+   {
+      a: <js>'foo'</js>,
+      b: 123
+   }
+               </td>
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;a&gt;<xv>foo</xv>&lt;/id&gt;
+      &lt;b&gt;<xv>123</xv>&lt;/name&gt;
+   &lt;/object&gt;
+               </xt></td>
+               <td class='code'><xt>
+   &lt;X&gt;
+      &lt;a&gt;<xv>foo</xv>&lt;/id&gt;
+      &lt;b&gt;<xv>123</xv>&lt;/name&gt;
+   &lt;/X&gt;
+               </xt></td>
+            </tr>
+         </table>
+         <p>
+            On bean properties, a <xa>_type</xa> attribute will be added if a type name is present and the bean 
+            class cannot be inferred through reflection.
+         </p>
+         <p>
+            In the following example, a type attribute is used on property 'b' but not property 'a' since
+            'b' is of type <code>Object</code> and therefore the bean class cannot be inferred.
+         </p>
+         
+         <h5 class='figure'>Example</h5>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Java</th>
+               <th>Without annotation</th>
+               <th>With annotation</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   <jk>class</jk> MyBean {
+      <jk>public</jk> BeanX a = <jk>new</jk> BeanX();
+      <jk>public</jk> Object b = <jk>new</jk> BeanX();
+   }
+   
+   <ja>@Bean</ja>(typeName=<js>"X"</js>)
+   <jk>class</jk> BeanX {
+      <jk>public</jk> String fx = <js>"foo"</js>;
+   }
+      
+               </td>
+               <td class='code'><xt>
+&lt;object&gt;
+   &lt;a&gt;
+      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+   &lt;/a&gt;
+   &lt;b&gt;
+      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+   &lt;/b&gt;
+&lt;/object&gt;
+               </xt></td>
+               <td class='code'><xt>
+&lt;object&gt;
+   &lt;a&gt;
+      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+   &lt;/a&gt;
+   &lt;b <xa>_type</xa>=<xs>'X'</xs>&gt;
+      &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+   &lt;/b&gt;
+&lt;/object&gt;
+               </xt></td>
+            </tr>
+         </table>
+         <ul class='doctree'>
+            <li class='info'>
+               <code>string</code>, <code>number</code>, <code>boolean</code>, <code>object</code>, 
+               <code>array</code>, and <code>null</code> are reserved keywords that cannot be used as type names.
+         </ul>
+         <p>
+            Beans with type names are often used in conjunction with the 
+            <a href="org/apache/juneau/annotation/Bean.html#beanDictionary--"><code>@Bean.beanDictionary()</code></a> and 
+            <a href="org/apache/juneau/annotation/BeanProperty.html#beanDictionary--"><code>@BeanProperty.beanDictionary()</code></a> 
+            annotations so that the beans can be resolved at parse time.  
+            <br>These annotations are not necessary during serialization, but are needed during parsing in order to 
+            resolve the bean types.
+         </p>
+         <p>
+            The following examples show how type names are used under various circumstances.  
+         </p>
+         <p>
+            Pay special attention to when <xa>_type</xa> attributes are and are not used.
+         </p>
+         
+         <h5 class='figure'>Examples</h5>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Java</th>
+               <th>XML</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
+   <jk>class</jk> BeanWithArrayPropertiesWithTypeNames {
+      <jk>public</jk> BeanX[] b1 = <jk>new</jk> BeanX[]{ 
+         <jk>new</jk> BeanX() 
+      };
+      <jk>public</jk> Object[] b2 = <jk>new</jk> BeanX[]{ 
+         <jk>new</jk> BeanX() 
+      };
+      <jk>public</jk> Object[] b3 = <jk>new</jk> Object[]{ 
+         <jk>new</jk> BeanX() 
+      };
+   }
+               </td>          
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;b1&gt;
+         &lt;X&gt;
+            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+         &lt;/X&gt;
+      &lt;/b1&gt;
+      &lt;b2&gt;
+         &lt;X&gt;
+            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+         &lt;/X&gt;
+      &lt;/b2&gt;
+      &lt;b3&gt;
+         &lt;X&gt;
+            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+         &lt;/X&gt;
+      &lt;/b3&gt;
+   &lt;/object&gt;
+               </xt></td>           
+            </tr>          
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
+   <jk>class</jk> BeanWith2dArrayPropertiesWithTypeNames {
+      <jk>public</jk> BeanX[][] b1 = <jk>new</jk> BeanX[][]{{
+         <jk>new</jk> BeanX()
+      }};
+      <jk>public</jk> Object[][] b2 = <jk>new</jk> BeanX[][]{{
+         <jk>new</jk> BeanX()
+      }};
+      <jk>public</jk> Object[][] b3 = <jk>new</jk> Object[][]{{
+         <jk>new</jk> BeanX()
+      }};
+   }
+               </td>          
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;b1&gt;
+         &lt;array&gt;
+            &lt;X&gt;
+               &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+            &lt;/X&gt;
+         &lt;/array&gt;
+      &lt;/b1&gt;
+      &lt;b2&gt;
+         &lt;array&gt;
+            &lt;X&gt;
+               &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+            &lt;/X&gt;
+         &lt;/array&gt;
+      &lt;/b2&gt;
+      &lt;b3&gt;
+         &lt;array&gt;
+            &lt;X&gt;
+               &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+            &lt;/X&gt;
+         &lt;/array&gt;
+      &lt;/b3&gt;
+   &lt;/object&gt;
+               </xt></td>           
+            </tr>    
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(beanDictionary={BeanX.<jk>class</jk>})
+   <jk>class</jk> BeanWithMapPropertiesWithTypeNames {
+      <jk>public</jk> Map&lt;String,BeanX&gt; b1 = <jk>new</jk> HashMap&lt;&gt;() {{ 
+         put(<js>"k1"</js>, <jk>new</jk> BeanX()); 
+      }};
+      <jk>public</jk> Map&lt;String,Object&gt; b2 = <jk>new</jk> HashMap&lt;&gt;() {{
+         put(<js>"k2"</js>, <jk>new</jk> BeanX());
+      }}
+   }
+               </td>          
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;b1&gt;
+         &lt;k1&gt;
+            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+         &lt;/k1&gt;
+      &lt;/b1&gt;
+      &lt;b2&gt;
+         &lt;k2 <xa>_type</xa>=<xs>'X'</xs>&gt;
+            &lt;fx&gt;<xv>foo</xv>&lt;/fx&gt;
+         &lt;/k2&gt;
+      &lt;/b2&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+         </table>
+         <p>
+            Bean type names are also used for resolution when abstract fields are used.
+            <br>The following examples show how they are used in a variety of circumstances.
+         </p>
+         <table class='styled' style='width:auto'>
+            <tr>
+               <th>Java</th>
+               <th>XML</th>
+            </tr>
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+   <jk>class</jk> BeanWithAbstractFields {
+      <jk>public</jk> A a = <jk>new</jk> A();
+      <jk>public</jk> IA ia = <jk>new</jk> A();
+      <jk>public</jk> AA aa = <jk>new</jk> A();
+      <jk>public</jk> Object o = <jk>new</jk> A();
+   }
+   
+   <jk>interface</jk> IA {}
+   
+   <jk>abstract class</jk> AA <jk>implements</jk> IA {}
+
+   <ja>@Bean</ja>(typeName=<js>"A"</js>)
+   <jk>class</jk> A <jk>extends</jk> AA {
+      <jk>public</jk> String fa = <js>"foo"</js>;
+   }
+               </td>          
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;a&gt;
+         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+      &lt;/a&gt;
+      &lt;ia <xa>_type</xa>=<xs>'A'</xs>&gt;
+         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+      &lt;/ia&gt;
+      &lt;aa <xa>_type</xa>=<xs>'A'</xs>&gt;
+         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+      &lt;/aa&gt;
+      &lt;o <xa>_type</xa>=<xs>'A'</xs>&gt;
+         &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+      &lt;/o&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+   <jk>class</jk> BeanWithAbstractArrayFields {
+      <jk>public</jk> A[] a = <jk>new</jk> A[]{<jk>new</jk> A()};
+      <jk>public</jk> IA[] ia1 = <jk>new</jk> A[]{<jk>new</jk> A()};
+      <jk>public</jk> IA[] ia2 = <jk>new</jk> IA[]{<jk>new</jk> A()};
+      <jk>public</jk> AA[] aa1 = <jk>new</jk> A[]{<jk>new</jk> A()};
+      <jk>public</jk> AA[] aa2 = <jk>new</jk> AA[]{<jk>new</jk> A()};
+      <jk>public</jk> Object[] o1 = <jk>new</jk> A[]{<jk>new</jk> A()};
+      <jk>public</jk> Object[] o2 = <jk>new</jk> Object[]{<jk>new</jk> A()};
+   }
+               </td>          
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;a&gt;
+         &lt;A&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/A&gt;
+      &lt;/a&gt;
+      &lt;ia1&gt;
+         &lt;A&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/A&gt;
+      &lt;/ia1&gt;
+      &lt;ia2&gt;
+         &lt;A&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/A&gt;
+      &lt;/ia2&gt;
+      &lt;aa1&gt;
+         &lt;A&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/A&gt;
+      &lt;/aa1&gt;
+      &lt;aa2&gt;
+         &lt;A&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/A&gt;
+      &lt;/aa2&gt;
+      &lt;o1&gt;
+         &lt;A&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/A&gt;
+      &lt;/o1&gt;
+      &lt;o2&gt;
+         &lt;A&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/A&gt;
+      &lt;/o2&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+   <jk>class</jk> BeanWithAbstractMapFields {
+      <jk>public</jk> Map&lt;String,A&gt; a = <jk>new</jk> HashMap&lt;&gt;() {{
+         put(<js>"k1"</js>, <jk>new</jk> A());
+      }};
+      <jk>public</jk> Map&lt;String,AA&gt; b = <jk>new</jk> HashMap&lt;&gt;() {{
+         put(<js>"k2"</js>, <jk>new</jk> A());
+      }};
+      <jk>public</jk> Map&lt;String,Object&gt; c = <jk>new</jk> HashMap&lt;&gt;() {{
+         put(<js>"k3"</js>, <jk>new</jk> A());
+      }};
+   }
+               </td>          
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;a&gt;
+         &lt;k1&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/k1&gt;
+      &lt;/a&gt;
+      &lt;b&gt;
+         &lt;k2 <xa>_type</xa>=<xs>'A'</xs>&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/k2&gt;
+      &lt;/b&gt;
+      &lt;c&gt;
+         &lt;k3 <xa>_type</xa>=<xs>'A'</xs>&gt;
+            &lt;fa&gt;<xv>foo</xv>&lt;/fa&gt;
+         &lt;/k3&gt;
+      &lt;/c&gt;
+   &lt;/object&gt;
+               </xt></td>
+            </tr>
+            <tr>
+               <td class='code'>
+   <ja>@Bean</ja>(beanDictionary={A.<jk>class</jk>})
+   <jk>class</jk> BeanWithAbstractMapArrayFields {
+      <jk>public</jk> Map&lt;String,A[]&gt; a = <jk>new</jk> LinkedHashMap&lt;&gt;() {{
+         put(<js>"a1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
+      }};
+      <jk>public</jk> Map&lt;String,IA[]&gt; ia = <jk>new</jk> LinkedHashMap&lt;&gt;() {{
+         put(<js>"ia1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
+         put(<js>"ia2"</js>, <jk>new</jk> IA[]{<jk>new</jk> A()});
+      }};
+      <jk>public</jk> Map&lt;String,AA[]&gt; aa = <jk>new</jk> LinkedHashMap&lt;&gt;() {{
+         put(<js>"aa1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
+         put(<js>"aa2"</js>, <jk>new</jk> AA[]{<jk>new</jk> A()});
+      }};
+      <jk>public</jk> Map&lt;String,Object[]&gt; o = <jk>new</jk>LinkedHashMap&lt;&gt;() {{
+         put(<js>"o1"</js>, <jk>new</jk> A[]{<jk>new</jk> A()});
+         put(<js>"o2"</js>, <jk>new</jk> AA[]{<jk>new</jk> A()});
+      }};
+   }
+               </td>          
+               <td class='code'><xt>
+   &lt;object&gt;
+      &lt;a&gt;
+         &lt;a1&gt;
+            &lt;A&gt;
... 3100 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
jamesbognar@apache.org.

Mime
View raw message