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

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


The following commit(s) were added to refs/heads/master by this push:
     new b0d6392  Javadocs
b0d6392 is described below

commit b0d639295d31f62874526ae87a22812204f20cec
Author: JamesBognar <[email protected]>
AuthorDate: Sat Oct 30 15:05:02 2021 -0400

    Javadocs
---
 juneau-doc/docs/Topics/01.Overview.html            |   4 +-
 .../docs/Topics/01.Overview/01.CoreOverview.html   |  22 +-
 .../docs/Topics/01.Overview/02.DtoOverview.html    |  10 +-
 .../docs/Topics/01.Overview/03.ConfigOverview.html |   2 +-
 .../docs/Topics/01.Overview/04.RestOverview.html   |   2 +-
 .../Topics/01.Overview/05.RestServerOverview.html  |  12 +-
 .../Topics/01.Overview/06.RestClientOverview.html  |   4 +-
 .../12.DynamicallyAppliedAnnotations.html          |  18 +-
 .../02.juneau-marshall/13.BeanDictionaries.html    |  17 +-
 .../Topics/02.juneau-marshall/14.VirtualBeans.html |   6 +-
 .../Topics/02.juneau-marshall/15.Recursion.html    |  12 +-
 .../17.ReadingContinuousStreams.html               |  10 +-
 .../02.juneau-marshall/18.MarshallingUris.html     | 104 ++++-----
 .../02.juneau-marshall/19.JacksonComparison.html   |   9 +-
 juneau-doc/src/main/javadoc/overview.html          | 258 ++++++++++-----------
 .../src/main/javadoc/resources/fragments/toc.html  |  24 +-
 .../src/main/javadoc/resources/juneau-doc.css      |  59 +++--
 17 files changed, 274 insertions(+), 299 deletions(-)

diff --git a/juneau-doc/docs/Topics/01.Overview.html 
b/juneau-doc/docs/Topics/01.Overview.html
index aacfcc0..4493b37 100644
--- a/juneau-doc/docs/Topics/01.Overview.html
+++ b/juneau-doc/docs/Topics/01.Overview.html
@@ -19,7 +19,7 @@
 <!-- === ABOUT 
=================================================================================================
 -->
 <!-- 
===========================================================================================================
 -->
 
-<h5 class='toc'>About</h5>
+<h5 class='topic'>About</h5>
 <p>
        Apache Juneau™ is a single cohesive Java ecosystem for marshalling Java 
objects to a wide variety of 
        language types and creating annotation-based REST server and client 
APIs.
@@ -243,7 +243,7 @@
 <!-- === FEATURES 
==============================================================================================
 -->
 <!-- 
===========================================================================================================
 -->
 
-<h5 class='toc'>Features</h5>
+<h5 class='topic'>Features</h5>
 <div class='topic'>
        <ul class='spaced-list'>
                <li>
diff --git a/juneau-doc/docs/Topics/01.Overview/01.CoreOverview.html 
b/juneau-doc/docs/Topics/01.Overview/01.CoreOverview.html
index fac6305..c3c0ca3 100644
--- a/juneau-doc/docs/Topics/01.Overview/01.CoreOverview.html
+++ b/juneau-doc/docs/Topics/01.Overview/01.CoreOverview.html
@@ -15,7 +15,7 @@
 
 {title:'Core Overview', created:'9.0.0'} 
 
-<h5 class='toc'>Marshalling APIs</h5>
+<h5 class='topic'>Marshalling APIs</h5>
 <div class='topic'>
        <p>
                The <c>juneau-marshall</c> library includes easy-to-use and 
highly customizable serializers and parsers based around
@@ -91,7 +91,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Marshaller Builders</h5>
+<h5 class='topic'>Marshaller Builders</h5>
 <div class='topic'>
        <p>
                Serializers and parsers are builder-based using fluent methods 
allowing you to quickly create, clone, and modify them
@@ -147,7 +147,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Bean Annotations</h5>
+<h5 class='topic'>Bean Annotations</h5>
 <div class='topic'>
        <p>
                Beans and POJO classes, methods, fields, and constructors can 
also be annotated with a variety of annotations to customize how they are 
marshalled:
@@ -172,7 +172,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Configuration Annotations</h5>
+<h5 class='topic'>Configuration Annotations</h5>
 <div class='topic'>
        <p>
                Serializers and parsers can also be configured using 
annotations.
@@ -216,7 +216,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Simplified JSON Marshalling</h5>
+<h5 class='topic'>Simplified JSON Marshalling</h5>
 <div class='topic'>
        <p>
                The {@link oaj.json.SimpleJsonSerializer} class can be used to 
serialized POJOs into Simplified JSON notation.
@@ -276,7 +276,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>UON Marshalling</h5>
+<h5 class='topic'>UON Marshalling</h5>
 <div class='topic'>
        <p>
                The Marshalling API also supports UON (URL-Encoded Object 
Notation).
@@ -309,7 +309,7 @@
                <li class='link'>{@doc UonDetails UON Details} for more 
information.
        </ul>
 </div>
-<h5 class='toc'>OpenAPI Marshalling</h5>
+<h5 class='topic'>OpenAPI Marshalling</h5>
 <div class='topic'>
        <p>
                The Marshalling API also supports schema-based OpenAPI 
serialization.
@@ -348,7 +348,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>OMap/OList</h5>
+<h5 class='topic'>OMap/OList</h5>
 <div class='topic'>
        <p>
                The {@link oaj.collections.OMap} and {@link 
oaj.collections.OList} collections classes allow you
@@ -377,7 +377,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Serializer and Parser Sets</h5>
+<h5 class='topic'>Serializer and Parser Sets</h5>
 <div class='topic'>
        <p>
                <code>SerializerSet</code> and <code>ParserSet</code> classes 
allow serializers and parsers 
@@ -414,7 +414,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>SVL Variables</h5>
+<h5 class='topic'>SVL Variables</h5>
 <div class='topic'>
        <p>
                The {@link oaj.svl} package defines an API for a language 
called "Simple Variable Language".
@@ -440,7 +440,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Assertions API</h5>
+<h5 class='topic'>Assertions API</h5>
 <div class='topic'>
        <p>
                The {@link oaj.assertions} package in Juneau is a powerful API 
for performing fluent style assertions.
diff --git a/juneau-doc/docs/Topics/01.Overview/02.DtoOverview.html 
b/juneau-doc/docs/Topics/01.Overview/02.DtoOverview.html
index 8b367a8..c8aa4c3 100644
--- a/juneau-doc/docs/Topics/01.Overview/02.DtoOverview.html
+++ b/juneau-doc/docs/Topics/01.Overview/02.DtoOverview.html
@@ -15,7 +15,7 @@
 
 {title:'DTO Library Overview', created:'9.0.0'} 
 
-<h5 class='toc'>DTO Libraries</h5>
+<h5 class='topic'>DTO Libraries</h5>
 <div class='topic'>
        <p>
                The <c>juneau-dto</c> library contains several predefined POJOs 
for generating commonly-used document types that
@@ -23,7 +23,7 @@
        </p>
 </div>
 
-<h5 class='toc'>HTML5</h5>
+<h5 class='topic'>HTML5</h5>
 <div class='topic'>
        <p>
                The Juneau HTML5 DTOs are simply beans with fluent-style 
setters that allow you to quickly construct HTML
@@ -70,7 +70,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>ATOM</h5>
+<h5 class='topic'>ATOM</h5>
 <div class='topic'>
        <p>
                The Juneau ATOM feed DTOs are simply beans with fluent-style 
setters.
@@ -124,7 +124,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Swagger</h5>
+<h5 class='topic'>Swagger</h5>
 <div class='topic'>
        <p>
                The Juneau Swagger DTOs are simply beans with fluent-style 
setters that allow you to quickly construct 
@@ -185,7 +185,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>SwaggerUI</h5>
+<h5 class='topic'>SwaggerUI</h5>
 <div class='topic'>
        <p>
                The {@link oaj.dto.swagger.ui.SwaggerUI} class is a DTO class 
for generating Swagger user interfaces
diff --git a/juneau-doc/docs/Topics/01.Overview/03.ConfigOverview.html 
b/juneau-doc/docs/Topics/01.Overview/03.ConfigOverview.html
index 6a49505..7b1aa7f 100644
--- a/juneau-doc/docs/Topics/01.Overview/03.ConfigOverview.html
+++ b/juneau-doc/docs/Topics/01.Overview/03.ConfigOverview.html
@@ -15,7 +15,7 @@
 
 {title:'Config API Overview', created:'9.0.0'} 
 
-<h5 class='toc'>Config API</h5>
+<h5 class='topic'>Config API</h5>
 <div class='topic'>
        <p>
                The <c>juneau-config</c> library contains a powerful API for 
creating and using INI-style config files.
diff --git a/juneau-doc/docs/Topics/01.Overview/04.RestOverview.html 
b/juneau-doc/docs/Topics/01.Overview/04.RestOverview.html
index db72e41..a7a0a83 100644
--- a/juneau-doc/docs/Topics/01.Overview/04.RestOverview.html
+++ b/juneau-doc/docs/Topics/01.Overview/04.RestOverview.html
@@ -15,7 +15,7 @@
 
 {title:'REST Overview', created:'9.0.0'} 
 
-<h5 class='toc'>REST Server/Client APIs</h5>
+<h5 class='topic'>REST Server/Client APIs</h5>
 <div class='topic'>
        <p>
                The {@doc juneau-rest-server juneau-rest-server} and {@doc 
juneau-rest-client juneau-rest-client} libraries
diff --git a/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html 
b/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html
index 8012dab..d53b26e 100644
--- a/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html
+++ b/juneau-doc/docs/Topics/01.Overview/05.RestServerOverview.html
@@ -15,7 +15,7 @@
 
 {title:'REST Server Overview', created:'9.0.0'} 
 
-<h5 class='toc'>@Rest-Annotated Resources</h5>
+<h5 class='topic'>@Rest-Annotated Resources</h5>
 <div class='topic'>
        <p>
                A REST resource is simply a Java class annotated with {@link 
oajr.annotation.Rest}.
@@ -72,7 +72,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Children</h5>
+<h5 class='topic'>REST Children</h5>
 <div class='topic'>
        <p>
                Child Resources are REST servlets or objects that are linked to 
parent resources through the 
@@ -111,7 +111,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Group Pages</h5>
+<h5 class='topic'>REST Group Pages</h5>
 <div class='topic'>
        <p>
                The {@link oajr.BasicRestServletGroup} class provides a default 
"router" page for 
@@ -154,7 +154,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Resource Methods</h5>
+<h5 class='topic'>REST Resource Methods</h5>
 <div class='topic'>
        <p>
                The real power behind the REST server API is the ability to 
define Java methods as REST endpoints.
@@ -229,7 +229,7 @@
        </ul>
 </div>
        
-<h5 class='toc'>Deploying as a Servlet</h5>
+<h5 class='topic'>Deploying as a Servlet</h5>
 <div class='topic'>
        <p>
                The {@link oajr.RestServlet} class is the entry point for your 
REST resources.
@@ -251,7 +251,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Deploying in Spring Boot</h5>
+<h5 class='topic'>Deploying in Spring Boot</h5>
 <div class='topic'>
        <p>
                The {@link oajr.springboot.SpringRestServlet} class is 
typically entry point for your REST resources
diff --git a/juneau-doc/docs/Topics/01.Overview/06.RestClientOverview.html 
b/juneau-doc/docs/Topics/01.Overview/06.RestClientOverview.html
index a17ee28..516868d 100644
--- a/juneau-doc/docs/Topics/01.Overview/06.RestClientOverview.html
+++ b/juneau-doc/docs/Topics/01.Overview/06.RestClientOverview.html
@@ -15,7 +15,7 @@
 
 {title:'REST Client Overview', created:'9.0.0'} 
 
-<h5 class='toc'>REST Client</h5>
+<h5 class='topic'>REST Client</h5>
 <div class='topic'>
        <p>
                Built upon the feature-rich Apache HttpClient library, the 
Juneau RestClient API adds support for fluent-style
@@ -39,7 +39,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Testing Framework</h5>
+<h5 class='topic'>REST Testing Framework</h5>
 <div class='topic'>
        <p>
                The {@link oajr.mock.MockRestClient} class is used for 
performing serverless unit testing of {@link oajr.annotation.Rest 
@Rest}-annotated
diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/12.DynamicallyAppliedAnnotations.html
 
b/juneau-doc/docs/Topics/02.juneau-marshall/12.DynamicallyAppliedAnnotations.html
index e8f80f6..e240183 100644
--- 
a/juneau-doc/docs/Topics/02.juneau-marshall/12.DynamicallyAppliedAnnotations.html
+++ 
b/juneau-doc/docs/Topics/02.juneau-marshall/12.DynamicallyAppliedAnnotations.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Dynamically Applied Annotations', created:'8.1.3'} 
+{title:'Dynamically Applied Annotations', created:'8.1.3', updated:'9.0.0'} 
 
 <p>
        In the section {@doc Transforms}, you were introduced to annotations 
that can be applied to bean
@@ -26,17 +26,21 @@
        <jk>public class</jk> Address { ... }
 </p>
 <p>
-       An alternate way of applying these annotations is using the 
<ja>@XConfig</ja> annotations introduced in section
-       {@doc ConfigurableAnnotations}.  
+       An alternate way of applying these annotations is to attach them to 
unrelated classes and methods and then
+       tell your serializer or parser where to find them.  
 </p>
 <p class='bpcode w800'>
        <jc>// Unannotated class.</jc>
        <jk>public class</jk> Address { ... }
 
-       <ja>@Bean</ja>(on=<js>"Address"</js>, 
properties=<js>"street,city,state"</js>)
+       <ja>@Bean</ja>(onClass=Address.<jk>class</jk>, 
properties=<js>"street,city,state"</js>)
        <jk>public static class</jk> DummyClass {}
 
-       WriterSerializer <jv>serializer</jv> = 
JsonSerializer.<jsm>create</jsm>().applyAnnotations(DummyClass.<jk>class</jk>).build();
+       WriterSerializer <jv>serializer</jv> = JsonSerializer
+               .<jsm>create</jsm>()
+               .applyAnnotations(DummyClass.<jk>class</jk>)
+               .build();
+               
        String <jv>json</jv> = 
<jv>serializer</jv>.toString(<jv>addressBean</jv>);
 </p>
 <p>
@@ -50,11 +54,11 @@
 </p>
 <p class='bpcode w800'>
        <ja>@RestGet</ja> 
-       <ja>@Bean</ja>(on=<js>"Address"</js>, 
properties=<js>"street,city,state"</js>)
+       <ja>@Bean</ja>(onClass=Address.<jk>class</jk>, 
properties=<js>"street,city,state"</js>)
        <jk>public</jk> List&lt;Address&gt; getAddresses() {}
 </p>
 <p>
-       Any Juneau annotation that has an <c>on()</c> method can be applied 
dynamically this way.
+       Any Juneau annotation that has an <c>on()/onClass()</c> method can be 
applied dynamically this way.
        These include:
 </p>
 <ul>
diff --git a/juneau-doc/docs/Topics/02.juneau-marshall/13.BeanDictionaries.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/13.BeanDictionaries.html
index 8d614dd..893e8bb 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/13.BeanDictionaries.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/13.BeanDictionaries.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Bean Names and Dictionaries'}
+{title:'Bean Names and Dictionaries', updated:'9.0.0'}
 
 <p>
        While parsing into beans, Juneau attempts to determine the class types 
of bean properties through 
@@ -90,8 +90,6 @@
                - On individual bean properties through the annotation.
        <li class='ja'>{@link oaj.annotation.Bean#dictionary() 
Bean(dictionary)} 
                - On all properties on a bean and all subclasses.
-       <li class='jf'>{@del oaj.BeanContext#BEAN_beanDictionary} 
-               - Configuration property on serializers and parsers.
        <li class='jm'>{@link oaj.BeanContext.Builder#beanDictionary(Class...)}
                - Builder method on serializers and parsers.
 </ul>
@@ -111,13 +109,6 @@
                .dictionary(Foo.<jk>class</jk>, Bar.<jk>class</jk>)
                .build();
        
-       <jc>// Same, but use property.</jc>
-       ReaderParser <jv>parser</jv> = JsonParser
-               .<jsm>create</jsm>()
-               .addTo(<jsf>BEAN_beanDictionary</jsf>, Foo.<jk>class</jk>)
-               .addTo(<jsf>BEAN_beanDictionary</jsf>, Bar.<jk>class</jk>)
-               .build();
-
        <jc>// Use the predefined HTML5 bean dictionary which is a 
BeanDictionaryList.</jc>
        ReaderParser <jv>parser</jv> = HtmlParser
                .<jsm>create</jsm>()
@@ -130,8 +121,6 @@
 <ul class='javatree'>
        <li class='ja'>{@link oaj.annotation.Bean#typePropertyName() 
Bean(typePropertyName)} 
                - On individual beans through the annotation.
-       <li class='jf'>{@del oaj.BeanContext#BEAN_typePropertyName} 
-               - Configuration property on serializers and parsers.
        <li class='jm'>{@link oaj.BeanContext.Builder#typePropertyName(String)} 
                - Builder method on serializers and parsers.
 </ul>
@@ -165,6 +154,6 @@
 <div class='info'>
        Serialized type names are DISABLED by default.
        They must be enabled on the serializer using the 
-       {@del oaj.serializer.Serializer#SERIALIZER_addBeanTypes} 
-       configuration property.
+       {@link oaj.serializer.Serializer.Builder#addBeanTypes()} 
+       setting.
 </div>
diff --git a/juneau-doc/docs/Topics/02.juneau-marshall/14.VirtualBeans.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/14.VirtualBeans.html
index 5342f2a..6624771 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/14.VirtualBeans.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/14.VirtualBeans.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Virtual Beans', flags:'todo'}
+{title:'Virtual Beans', updated:'9.0.0'}
 
 <p>
        The {@link oaj.BeanContext.Builder#disableInterfaceProxies()} setting 
(enabled by default) allows
@@ -52,12 +52,12 @@
        Getter and setter values can be any {@doc PojoCategories parsable} 
values, even other virtual beans.
 </p>
 <p>
-       Under-the-covers, a virtual bean is simply a proxy interface on top of 
an existing <c>BeanMap</c>
+       Under-the-covers, a virtual bean is simply a proxy interface on top of 
an existing {@link oaj.BeanMap}
        instance.  From a programmatic point-of-view, they're indistinguishable 
from real beans, and can be 
        manipulated and serialized like any other bean.
 </p>   
 <p>
-       Virtual beans can also be created programmatically using the 
<c>BeanContext</c> class:
+       Virtual beans can also be created programmatically using the {@link 
oaj.BeanContext} class:
 </p>
 <p class='bpcode w800'>
        Address <jv>address</jv> = 
BeanContext.<jsf>DEFAULT</jsf>.createSession().newBean(Address.<jk>class</jk>);
diff --git a/juneau-doc/docs/Topics/02.juneau-marshall/15.Recursion.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/15.Recursion.html
index a1e0db9..5321ded 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/15.Recursion.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/15.Recursion.html
@@ -13,18 +13,18 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Non-Tree Models and Recursion Detection'}
+{title:'Non-Tree Models and Recursion Detection', updated:'9.0.0'}
 
 <p>
        The Juneau Serializer API 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...).
        If you try to serialize models with loops, you will usually cause a 
<c>StackOverflowError</c> to 
-       be thrown (if {@del oaj.BeanTraverseContext#BEANTRAVERSE_maxDepth} is 
not reached 
+       be thrown (if {@link oaj.BeanTraverseContext.Builder#maxDepth(int)} is 
not reached 
        first).
 </p>
 <p>
        If you still want to use the Juneau serializers on such models, Juneau 
provides the 
-       {@del oaj.BeanTraverseContext#BEANTRAVERSE_detectRecursions} setting.
+       {@link oaj.BeanTraverseContext.Builder#detectRecursions()} setting.
        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>
@@ -49,7 +49,11 @@
 </p>
 <p class='bpcode w800'>
        <jc>// Clone an existing serializer and set property for detecting 
recursions.</jc>
-       JsonSerializer <jv>serializer</jv> = 
SimpleJsonSerializer.<jsf>DEFAULT_READABLE</jsf>.copy().detectRecursions(<jk>true</jk>).build();
+       JsonSerializer <jv>serializer</jv> = SimpleJsonSerializer
+               .<jsf>DEFAULT_READABLE</jsf>
+               .copy()
+               .detectRecursions()
+               .build();
 
        <jc>// Create a recursive loop.</jc>
        A <jv>a</jv> = <jk>new</jk> A();
diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/17.ReadingContinuousStreams.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/17.ReadingContinuousStreams.html
index 1260376..23f5873 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/17.ReadingContinuousStreams.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/17.ReadingContinuousStreams.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Reading Continuous Streams'}
+{title:'Reading Continuous Streams', updated:'9.0.0'}
 
 <p>
        The following parsers can be configured to read continuous streams of 
objects from the same input stream:
@@ -25,7 +25,7 @@
 </ul>
 <p>
        The {@link oaj.json.JsonParser} and {@link oaj.uon.UonParser}
-       classes can read continuous streams by using the {@del 
oaj.parser.Parser#PARSER_unbuffered PARSER_unbuffered}
+       classes can read continuous streams by using the {@link 
oaj.parser.Parser.Builder#unbuffered()}
        setting.
        This prevents the parsers from using an internal buffer that would read 
past the end of the currently
        parsed POJO.
@@ -53,9 +53,9 @@
        For obvious reasons, do not use the following properties when reading 
continuous streams:
 </p>
 <ul class='javatree'>
-       <li class='jf'>{@del oaj.json.JsonParser#JSON_validateEnd}
-       <li class='jf'>{@del oaj.uon.UonParser#UON_validateEnd}
-       <li class='jf'>{@del oaj.parser.Parser#PARSER_autoCloseStreams}
+       <li class='jm'>{@link oaj.json.JsonParser.Builder#validateEnd()}
+       <li class='jm'>{@link oaj.uon.UonParser.Builder#validateEnd()}
+       <li class='jm'>{@link oaj.parser.Parser.Builder#autoCloseStreams()}
 </ul>
 <p>
        The {@link oaj.msgpack.MsgPackParser} class doesn't use any internal 
buffering to begin with, so it can be used with
diff --git a/juneau-doc/docs/Topics/02.juneau-marshall/18.MarshallingUris.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/18.MarshallingUris.html
index 93fc2be..2f05998 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/18.MarshallingUris.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/18.MarshallingUris.html
@@ -13,82 +13,74 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'URIs'}
+{title:'URIs', updated:'9.0.0'}
 
 <p>
        Juneau serializers have sophisticated support for transforming relative 
URIs to absolute form.
 </p>
 <p>
-       The classes and settings that control the behavior are:
-</p>
-<ul class='javatree'>
-       <li class='jc'>{@link oaj.UriResolver} 
-       <li class='jc'>{@link oaj.UriContext}
-       <li class='jc'>{@link oaj.UriRelativity}
-       <li class='jc'>{@link oaj.UriResolution}
-       <li class='jac'>{@link oaj.serializer.Serializer}
-       <ul>
-               <li class='jf'>{@del 
oaj.serializer.Serializer#SERIALIZER_uriContext}
-               <li class='jf'>{@del 
oaj.serializer.Serializer#SERIALIZER_uriRelativity}
-               <li class='jf'>{@del 
oaj.serializer.Serializer#SERIALIZER_uriResolution}
-       </ul> 
-</ul>
-<p>
        The following example shows a bean containing URIs of various forms and 
how they end up serialized. 
 </p>
 <p class='bpcode w800'>
        <jc>// Our bean with properties containing various kinds of URIs.</jc>
        <jk>public class</jk> TestURIs {
                <jk>public</jk> URI
-                       <jf>f1a</jf> = 
URI.<jsm>create</jsm>(<js>"http://www.apache.org/f1a";</js>),
-                       <jf>f1b</jf> = URI.<jsm>create</jsm>(<js>"/f1b"</js>),
-                       <jf>f1c</jf> = 
URI.<jsm>create</jsm>(<js>"/f1c/x/y"</js>),
-                       <jf>f1d</jf> = URI.<jsm>create</jsm>(<js>"f1d"</js>),
-                       <jf>f1e</jf> = 
URI.<jsm>create</jsm>(<js>"f1e/x/y"</js>),
-                       <jf>f1f</jf> = URI.<jsm>create</jsm>(<js>""</js>),
-                       <jf>f2a</jf> = 
URI.<jsm>create</jsm>(<js>"context:/f2a/x"</js>),
-                       <jf>f2b</jf> = 
URI.<jsm>create</jsm>(<js>"context:/f2b"</js>),
-                       <jf>f2c</jf> = 
URI.<jsm>create</jsm>(<js>"context:/"</js>),
-                       <jf>f2d</jf> = 
URI.<jsm>create</jsm>(<js>"context:/.."</js>),
-                       <jf>f3a</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/f3a/x"</js>),
-                       <jf>f3b</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/f3b"</js>),
-                       <jf>f3c</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/"</js>),
-                       <jf>f3d</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/.."</js>),
-                       <jf>f4a</jf> = 
URI.<jsm>create</jsm>(<js>"request:/f4a/x"</js>),
-                       <jf>f4b</jf> = 
URI.<jsm>create</jsm>(<js>"request:/f4b"</js>),
-                       <jf>f4c</jf> = 
URI.<jsm>create</jsm>(<js>"request:/"</js>),
-                       <jf>f4d</jf> = 
URI.<jsm>create</jsm>(<js>"request:/.."</js>);;
+                       <jf>a</jf> = 
URI.<jsm>create</jsm>(<js>"http://www.apache.org/a";</js>),
+                       <jf>b</jf> = URI.<jsm>create</jsm>(<js>"/b"</js>),
+                       <jf>c</jf> = URI.<jsm>create</jsm>(<js>"/c/x/y"</js>),
+                       <jf>d</jf> = URI.<jsm>create</jsm>(<js>"d"</js>),
+                       <jf>e</jf> = URI.<jsm>create</jsm>(<js>"e/x/y"</js>),
+                       <jf>f</jf> = URI.<jsm>create</jsm>(<js>""</js>),
+                       <jf>g</jf> = 
URI.<jsm>create</jsm>(<js>"context:/g/x"</js>),
+                       <jf>h</jf> = 
URI.<jsm>create</jsm>(<js>"context:/h"</js>),
+                       <jf>i</jf> = 
URI.<jsm>create</jsm>(<js>"context:/"</js>),
+                       <jf>j</jf> = 
URI.<jsm>create</jsm>(<js>"context:/.."</js>),
+                       <jf>k</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/k/x"</js>),
+                       <jf>l</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/l"</js>),
+                       <jf>m</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/"</js>),
+                       <jf>n</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/.."</js>),
+                       <jf>o</jf> = 
URI.<jsm>create</jsm>(<js>"request:/o/x"</js>),
+                       <jf>p</jf> = 
URI.<jsm>create</jsm>(<js>"request:/p"</js>),
+                       <jf>q</jf> = 
URI.<jsm>create</jsm>(<js>"request:/"</js>),
+                       <jf>r</jf> = 
URI.<jsm>create</jsm>(<js>"request:/.."</js>);;
        }       
        
        <jc>// Create a serializer.</jc>
        WriterSerializer <jv>serializer</jv> = JsonSerializer
                <jsm>create</jsm>()
                .simple()
-               
.uriContext(<js>"{authority:'http://foo.com:123',contextRoot:'/myContext',servletPath:'/myServlet',pathInfo:'/myPath'}"</js>)
+               .uriContext(
+                       UriContext.of(
+                               <js>"http://foo.com:123";</js>,  <jc>// 
Authority</jc>
+                               <js>"/myContext"</js>,  <jc>// Context root</jc>
+                               <js>"/myServlet"</js>,  <jc>// Servlet path</jc>
+                               <js>"/myPath"</js>  <jc>// Path info</jc>
+                       )
+               )
                .uriResolution(<jsf>ABSOLUTE</jsf>)
                .uriRelativity(<jsf>RESOURCE</jsf>)
                .build();
                
        <jc>// Produces:</jc>
        <jc>// {</jc>
-       <jc>//  f1a:'http://www.apache.org/f1a',</jc>
-       <jc>//  f1b:'http://foo.com:123/f1b',</jc>
-       <jc>//  f1c:'http://foo.com:123/f1c/x/y',</jc>
-       <jc>//  f1d:'http://foo.com:123/myContext/myServlet/f1d',</jc>
-       <jc>//  f1e:'http://foo.com:123/myContext/myServlet/f1e/x/y',</jc>
-       <jc>//  f1f:'http://foo.com:123/myContext/myServlet',</jc>
-       <jc>//  f2a:'http://foo.com:123/myContext/f2a/x',</jc>
-       <jc>//  f2b:'http://foo.com:123/myContext/f2b',</jc>
-       <jc>//  f2c:'http://foo.com:123/myContext',</jc>
-       <jc>//  f2d:'http://foo.com:123'</jc>
-       <jc>//  f3a:'http://foo.com:123/myContext/myServlet/f3a/x',</jc>
-       <jc>//  f3b:'http://foo.com:123/myContext/myServlet/f3b',</jc>
-       <jc>//  f3c:'http://foo.com:123/myContext/myServlet',</jc>
-       <jc>//  f3d:'http://foo.com:123/myContext',</jc>
-       <jc>//  f4a:'http://foo.com:123/myContext/myServlet/myPath/f4a/x',</jc>
-       <jc>//  f4b:'http://foo.com:123/myContext/myServlet/myPath/f4b',</jc>
-       <jc>//  f4c:'http://foo.com:123/myContext/myServlet/myPath',</jc>
-       <jc>//  f4d:'http://foo.com:123/myContext/myServlet'</jc>
+       <jc>//  a:'http://www.apache.org/a',</jc>
+       <jc>//  b:'http://foo.com:123/b',</jc>
+       <jc>//  c:'http://foo.com:123/c/x/y',</jc>
+       <jc>//  d:'http://foo.com:123/myContext/myServlet/d',</jc>
+       <jc>//  e:'http://foo.com:123/myContext/myServlet/e/x/y',</jc>
+       <jc>//  f:'http://foo.com:123/myContext/myServlet',</jc>
+       <jc>//  g:'http://foo.com:123/myContext/g/x',</jc>
+       <jc>//  h:'http://foo.com:123/myContext/h',</jc>
+       <jc>//  i:'http://foo.com:123/myContext',</jc>
+       <jc>//  j:'http://foo.com:123'</jc>
+       <jc>//  k:'http://foo.com:123/myContext/myServlet/k/x',</jc>
+       <jc>//  l:'http://foo.com:123/myContext/myServlet/l',</jc>
+       <jc>//  m:'http://foo.com:123/myContext/myServlet',</jc>
+       <jc>//  n:'http://foo.com:123/myContext',</jc>
+       <jc>//  o:'http://foo.com:123/myContext/myServlet/myPath/o/x',</jc>
+       <jc>//  p:'http://foo.com:123/myContext/myServlet/myPath/p',</jc>
+       <jc>//  q:'http://foo.com:123/myContext/myServlet/myPath',</jc>
+       <jc>//  r:'http://foo.com:123/myContext/myServlet'</jc>
        <jc>// }</jc>
        String <jv>json</jv> = <jv>serializer</jv>.serialize(<jk>new</jk> 
TestURIs());
 </p>
@@ -96,9 +88,9 @@
        URI resolution is controlled by the following settings:
 </p>
 <ul class='javatree'>
-       <li class='jf'>{@del oaj.serializer.Serializer#SERIALIZER_uriContext}
+       <li class='jm'>{@link 
oaj.serializer.Serializer.Builder#uriContext(UriContext)}
                <br>Setting that defines the URI contextual information used to 
resolve relative URIs.
-       <li class='jf'>{@del oaj.serializer.Serializer#SERIALIZER_uriRelativity}
+       <li class='jm'>{@link 
oaj.serializer.Serializer.Builder#uriRelativity(UriRelativity)}
                <br>Setting that defines how relative URIs should be 
interpreted.
                <br>Possible values:
                <ul>
@@ -109,7 +101,7 @@
                                <br>Relative URIs should be considered relative 
to the request URI.
                                <br>(e.g. 
<js>"http://host:port/context-root/servlet-path/path-info";</js>).
                </ul>
-       <li class='jf'>{@del oaj.serializer.Serializer#SERIALIZER_uriResolution}
+       <li class='jm'>{@link 
oaj.serializer.Serializer.Builder#uriResolution(UriResolution)}
                <br>Setting that defines the final format of serialized URIs.
                <br>Possible values:
                <ul>
diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/19.JacksonComparison.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/19.JacksonComparison.html
index 0abb8ce..7bd9959 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/19.JacksonComparison.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/19.JacksonComparison.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Comparison with Jackson', flags:'review'}
+{title:'Comparison with Jackson', updated:'9.0.0'}
 
 <p>
        Juneau was developed independently from Jackson, but shares many of the 
same features and capabilities.
@@ -64,9 +64,8 @@
                <td><c><ja>@JsonAutoDetect</ja>(fieldVisibility=...)</c></td>
                <td>
                        No equivalent annotation, but can be controlled via: 
-                       <br>{@del oaj.BeanContext#BEAN_beanFieldVisibility 
BEAN_beanFieldVisibility}
-                       <br>{@del oaj.BeanContext#BEAN_beanMethodVisibility 
BEAN_beanMethodVisibility}
-                       <br>Future annotation support planned.
+                       <br>{@link 
oaj.BeanContext.Builder#beanFieldVisibility(Visibility)}
+                       <br>{@link 
oaj.BeanContext.Builder#beanMethodVisibility(Visibility)}
                </td>
        </tr>
        <tr>
@@ -82,7 +81,6 @@
                <td><ja>@JacksonInject</ja></td>
                <td>
                        No equivalent.
-                       <br>Future support planned.
                </td>
                        
        </tr>
@@ -102,7 +100,6 @@
                        No equivalent annotation, but can be controlled via 
various settings:
                        <br>{@link oaj.BeanContext}
                        <br>{@link oaj.serializer.Serializer}
-                       <br>Future annotation support planned.
                </td>
        </tr>
        <tr>
diff --git a/juneau-doc/src/main/javadoc/overview.html 
b/juneau-doc/src/main/javadoc/overview.html
index 2f9b70b..98d6f41 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -201,17 +201,17 @@
                        <li><p><a class='doclink' 
href='#juneau-marshall.Swaps.TemplatedSwaps'>Templated Swaps</a></p>
                        <li><p><a class='doclink' 
href='#juneau-marshall.Swaps.SurrogateClasses'>Surrogate Classes</a></p>
                </ol>
-               <li><p><a class='doclink' 
href='#juneau-marshall.DynamicallyAppliedAnnotations'>Dynamically Applied 
Annotations</a><span class='update'>created: 8.1.3</span></p>
-               <li><p><a class='doclink' 
href='#juneau-marshall.BeanDictionaries'>Bean Names and Dictionaries</a></p>
+               <li><p><a class='doclink' 
href='#juneau-marshall.DynamicallyAppliedAnnotations'>Dynamically Applied 
Annotations</a><span class='update'>created: 8.1.3, updated: 
<b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-marshall.BeanDictionaries'>Bean Names and Dictionaries</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
                <ol>
                        <li><p><a class='doclink' 
href='#juneau-marshall.BeanDictionaries.BeanSubTypes'>Bean Subtypes</a></p>
                </ol>
-               <li><p><a class='doclink' 
href='#juneau-marshall.VirtualBeans'>Virtual Beans</a><span 
class='update'><b><red>todo</red></b></span></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.VirtualBeans'>Virtual Beans</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-marshall.Recursion'>Non-Tree Models and Recursion 
Detection</a><span class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='#juneau-marshall.ParsingIntoGenericModels'>Parsing into Generic 
Models</a><span class='update'>updated: 8.2.0</span></p>
-               <li><p><a class='doclink' 
href='#juneau-marshall.ReadingContinuousStreams'>Reading Continuous 
Streams</a></p>
-               <li><p><a class='doclink' 
href='#juneau-marshall.MarshallingUris'>URIs</a></p>
-               <li><p><a class='doclink' 
href='#juneau-marshall.JacksonComparison'>Comparison with Jackson</a><span 
class='update'><b><red>review</red></b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-marshall.ReadingContinuousStreams'>Reading Continuous 
Streams</a><span class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-marshall.MarshallingUris'>URIs</a><span class='update'>updated: 
<b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-marshall.JacksonComparison'>Comparison with Jackson</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='#juneau-marshall.PojoCategories'>POJO Categories</a></p>
                <li><p><a class='doclink' 
href='#juneau-marshall.FluentAssertions'>Fluent Assertions</a><span 
class='update'>created: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='#juneau-marshall.JsonDetails'>JSON Details</a></p>
@@ -836,7 +836,7 @@
 
 <h3 class='topic' onclick='toggle(this)'><a href='#Overview.CoreOverview' 
id='Overview.CoreOverview'>1.1 - Core Overview</a><span class='update'>created: 
<b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 1.1 - Overview.CoreOverview -->
-<h5 class='toc'>Marshalling APIs</h5>
+<h5 class='topic'>Marshalling APIs</h5>
 <div class='topic'>
        <p>
                The <c>juneau-marshall</c> library includes easy-to-use and 
highly customizable serializers and parsers based around
@@ -912,7 +912,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Marshaller Builders</h5>
+<h5 class='topic'>Marshaller Builders</h5>
 <div class='topic'>
        <p>
                Serializers and parsers are builder-based using fluent methods 
allowing you to quickly create, clone, and modify them
@@ -968,7 +968,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Bean Annotations</h5>
+<h5 class='topic'>Bean Annotations</h5>
 <div class='topic'>
        <p>
                Beans and POJO classes, methods, fields, and constructors can 
also be annotated with a variety of annotations to customize how they are 
marshalled:
@@ -993,7 +993,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Configuration Annotations</h5>
+<h5 class='topic'>Configuration Annotations</h5>
 <div class='topic'>
        <p>
                Serializers and parsers can also be configured using 
annotations.
@@ -1037,7 +1037,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Simplified JSON Marshalling</h5>
+<h5 class='topic'>Simplified JSON Marshalling</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.json.SimpleJsonSerializer} class 
can be used to serialized POJOs into Simplified JSON notation.
@@ -1097,7 +1097,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>UON Marshalling</h5>
+<h5 class='topic'>UON Marshalling</h5>
 <div class='topic'>
        <p>
                The Marshalling API also supports UON (URL-Encoded Object 
Notation).
@@ -1130,7 +1130,7 @@
                <li class='link'>{@doc UonDetails UON Details} for more 
information.
        </ul>
 </div>
-<h5 class='toc'>OpenAPI Marshalling</h5>
+<h5 class='topic'>OpenAPI Marshalling</h5>
 <div class='topic'>
        <p>
                The Marshalling API also supports schema-based OpenAPI 
serialization.
@@ -1169,7 +1169,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>OMap/OList</h5>
+<h5 class='topic'>OMap/OList</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.collections.OMap} and {@link 
org.apache.juneau.collections.OList} collections classes allow you
@@ -1198,7 +1198,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Serializer and Parser Sets</h5>
+<h5 class='topic'>Serializer and Parser Sets</h5>
 <div class='topic'>
        <p>
                <code>SerializerSet</code> and <code>ParserSet</code> classes 
allow serializers and parsers 
@@ -1235,7 +1235,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>SVL Variables</h5>
+<h5 class='topic'>SVL Variables</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.svl} package defines an API for a 
language called "Simple Variable Language".
@@ -1261,7 +1261,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Assertions API</h5>
+<h5 class='topic'>Assertions API</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.assertions} package in Juneau is a 
powerful API for performing fluent style assertions.
@@ -1329,7 +1329,7 @@
 
 <h3 class='topic' onclick='toggle(this)'><a href='#Overview.DtoOverview' 
id='Overview.DtoOverview'>1.2 - DTO Library Overview</a><span 
class='update'>created: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 1.2 - Overview.DtoOverview -->
-<h5 class='toc'>DTO Libraries</h5>
+<h5 class='topic'>DTO Libraries</h5>
 <div class='topic'>
        <p>
                The <c>juneau-dto</c> library contains several predefined POJOs 
for generating commonly-used document types that
@@ -1337,7 +1337,7 @@
        </p>
 </div>
 
-<h5 class='toc'>HTML5</h5>
+<h5 class='topic'>HTML5</h5>
 <div class='topic'>
        <p>
                The Juneau HTML5 DTOs are simply beans with fluent-style 
setters that allow you to quickly construct HTML
@@ -1384,7 +1384,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>ATOM</h5>
+<h5 class='topic'>ATOM</h5>
 <div class='topic'>
        <p>
                The Juneau ATOM feed DTOs are simply beans with fluent-style 
setters.
@@ -1438,7 +1438,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Swagger</h5>
+<h5 class='topic'>Swagger</h5>
 <div class='topic'>
        <p>
                The Juneau Swagger DTOs are simply beans with fluent-style 
setters that allow you to quickly construct 
@@ -1499,7 +1499,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>SwaggerUI</h5>
+<h5 class='topic'>SwaggerUI</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.dto.swagger.ui.SwaggerUI} class is 
a DTO class for generating Swagger user interfaces
@@ -1524,7 +1524,7 @@
 
 <h3 class='topic' onclick='toggle(this)'><a href='#Overview.ConfigOverview' 
id='Overview.ConfigOverview'>1.3 - Config API Overview</a><span 
class='update'>created: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 1.3 - Overview.ConfigOverview -->
-<h5 class='toc'>Config API</h5>
+<h5 class='topic'>Config API</h5>
 <div class='topic'>
        <p>
                The <c>juneau-config</c> library contains a powerful API for 
creating and using INI-style config files.
@@ -1574,7 +1574,7 @@
 
 <h3 class='topic' onclick='toggle(this)'><a href='#Overview.RestOverview' 
id='Overview.RestOverview'>1.4 - REST Overview</a><span class='update'>created: 
<b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 1.4 - Overview.RestOverview -->
-<h5 class='toc'>REST Server/Client APIs</h5>
+<h5 class='topic'>REST Server/Client APIs</h5>
 <div class='topic'>
        <p>
                The {@doc juneau-rest-server juneau-rest-server} and {@doc 
juneau-rest-client juneau-rest-client} libraries
@@ -1659,7 +1659,7 @@
 
 <h3 class='topic' onclick='toggle(this)'><a 
href='#Overview.RestServerOverview' id='Overview.RestServerOverview'>1.5 - REST 
Server Overview</a><span class='update'>created: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 1.5 - Overview.RestServerOverview -->
-<h5 class='toc'>@Rest-Annotated Resources</h5>
+<h5 class='topic'>@Rest-Annotated Resources</h5>
 <div class='topic'>
        <p>
                A REST resource is simply a Java class annotated with {@link 
org.apache.juneau.rest.annotation.Rest}.
@@ -1716,7 +1716,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Children</h5>
+<h5 class='topic'>REST Children</h5>
 <div class='topic'>
        <p>
                Child Resources are REST servlets or objects that are linked to 
parent resources through the 
@@ -1755,7 +1755,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Group Pages</h5>
+<h5 class='topic'>REST Group Pages</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.rest.BasicRestServletGroup} class 
provides a default "router" page for 
@@ -1798,7 +1798,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Resource Methods</h5>
+<h5 class='topic'>REST Resource Methods</h5>
 <div class='topic'>
        <p>
                The real power behind the REST server API is the ability to 
define Java methods as REST endpoints.
@@ -1873,7 +1873,7 @@
        </ul>
 </div>
        
-<h5 class='toc'>Deploying as a Servlet</h5>
+<h5 class='topic'>Deploying as a Servlet</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.rest.RestServlet} class is the 
entry point for your REST resources.
@@ -1895,7 +1895,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>Deploying in Spring Boot</h5>
+<h5 class='topic'>Deploying in Spring Boot</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.rest.springboot.SpringRestServlet} 
class is typically entry point for your REST resources
@@ -1967,7 +1967,7 @@
 
 <h3 class='topic' onclick='toggle(this)'><a 
href='#Overview.RestClientOverview' id='Overview.RestClientOverview'>1.6 - REST 
Client Overview</a><span class='update'>created: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 1.6 - Overview.RestClientOverview -->
-<h5 class='toc'>REST Client</h5>
+<h5 class='topic'>REST Client</h5>
 <div class='topic'>
        <p>
                Built upon the feature-rich Apache HttpClient library, the 
Juneau RestClient API adds support for fluent-style
@@ -1991,7 +1991,7 @@
        </ul>
 </div>
 
-<h5 class='toc'>REST Testing Framework</h5>
+<h5 class='topic'>REST Testing Framework</h5>
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.rest.mock.MockRestClient} class is 
used for performing serverless unit testing of {@link 
org.apache.juneau.rest.annotation.Rest @Rest}-annotated
@@ -3818,13 +3818,17 @@
        Serializing to and from Maps can be accomplished by defining any of the 
following methods:
 </p>                   
 <ul>
-       <li><c><jk>public</jk> Map toMap()</c> method.  Can be any type of map 
with string keys and object vals. 
+       <li><c><jk>public</jk> Map toMap()</c> method.
+               <br>Can be any type of map with string keys and object vals. 
        <li><c><jk>public</jk> OMap toMap()</c> method. 
-       <li><c><jk>public</jk> Map toMap(BeanSession)</c> method.  Can be any 
type of map with string keys and object vals. 
+       <li><c><jk>public</jk> Map toMap(BeanSession)</c> method.
+               <br>Can be any type of map with string keys and object vals. 
        <li><c><jk>public</jk> OMap toMap(BeanSession)</c> method.
-       <li><c><jk>public static</jk> MyPojo fromMap(Map)</c> method.  Can be 
any type of map with string keys and object vals. 
+       <li><c><jk>public static</jk> MyPojo fromMap(Map)</c> method.
+               <br>Can be any type of map with string keys and object vals. 
        <li><c><jk>public static</jk> MyPojo fromMap(OMap)</c> method.
-       <li><c><jk>public static</jk> MyPojo fromMap(Map,BeanSession)</c> 
method.  Can be any type of map with string keys and object vals. 
+       <li><c><jk>public static</jk> MyPojo fromMap(Map,BeanSession)</c> 
method.
+               <br>Can be any type of map with string keys and object vals. 
        <li><c><jk>public static</jk> MyPojo fromMap(OMap,BeanSession)</c> 
method.
 </ul>
 <p>
@@ -4026,7 +4030,7 @@
 <p>
        In the previous sections, we defined two-way swaps, meaning swaps where 
the original objects could be 
        reconstructing during parsing. 
-       However, there are certain kinds of POJOs that we may want to support 
for serializing, but that are not 
+       However, there are certain kinds of objects that we may want to support 
for serializing, but that are not 
        possible to reconstruct during parsing.  
        For these, we can use one-way object swaps.
 </p>
@@ -4255,7 +4259,7 @@
        The surrogate class is registered in the same way as a 
<c>ObjectSwap</c>:
 </p>
 <p class='bpcode w800'>
-       <jc>// Create a JSON serializer that can serialize Iterators.</jc>
+       <jc>// Create a JSON serializer that can serialize our unserializable 
object.</jc>
        WriterSerializer <jv>serializer</jv> = JsonSerializer
                .<jsm>create</jsm>()
                .swaps(MySerializableSurrogate.<jk>class</jk>)
@@ -4274,7 +4278,7 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.DynamicallyAppliedAnnotations' 
id='juneau-marshall.DynamicallyAppliedAnnotations'>2.12 - Dynamically Applied 
Annotations</a><span class='update'>created: 8.1.3</span></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.DynamicallyAppliedAnnotations' 
id='juneau-marshall.DynamicallyAppliedAnnotations'>2.12 - Dynamically Applied 
Annotations</a><span class='update'>created: 8.1.3, updated: 
<b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 2.12 - 
juneau-marshall.DynamicallyAppliedAnnotations -->
 <p>
        In the section {@doc Transforms}, you were introduced to annotations 
that can be applied to bean
@@ -4287,17 +4291,21 @@
        <jk>public class</jk> Address { ... }
 </p>
 <p>
-       An alternate way of applying these annotations is using the 
<ja>@XConfig</ja> annotations introduced in section
-       {@doc ConfigurableAnnotations}.  
+       An alternate way of applying these annotations is to attach them to 
unrelated classes and methods and then
+       tell your serializer or parser where to find them.  
 </p>
 <p class='bpcode w800'>
        <jc>// Unannotated class.</jc>
        <jk>public class</jk> Address { ... }
 
-       <ja>@Bean</ja>(on=<js>"Address"</js>, 
properties=<js>"street,city,state"</js>)
+       <ja>@Bean</ja>(onClass=Address.<jk>class</jk>, 
properties=<js>"street,city,state"</js>)
        <jk>public static class</jk> DummyClass {}
 
-       WriterSerializer <jv>serializer</jv> = 
JsonSerializer.<jsm>create</jsm>().applyAnnotations(DummyClass.<jk>class</jk>).build();
+       WriterSerializer <jv>serializer</jv> = JsonSerializer
+               .<jsm>create</jsm>()
+               .applyAnnotations(DummyClass.<jk>class</jk>)
+               .build();
+               
        String <jv>json</jv> = 
<jv>serializer</jv>.toString(<jv>addressBean</jv>);
 </p>
 <p>
@@ -4311,11 +4319,11 @@
 </p>
 <p class='bpcode w800'>
        <ja>@RestGet</ja> 
-       <ja>@Bean</ja>(on=<js>"Address"</js>, 
properties=<js>"street,city,state"</js>)
+       <ja>@Bean</ja>(onClass=Address.<jk>class</jk>, 
properties=<js>"street,city,state"</js>)
        <jk>public</jk> List&lt;Address&gt; getAddresses() {}
 </p>
 <p>
-       Any Juneau annotation that has an <c>on()</c> method can be applied 
dynamically this way.
+       Any Juneau annotation that has an <c>on()/onClass()</c> method can be 
applied dynamically this way.
        These include:
 </p>
 <ul>
@@ -4440,7 +4448,7 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.BeanDictionaries' 
id='juneau-marshall.BeanDictionaries'>2.13 - Bean Names and 
Dictionaries</a></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.BeanDictionaries' 
id='juneau-marshall.BeanDictionaries'>2.13 - Bean Names and 
Dictionaries</a><span class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 2.13 - juneau-marshall.BeanDictionaries -->
 <p>
        While parsing into beans, Juneau attempts to determine the class types 
of bean properties through 
@@ -4517,8 +4525,6 @@
                - On individual bean properties through the annotation.
        <li class='ja'>{@link org.apache.juneau.annotation.Bean#dictionary() 
Bean(dictionary)} 
                - On all properties on a bean and all subclasses.
-       <li class='jf'>{@del org.apache.juneau.BeanContext#BEAN_beanDictionary} 
-               - Configuration property on serializers and parsers.
        <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#beanDictionary(Class...)}
                - Builder method on serializers and parsers.
 </ul>
@@ -4538,13 +4544,6 @@
                .dictionary(Foo.<jk>class</jk>, Bar.<jk>class</jk>)
                .build();
        
-       <jc>// Same, but use property.</jc>
-       ReaderParser <jv>parser</jv> = JsonParser
-               .<jsm>create</jsm>()
-               .addTo(<jsf>BEAN_beanDictionary</jsf>, Foo.<jk>class</jk>)
-               .addTo(<jsf>BEAN_beanDictionary</jsf>, Bar.<jk>class</jk>)
-               .build();
-
        <jc>// Use the predefined HTML5 bean dictionary which is a 
BeanDictionaryList.</jc>
        ReaderParser <jv>parser</jv> = HtmlParser
                .<jsm>create</jsm>()
@@ -4557,8 +4556,6 @@
 <ul class='javatree'>
        <li class='ja'>{@link 
org.apache.juneau.annotation.Bean#typePropertyName() Bean(typePropertyName)} 
                - On individual beans through the annotation.
-       <li class='jf'>{@del 
org.apache.juneau.BeanContext#BEAN_typePropertyName} 
-               - Configuration property on serializers and parsers.
        <li class='jm'>{@link 
org.apache.juneau.BeanContext.Builder#typePropertyName(String)} 
                - Builder method on serializers and parsers.
 </ul>
@@ -4592,8 +4589,8 @@
 <div class='info'>
        Serialized type names are DISABLED by default.
        They must be enabled on the serializer using the 
-       {@del org.apache.juneau.serializer.Serializer#SERIALIZER_addBeanTypes} 
-       configuration property.
+       {@link org.apache.juneau.serializer.Serializer.Builder#addBeanTypes()} 
+       setting.
 </div>
 
 <!-- 
====================================================================================================
 -->
@@ -4659,7 +4656,7 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.VirtualBeans' id='juneau-marshall.VirtualBeans'>2.14 - 
Virtual Beans</a><span class='update'><b><red>todo</red></b></span></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.VirtualBeans' id='juneau-marshall.VirtualBeans'>2.14 - 
Virtual Beans</a><span class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 2.14 - juneau-marshall.VirtualBeans -->
 <p>
        The {@link 
org.apache.juneau.BeanContext.Builder#disableInterfaceProxies()} setting 
(enabled by default) allows
@@ -4698,12 +4695,12 @@
        Getter and setter values can be any {@doc PojoCategories parsable} 
values, even other virtual beans.
 </p>
 <p>
-       Under-the-covers, a virtual bean is simply a proxy interface on top of 
an existing <c>BeanMap</c>
+       Under-the-covers, a virtual bean is simply a proxy interface on top of 
an existing {@link org.apache.juneau.BeanMap}
        instance.  From a programmatic point-of-view, they're indistinguishable 
from real beans, and can be 
        manipulated and serialized like any other bean.
 </p>   
 <p>
-       Virtual beans can also be created programmatically using the 
<c>BeanContext</c> class:
+       Virtual beans can also be created programmatically using the {@link 
org.apache.juneau.BeanContext} class:
 </p>
 <p class='bpcode w800'>
        Address <jv>address</jv> = 
BeanContext.<jsf>DEFAULT</jsf>.createSession().newBean(Address.<jk>class</jk>);
@@ -4712,18 +4709,18 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a href='#juneau-marshall.Recursion' 
id='juneau-marshall.Recursion'>2.15 - Non-Tree Models and Recursion 
Detection</a></h3>
+<h3 class='topic' onclick='toggle(this)'><a href='#juneau-marshall.Recursion' 
id='juneau-marshall.Recursion'>2.15 - Non-Tree Models and Recursion 
Detection</a><span class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 2.15 - juneau-marshall.Recursion -->
 <p>
        The Juneau Serializer API 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...).
        If you try to serialize models with loops, you will usually cause a 
<c>StackOverflowError</c> to 
-       be thrown (if {@del 
org.apache.juneau.BeanTraverseContext#BEANTRAVERSE_maxDepth} is not reached 
+       be thrown (if {@link 
org.apache.juneau.BeanTraverseContext.Builder#maxDepth(int)} is not reached 
        first).
 </p>
 <p>
        If you still want to use the Juneau serializers on such models, Juneau 
provides the 
-       {@del 
org.apache.juneau.BeanTraverseContext#BEANTRAVERSE_detectRecursions} setting.
+       {@link 
org.apache.juneau.BeanTraverseContext.Builder#detectRecursions()} setting.
        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>
@@ -4748,7 +4745,11 @@
 </p>
 <p class='bpcode w800'>
        <jc>// Clone an existing serializer and set property for detecting 
recursions.</jc>
-       JsonSerializer <jv>serializer</jv> = 
SimpleJsonSerializer.<jsf>DEFAULT_READABLE</jsf>.copy().detectRecursions(<jk>true</jk>).build();
+       JsonSerializer <jv>serializer</jv> = SimpleJsonSerializer
+               .<jsf>DEFAULT_READABLE</jsf>
+               .copy()
+               .detectRecursions()
+               .build();
 
        <jc>// Create a recursive loop.</jc>
        A <jv>a</jv> = <jk>new</jk> A();
@@ -4896,7 +4897,7 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.ReadingContinuousStreams' 
id='juneau-marshall.ReadingContinuousStreams'>2.17 - Reading Continuous 
Streams</a></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.ReadingContinuousStreams' 
id='juneau-marshall.ReadingContinuousStreams'>2.17 - Reading Continuous 
Streams</a><span class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 2.17 - juneau-marshall.ReadingContinuousStreams 
-->
 <p>
        The following parsers can be configured to read continuous streams of 
objects from the same input stream:
@@ -4908,7 +4909,7 @@
 </ul>
 <p>
        The {@link org.apache.juneau.json.JsonParser} and {@link 
org.apache.juneau.uon.UonParser}
-       classes can read continuous streams by using the {@del 
org.apache.juneau.parser.Parser#PARSER_unbuffered PARSER_unbuffered}
+       classes can read continuous streams by using the {@link 
org.apache.juneau.parser.Parser.Builder#unbuffered()}
        setting.
        This prevents the parsers from using an internal buffer that would read 
past the end of the currently
        parsed POJO.
@@ -4936,9 +4937,9 @@
        For obvious reasons, do not use the following properties when reading 
continuous streams:
 </p>
 <ul class='javatree'>
-       <li class='jf'>{@del org.apache.juneau.json.JsonParser#JSON_validateEnd}
-       <li class='jf'>{@del org.apache.juneau.uon.UonParser#UON_validateEnd}
-       <li class='jf'>{@del 
org.apache.juneau.parser.Parser#PARSER_autoCloseStreams}
+       <li class='jm'>{@link 
org.apache.juneau.json.JsonParser.Builder#validateEnd()}
+       <li class='jm'>{@link 
org.apache.juneau.uon.UonParser.Builder#validateEnd()}
+       <li class='jm'>{@link 
org.apache.juneau.parser.Parser.Builder#autoCloseStreams()}
 </ul>
 <p>
        The {@link org.apache.juneau.msgpack.MsgPackParser} class doesn't use 
any internal buffering to begin with, so it can be used with
@@ -4948,82 +4949,74 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.MarshallingUris' 
id='juneau-marshall.MarshallingUris'>2.18 - URIs</a></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.MarshallingUris' 
id='juneau-marshall.MarshallingUris'>2.18 - URIs</a><span 
class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 2.18 - juneau-marshall.MarshallingUris -->
 <p>
        Juneau serializers have sophisticated support for transforming relative 
URIs to absolute form.
 </p>
 <p>
-       The classes and settings that control the behavior are:
-</p>
-<ul class='javatree'>
-       <li class='jc'>{@link org.apache.juneau.UriResolver} 
-       <li class='jc'>{@link org.apache.juneau.UriContext}
-       <li class='jc'>{@link org.apache.juneau.UriRelativity}
-       <li class='jc'>{@link org.apache.juneau.UriResolution}
-       <li class='jac'>{@link org.apache.juneau.serializer.Serializer}
-       <ul>
-               <li class='jf'>{@del 
org.apache.juneau.serializer.Serializer#SERIALIZER_uriContext}
-               <li class='jf'>{@del 
org.apache.juneau.serializer.Serializer#SERIALIZER_uriRelativity}
-               <li class='jf'>{@del 
org.apache.juneau.serializer.Serializer#SERIALIZER_uriResolution}
-       </ul> 
-</ul>
-<p>
        The following example shows a bean containing URIs of various forms and 
how they end up serialized. 
 </p>
 <p class='bpcode w800'>
        <jc>// Our bean with properties containing various kinds of URIs.</jc>
        <jk>public class</jk> TestURIs {
                <jk>public</jk> URI
-                       <jf>f1a</jf> = 
URI.<jsm>create</jsm>(<js>"http://www.apache.org/f1a";</js>),
-                       <jf>f1b</jf> = URI.<jsm>create</jsm>(<js>"/f1b"</js>),
-                       <jf>f1c</jf> = 
URI.<jsm>create</jsm>(<js>"/f1c/x/y"</js>),
-                       <jf>f1d</jf> = URI.<jsm>create</jsm>(<js>"f1d"</js>),
-                       <jf>f1e</jf> = 
URI.<jsm>create</jsm>(<js>"f1e/x/y"</js>),
-                       <jf>f1f</jf> = URI.<jsm>create</jsm>(<js>""</js>),
-                       <jf>f2a</jf> = 
URI.<jsm>create</jsm>(<js>"context:/f2a/x"</js>),
-                       <jf>f2b</jf> = 
URI.<jsm>create</jsm>(<js>"context:/f2b"</js>),
-                       <jf>f2c</jf> = 
URI.<jsm>create</jsm>(<js>"context:/"</js>),
-                       <jf>f2d</jf> = 
URI.<jsm>create</jsm>(<js>"context:/.."</js>),
-                       <jf>f3a</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/f3a/x"</js>),
-                       <jf>f3b</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/f3b"</js>),
-                       <jf>f3c</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/"</js>),
-                       <jf>f3d</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/.."</js>),
-                       <jf>f4a</jf> = 
URI.<jsm>create</jsm>(<js>"request:/f4a/x"</js>),
-                       <jf>f4b</jf> = 
URI.<jsm>create</jsm>(<js>"request:/f4b"</js>),
-                       <jf>f4c</jf> = 
URI.<jsm>create</jsm>(<js>"request:/"</js>),
-                       <jf>f4d</jf> = 
URI.<jsm>create</jsm>(<js>"request:/.."</js>);;
+                       <jf>a</jf> = 
URI.<jsm>create</jsm>(<js>"http://www.apache.org/a";</js>),
+                       <jf>b</jf> = URI.<jsm>create</jsm>(<js>"/b"</js>),
+                       <jf>c</jf> = URI.<jsm>create</jsm>(<js>"/c/x/y"</js>),
+                       <jf>d</jf> = URI.<jsm>create</jsm>(<js>"d"</js>),
+                       <jf>e</jf> = URI.<jsm>create</jsm>(<js>"e/x/y"</js>),
+                       <jf>f</jf> = URI.<jsm>create</jsm>(<js>""</js>),
+                       <jf>g</jf> = 
URI.<jsm>create</jsm>(<js>"context:/g/x"</js>),
+                       <jf>h</jf> = 
URI.<jsm>create</jsm>(<js>"context:/h"</js>),
+                       <jf>i</jf> = 
URI.<jsm>create</jsm>(<js>"context:/"</js>),
+                       <jf>j</jf> = 
URI.<jsm>create</jsm>(<js>"context:/.."</js>),
+                       <jf>k</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/k/x"</js>),
+                       <jf>l</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/l"</js>),
+                       <jf>m</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/"</js>),
+                       <jf>n</jf> = 
URI.<jsm>create</jsm>(<js>"servlet:/.."</js>),
+                       <jf>o</jf> = 
URI.<jsm>create</jsm>(<js>"request:/o/x"</js>),
+                       <jf>p</jf> = 
URI.<jsm>create</jsm>(<js>"request:/p"</js>),
+                       <jf>q</jf> = 
URI.<jsm>create</jsm>(<js>"request:/"</js>),
+                       <jf>r</jf> = 
URI.<jsm>create</jsm>(<js>"request:/.."</js>);;
        }       
        
        <jc>// Create a serializer.</jc>
        WriterSerializer <jv>serializer</jv> = JsonSerializer
                <jsm>create</jsm>()
                .simple()
-               
.uriContext(<js>"{authority:'http://foo.com:123',contextRoot:'/myContext',servletPath:'/myServlet',pathInfo:'/myPath'}"</js>)
+               .uriContext(
+                       UriContext.of(
+                               <js>"http://foo.com:123";</js>,  <jc>// 
Authority</jc>
+                               <js>"/myContext"</js>,  <jc>// Context root</jc>
+                               <js>"/myServlet"</js>,  <jc>// Servlet path</jc>
+                               <js>"/myPath"</js>  <jc>// Path info</jc>
+                       )
+               )
                .uriResolution(<jsf>ABSOLUTE</jsf>)
                .uriRelativity(<jsf>RESOURCE</jsf>)
                .build();
                
        <jc>// Produces:</jc>
        <jc>// {</jc>
-       <jc>//  f1a:'http://www.apache.org/f1a',</jc>
-       <jc>//  f1b:'http://foo.com:123/f1b',</jc>
-       <jc>//  f1c:'http://foo.com:123/f1c/x/y',</jc>
-       <jc>//  f1d:'http://foo.com:123/myContext/myServlet/f1d',</jc>
-       <jc>//  f1e:'http://foo.com:123/myContext/myServlet/f1e/x/y',</jc>
-       <jc>//  f1f:'http://foo.com:123/myContext/myServlet',</jc>
-       <jc>//  f2a:'http://foo.com:123/myContext/f2a/x',</jc>
-       <jc>//  f2b:'http://foo.com:123/myContext/f2b',</jc>
-       <jc>//  f2c:'http://foo.com:123/myContext',</jc>
-       <jc>//  f2d:'http://foo.com:123'</jc>
-       <jc>//  f3a:'http://foo.com:123/myContext/myServlet/f3a/x',</jc>
-       <jc>//  f3b:'http://foo.com:123/myContext/myServlet/f3b',</jc>
-       <jc>//  f3c:'http://foo.com:123/myContext/myServlet',</jc>
-       <jc>//  f3d:'http://foo.com:123/myContext',</jc>
-       <jc>//  f4a:'http://foo.com:123/myContext/myServlet/myPath/f4a/x',</jc>
-       <jc>//  f4b:'http://foo.com:123/myContext/myServlet/myPath/f4b',</jc>
-       <jc>//  f4c:'http://foo.com:123/myContext/myServlet/myPath',</jc>
-       <jc>//  f4d:'http://foo.com:123/myContext/myServlet'</jc>
+       <jc>//  a:'http://www.apache.org/a',</jc>
+       <jc>//  b:'http://foo.com:123/b',</jc>
+       <jc>//  c:'http://foo.com:123/c/x/y',</jc>
+       <jc>//  d:'http://foo.com:123/myContext/myServlet/d',</jc>
+       <jc>//  e:'http://foo.com:123/myContext/myServlet/e/x/y',</jc>
+       <jc>//  f:'http://foo.com:123/myContext/myServlet',</jc>
+       <jc>//  g:'http://foo.com:123/myContext/g/x',</jc>
+       <jc>//  h:'http://foo.com:123/myContext/h',</jc>
+       <jc>//  i:'http://foo.com:123/myContext',</jc>
+       <jc>//  j:'http://foo.com:123'</jc>
+       <jc>//  k:'http://foo.com:123/myContext/myServlet/k/x',</jc>
+       <jc>//  l:'http://foo.com:123/myContext/myServlet/l',</jc>
+       <jc>//  m:'http://foo.com:123/myContext/myServlet',</jc>
+       <jc>//  n:'http://foo.com:123/myContext',</jc>
+       <jc>//  o:'http://foo.com:123/myContext/myServlet/myPath/o/x',</jc>
+       <jc>//  p:'http://foo.com:123/myContext/myServlet/myPath/p',</jc>
+       <jc>//  q:'http://foo.com:123/myContext/myServlet/myPath',</jc>
+       <jc>//  r:'http://foo.com:123/myContext/myServlet'</jc>
        <jc>// }</jc>
        String <jv>json</jv> = <jv>serializer</jv>.serialize(<jk>new</jk> 
TestURIs());
 </p>
@@ -5031,9 +5024,9 @@
        URI resolution is controlled by the following settings:
 </p>
 <ul class='javatree'>
-       <li class='jf'>{@del 
org.apache.juneau.serializer.Serializer#SERIALIZER_uriContext}
+       <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriContext(UriContext)}
                <br>Setting that defines the URI contextual information used to 
resolve relative URIs.
-       <li class='jf'>{@del 
org.apache.juneau.serializer.Serializer#SERIALIZER_uriRelativity}
+       <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriRelativity(UriRelativity)}
                <br>Setting that defines how relative URIs should be 
interpreted.
                <br>Possible values:
                <ul>
@@ -5044,7 +5037,7 @@
                                <br>Relative URIs should be considered relative 
to the request URI.
                                <br>(e.g. 
<js>"http://host:port/context-root/servlet-path/path-info";</js>).
                </ul>
-       <li class='jf'>{@del 
org.apache.juneau.serializer.Serializer#SERIALIZER_uriResolution}
+       <li class='jm'>{@link 
org.apache.juneau.serializer.Serializer.Builder#uriResolution(UriResolution)}
                <br>Setting that defines the final format of serialized URIs.
                <br>Possible values:
                <ul>
@@ -5091,7 +5084,7 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.JacksonComparison' 
id='juneau-marshall.JacksonComparison'>2.19 - Comparison with Jackson</a><span 
class='update'><b><red>review</red></b></span></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-marshall.JacksonComparison' 
id='juneau-marshall.JacksonComparison'>2.19 - Comparison with Jackson</a><span 
class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 2.19 - juneau-marshall.JacksonComparison -->
 <p>
        Juneau was developed independently from Jackson, but shares many of the 
same features and capabilities.
@@ -5142,9 +5135,8 @@
                <td><c><ja>@JsonAutoDetect</ja>(fieldVisibility=...)</c></td>
                <td>
                        No equivalent annotation, but can be controlled via: 
-                       <br>{@del 
org.apache.juneau.BeanContext#BEAN_beanFieldVisibility BEAN_beanFieldVisibility}
-                       <br>{@del 
org.apache.juneau.BeanContext#BEAN_beanMethodVisibility 
BEAN_beanMethodVisibility}
-                       <br>Future annotation support planned.
+                       <br>{@link 
org.apache.juneau.BeanContext.Builder#beanFieldVisibility(Visibility)}
+                       <br>{@link 
org.apache.juneau.BeanContext.Builder#beanMethodVisibility(Visibility)}
                </td>
        </tr>
        <tr>
@@ -5160,7 +5152,6 @@
                <td><ja>@JacksonInject</ja></td>
                <td>
                        No equivalent.
-                       <br>Future support planned.
                </td>
                        
        </tr>
@@ -5180,7 +5171,6 @@
                        No equivalent annotation, but can be controlled via 
various settings:
                        <br>{@link org.apache.juneau.BeanContext}
                        <br>{@link org.apache.juneau.serializer.Serializer}
-                       <br>Future annotation support planned.
                </td>
        </tr>
        <tr>
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/toc.html 
b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
index 615856e..443f1cd 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
@@ -47,25 +47,25 @@
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.SerializerSetsParserSets'>SerializerSets 
and ParserSets</a><span class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps'>Swaps</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
                <ol>
-                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.DefaultPojoSwaps'>Default 
PojoSwaps</a></p>
-                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.AutoPojoSwaps'>Auto-detected POJO 
swaps</a><span class='update'>created: 8.1.0</span></p>
-                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.PerMediaTypePojoSwaps'>Per-media-type
 Swaps</a><span class='update'>updated: 8.1.0,8.2.0</span></p>
-                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.OneWayPojoSwaps'>One-way 
Swaps</a></p>
-                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.SwapAnnotation'>@Swap 
Annotation</a><span class='update'>updated: 8.0.0, 
<b><red>todo</red></b></span></p>
+                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.DefaultSwaps'>Default Swaps</a></p>
+                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.AutoSwaps'>Auto-detected 
swaps</a><span class='update'>created: 8.1.0</span></p>
+                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.PerMediaTypeSwaps'>Per-media-type 
Swaps</a><span class='update'>updated: 8.1.0,8.2.0</span></p>
+                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.OneWaySwaps'>One-way Swaps</a></p>
+                       <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.SwapAnnotation'>@Swap 
Annotation</a><span class='update'>updated: 8.0.0,<b>9.0.0</b></span></p>
                        <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.TemplatedSwaps'>Templated 
Swaps</a></p>
                        <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Swaps.SurrogateClasses'>Surrogate 
Classes</a></p>
                </ol>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.DynamicallyAppliedAnnotations'>Dynamically 
Applied Annotations</a><span class='update'>created: 8.1.3</span></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.BeanDictionaries'>Bean Names and 
Dictionaries</a></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.DynamicallyAppliedAnnotations'>Dynamically 
Applied Annotations</a><span class='update'>created: 8.1.3, updated: 
<b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.BeanDictionaries'>Bean Names and 
Dictionaries</a><span class='update'>updated: <b>9.0.0</b></span></p>
                <ol>
                        <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.BeanDictionaries.BeanSubTypes'>Bean 
Subtypes</a></p>
                </ol>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.VirtualBeans'>Virtual Beans</a><span 
class='update'><b><red>todo</red></b></span></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Recursion'>Non-Tree Models and Recursion 
Detection</a></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.VirtualBeans'>Virtual Beans</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.Recursion'>Non-Tree Models and Recursion 
Detection</a><span class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.ParsingIntoGenericModels'>Parsing into 
Generic Models</a><span class='update'>updated: 8.2.0</span></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.ReadingContinuousStreams'>Reading 
Continuous Streams</a></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.MarshallingUris'>URIs</a></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.JacksonComparison'>Comparison with 
Jackson</a><span class='update'><b><red>review</red></b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.ReadingContinuousStreams'>Reading 
Continuous Streams</a><span class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.MarshallingUris'>URIs</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.JacksonComparison'>Comparison with 
Jackson</a><span class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.PojoCategories'>POJO Categories</a></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.FluentAssertions'>Fluent 
Assertions</a><span class='update'>created: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-marshall.JsonDetails'>JSON Details</a></p>
diff --git a/juneau-doc/src/main/javadoc/resources/juneau-doc.css 
b/juneau-doc/src/main/javadoc/resources/juneau-doc.css
index 5732c0d..de7bf5d 100755
--- a/juneau-doc/src/main/javadoc/resources/juneau-doc.css
+++ b/juneau-doc/src/main/javadoc/resources/juneau-doc.css
@@ -111,15 +111,6 @@ h4.topic {
        cursor: zoom-out;
        max-width: 1000px;
 }
-h5.topic {
-       margin-bottom: 20px;
-       margin-top: 40px;
-       padding-top: 3px;
-       padding-left: 10px;
-       color: #2c4557;
-       border-top: 1px groove #9eadc0;
-       max-width: 1000px;
-}
 
 h2.topic { font-size: 14pt; }
 h3.topic { font-size: 13pt; }
@@ -221,7 +212,7 @@ ul.toc div,
 }
 
 p.toc2 {
-    background-color: #dee3e950;
+       background-color: #dee3e950;
 }
 
 span.update {
@@ -244,6 +235,14 @@ div.contentContainer > div.block > p:first-child {
        max-width: 900px;
 }
 
+h5.topic {
+       background: linear-gradient(to bottom, #F5F5F5, #DEE3E9) repeat scroll 
0% 0% transparent;
+       background: -moz-linear-gradient(to bottom, #F5F5F5, #DEE3E9) repeat 
scroll 0% 0% transparent;
+       background: -webkit-gradient(linear, left top, left bottom, 
from(#F5F5F5), to(#DEE3E9) );
+       max-width: 800px;
+}
+
+
 /* Dark-colored background headers */
 div.header > div.subTitle > div.block,
 div.footer > div.subTitle > div.block > p:first-child, 
@@ -257,10 +256,10 @@ body > p:first-child {
 
 /* Header styles */
 
-h5.toc {
+h5.toc, h5.topic {
        color: #2C4557;
-       margin-bottom: 0px;
        padding: 5px 30px;
+       margin-bottom: 0px;
        border-radius: 10px 10px 10px 0px;
        text-decoration: none;
        box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.5);
@@ -351,10 +350,10 @@ l {
        margin-top: 0px;
 }
 .doctree>li, .seealso>li { 
-    margin-bottom: 10px;
+       margin-bottom: 10px;
 }
 .doctree li, .seealso li { 
-    margin-top: 5px;
+       margin-top: 5px;
 }
 .doctree ul, .seealso ul { 
        padding: 0px 0px 0px 15px; 
@@ -364,10 +363,10 @@ l {
 
 /* Java Tree */
 .javatree>li { 
-    margin-bottom: 1px;
+       margin-bottom: 1px;
 }
 .javatree li { 
-    margin-top: 1px;
+       margin-top: 1px;
 }
 .javatree ul { 
        padding: 0px 0px 0px 20px; 
@@ -410,40 +409,40 @@ ul.seealso, ul.notes {
 }
 
 li.normal {
-    list-style-image:none; 
+       list-style-image:none; 
 }
 li.link {
-    list-style-image: 
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZ
 [...]
+       list-style-image: 
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPS
 [...]
 }
 li.sublink {
-    list-style-image: 
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZ
 [...]
+       list-style-image: 
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPS
 [...]
 }
 li.extlink {
-    list-style-image: 
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZ
 [...]
+       list-style-image: 
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPS
 [...]
 }
 li.jc {
-    list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZ
 [...]
+       list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZzIG
 [...]
 }
 li.jac {
-    list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZ
 [...]
+       list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZzIG
 [...]
 }
 li.jic {
-    list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZ
 [...]
+       list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZzIG
 [...]
 }
 li.ja {
-    list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZ
 [...]
+       list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZzIG
 [...]
 }
 li.jm {
-    list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxMiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTE4MCA0ODAgNzIwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZ
 [...]
+       list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxMiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTE4MCA0ODAgNzIwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZzIG
 [...]
 }
 li.jf {
-    list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxMiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTE4MCA0ODAgNzIwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDk2MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZ
 [...]
+       list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxMiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTE4MCA0ODAgNzIwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDk2MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZzIG
 [...]
 }
 li.jp {
-    list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZ
 [...]
+       list-style-image: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIxNiIgCgl3aWR0aD0iMjQiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiBib2xkIDM1MHB4IHNhbnMtc2VyaWY7IHRleHQtc2hhZG93OiAxcHggMXB4IDFweCBibGFjazt9CiAgPC9zdHlsZT4KCTxkZWZzIG
 [...]
 }
 ul.notes>li {
-    background: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIyNCIgCgl3aWR0aD0iMzIiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiAzNTBweCBzYW5zLXNlcmlmOyB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggYmxhY2s7fQogIDwvc3R5bGU+Cgk8ZGVmcyBpZD0iZGVmc
 [...]
+       background: 
url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgCglpZD0ic3ZnMjgxMCIgCgl4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIAoJeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIAoJaGVpZ2h0PSIyNCIgCgl3aWR0aD0iMzIiIAoJdmVyc2lvbj0iMS4wIiAKCXZpZXdCb3g9IjAgLTEyMCA0ODAgNjAwIj4KICA8c3R5bGU+CiAgICAuaGVhdnkgeyBmb250OiAzNTBweCBzYW5zLXNlcmlmOyB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggYmxhY2s7fQogIDwvc3R5bGU+Cgk8ZGVmcyBpZD0iZGVmczI4
 [...]
        padding: 5px 10px 10px 40px;
        list-style: none;
        margin-left: -40px;
@@ -464,8 +463,8 @@ ul.notes ul.compact li {
 /* Article links */
 a.doclink {
        text-decoration: none;
-    color: #4c6b87;
-       font-weight: bold;
+       color: #4c6b87;
+               font-weight: bold;
        border-bottom: 1px dotted #4c6b87;
 }
 

Reply via email to