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 f2ee262cd Update new docs
f2ee262cd is described below

commit f2ee262cd8a69f6d24ebd7945fa12847fdc354f2
Author: James Bognar <[email protected]>
AuthorDate: Mon Sep 15 16:38:54 2025 -0400

    Update new docs
---
 .../02.juneau-marshall/01.jm.Marshallers.html      |  52 +--
 juneau-docs-poc/docs/release-notes/5.0.0.07.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.0.0.09.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.0.0.10.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.0.0.11.md     |   2 +-
 juneau-docs-poc/docs/release-notes/5.0.0.12.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.0.0.13.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.0.0.14.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.0.0.18.md     |   2 +-
 juneau-docs-poc/docs/release-notes/5.0.0.20.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.0.0.21.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.0.0.22.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.0.0.24.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.0.0.25.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.1.0.00.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.1.0.03.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.1.0.10.md     |   8 +-
 juneau-docs-poc/docs/release-notes/5.1.0.11.md     |   8 +-
 juneau-docs-poc/docs/release-notes/5.1.0.12.md     |   4 +-
 juneau-docs-poc/docs/release-notes/5.1.0.13.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.1.0.14.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.1.0.15.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.1.0.16.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.1.0.17.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.1.0.18.md     |   2 +-
 juneau-docs-poc/docs/release-notes/5.1.0.19.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.1.0.20.md     |   6 +-
 juneau-docs-poc/docs/release-notes/5.2.0.0.md      |  12 +-
 juneau-docs-poc/docs/release-notes/5.2.0.1.md      |   6 +-
 juneau-docs-poc/docs/release-notes/6.0.0.md        |   6 +-
 juneau-docs-poc/docs/release-notes/6.0.1.md        |   2 +-
 juneau-docs-poc/docs/release-notes/6.1.0.md        |   4 +-
 juneau-docs-poc/docs/release-notes/6.2.0.md        |   8 +-
 juneau-docs-poc/docs/release-notes/6.3.0.md        |  10 +-
 juneau-docs-poc/docs/release-notes/6.3.1.md        |   6 +-
 juneau-docs-poc/docs/release-notes/6.4.0.md        |  10 +-
 juneau-docs-poc/docs/release-notes/7.0.0.md        |   6 +-
 juneau-docs-poc/docs/release-notes/7.0.1.md        |   8 +-
 juneau-docs-poc/docs/release-notes/7.1.0.md        |  14 +-
 juneau-docs-poc/docs/release-notes/7.2.0.md        |  12 +-
 juneau-docs-poc/docs/release-notes/7.2.1.md        |   6 +-
 juneau-docs-poc/docs/release-notes/8.0.0.md        |  16 +-
 juneau-docs-poc/docs/release-notes/8.1.0.md        |   8 +-
 juneau-docs-poc/docs/release-notes/8.1.1.md        |   8 +-
 juneau-docs-poc/docs/release-notes/8.1.2.md        |   6 +-
 juneau-docs-poc/docs/release-notes/8.1.3.md        |   8 +-
 juneau-docs-poc/docs/release-notes/8.2.0.md        |  12 +-
 juneau-docs-poc/docs/release-notes/9.0.0.md        |  14 +-
 .../docs/topics/02.01.Module-juneau-marshall.md    |   9 +-
 ...02.Marshallers.md => 02.02.Marshallers-test.md} |  29 +-
 ...2.Marshallers.md => 02.02.Marshallers-test2.md} |  29 +-
 juneau-docs-poc/docs/topics/02.02.Marshallers.md   |  30 +-
 .../topics/03.01.Module-juneau-marshall-rdf.md     |   8 +-
 .../docs/topics/04.01.Module-juneau-dto.md         |  10 +-
 .../docs/topics/05.01.Module-juneau-config.md      |   6 +-
 .../docs/topics/06.01.Module-juneau-assertions.md  |   8 +-
 .../docs/topics/07.01.Module-juneau-rest-common.md |   8 +-
 .../docs/topics/08.01.Module-juneau-rest-server.md |  72 ++--
 .../09.01.Module-juneau-rest-server-springboot.md  |   8 +-
 .../docs/topics/10.01.Module-juneau-rest-client.md |   8 +-
 .../docs/topics/11.01.Module-juneau-rest-mock.md   |   8 +-
 .../12.01.Module-juneau-microservice-core.md       |   8 +-
 .../13.01.Module-juneau-microservice-jetty.md      |   8 +-
 .../docs/topics/16.03.App-juneau-petstore-api.md   |   2 +-
 juneau-docs-poc/docs/topics/temp.json              |   0
 juneau-docs-poc/html-to-md-converter.js            | 410 +++++++++++++++++++++
 .../src/components/ClassHierarchy.module.css       | 160 +++++++-
 juneau-docs-poc/src/components/ClassHierarchy.tsx  |  61 ++-
 juneau-docs-poc/src/css/custom.css                 | 167 ++++-----
 69 files changed, 981 insertions(+), 430 deletions(-)

diff --git a/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html
index 87511eda1..634ce091b 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/01.jm.Marshallers.html
@@ -21,34 +21,44 @@
                and {@link oaj.parser.Parser} with convenience methods for 
serializing and parsing POJOs.
        </p>
        <ul class='javatree'>
-               <li class='jac'>{@link oaj.marshaller.Marshaller}
+               <li class='jac'>
+                       {@link oaj.marshaller.Marshaller}
                        <ul>
-                               <li class='jm'><c>T</c>&nbsp;&nbsp;{@link 
oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class&lt;T&gt;)}
+                               <li class='jm'>
+                                       <c>T</c>&nbsp;&nbsp;{@link 
oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class&lt;T&gt;)}
+                               </li>
                        </ul>
                        <ul>
-                               <li class='jac'>{@link 
oaj.marshaller.CharMarshaller}
+                               <li class='jac'>
+                                       {@link oaj.marshaller.CharMarshaller}
                                        <ul>
-                                               <li 
class='jm'><c>String</c>&nbsp;&nbsp;{@link 
oaj.marshaller.CharMarshaller#write(Object) write(Object)}
-                                               <ul class='javatreec'>
-                                                       <li class='jc'>{@link 
oaj.marshaller.Csv}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.Html}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.Json}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.OpenApi}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.PlainText}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.Json5}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.Uon}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.UrlEncoding}</li>
-                                                       <li class='jc'>{@link 
oaj.marshaller.Xml}</li>
-                                               </ul>
+                                               <li class='jm'>
+                                                       
<c>String</c>&nbsp;&nbsp;{@link oaj.marshaller.CharMarshaller#write(Object) 
write(Object)}
+                                                       <ul class='javatreec'>
+                                                               <li 
class='jc'>{@link oaj.marshaller.Csv}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.Html}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.Json}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.OpenApi}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.PlainText}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.Json5}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.Uon}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.UrlEncoding}</li>
+                                                               <li 
class='jc'>{@link oaj.marshaller.Xml}</li>
+                                                       </ul>
+                                               </li>
                                        </ul>
-                               <li class='jac'>{@link 
oaj.marshaller.StreamMarshaller}
+                               </li>
+                               <li class='jac'>
+                                       {@link oaj.marshaller.StreamMarshaller}
                                        <ul>
-                                               <li 
class='jm'><c><jk>byte</jk>[]</c>&nbsp;&nbsp;{@link 
oaj.marshaller.StreamMarshaller#write(Object) write(Object)}
-                                               <ul class='javatreec'>
-                                                       <li class='jc'>{@link 
oaj.marshaller.MsgPack}</li>
-                                               </ul>
+                                               <li class='jm'>
+                                                       
<c><jk>byte</jk>[]</c>&nbsp;&nbsp;{@link 
oaj.marshaller.StreamMarshaller#write(Object) write(Object)}
+                                                       <ul class='javatreec'>
+                                                               <li 
class='jc'>{@link oaj.marshaller.MsgPack}</li>
+                                                       </ul>
+                                               </li>
                                        </ul>
-                               </ul>
+                               </li>
                        </ul>
                </li>
        </ul>
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.07.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.07.md
index 4aa6d257d..30cf2acb2 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.07.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.07.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.7"
 **Date:** Jan 20, 2013
 
 Juno 5.0.0.7 is a major update.
-###### Core API updates
+#### Core API updates
 
 - Combined previous 3 libraries into a single library.
 
@@ -61,12 +61,12 @@ Automatic support for \{@link java.net.URL\} and \{@link 
java.net.URI\} objects.
 
 Improvements to Javadocs.
 Improved ~~PojoQuery~~ support.
-###### REST client updates
+#### REST client updates
 
 - GZIP compression support.
 - Bug fixes.
 
-###### REST server updates
+#### REST server updates
 
 Support for overriding bean context and serializer properties in a REST method 
call through new ~~RestResponse.setProperty(String,Object)~~method.
 For example, allows you to control whitespace options on a per-request basis.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.09.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.09.md
index fc4a594be..0c8d0c491 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.09.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.09.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.9"
 **Date:** Feb 26, 2013
 
 Juno 5.0.0.9 is a moderate update.
-###### Core API changes
+#### Core API changes
 
 \{@link oaj.config INI config file support\}:
 - A convenient API for reading, writing, and manipulating INI files.
@@ -18,7 +18,7 @@ Juno 5.0.0.9 is a moderate update.
 - Ability to use \{@link oaj.annotation.Bean @Bean\} annotation to override 
bean identification settings.
 - New ~~ObjectMap.cast(Class)~~method to convert `ObjectMaps` directly to 
beans.
 
-###### REST server API changes
+#### REST server API changes
 
 - Build-in default `OPTIONS` pages.
 - New [email protected]~~and 
[email protected]~~annotations.
@@ -30,6 +30,6 @@ Juno 5.0.0.9 is a moderate update.
 - New ~~@HasParam~~annotation.
 - Full RFC2616 support for matching `Accept` headers to serializers.           
 
-###### Other notes
+#### Other notes
 
 - Smaller library size (460kB).
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.10.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.10.md
index 72a002e9c..811debdbc 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.10.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.10.md
@@ -7,12 +7,12 @@ title: "Release 5.0.0.10"
 **Date:** Mar 7, 2013
 
 Juno 5.0.0.10 is a minor update.
-###### Core API changes
+#### Core API changes
 
 New ~~ObjectMap.findKeyIgnoreCase(String)~~method.
 - HtmlSerializer will now create 2-dimensional tables for collections of mixed 
beans/maps if all object have the same set of property names/keys.
 
-###### REST server API changes
+#### REST server API changes
 
 - New `RestServletProperties` class that defines all the class-level 
properties that can be set on the servlet.
 - Properties can be set through [email protected]~~annotation, or new 
~~RestServlet.setProperty(String,Object)~~method.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.11.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.11.md
index af974e4cc..d31a6ac2a 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.11.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.11.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.11"
 **Date:** Mar 8, 2013
 
 Juno 5.0.0.11 is a moderate update.
-###### REST server API changes
+#### REST server API changes
 
 New `UrlEncodingRestSerializer` and `UrlEncodingRestParser` classes.
 Allows parsing form posts directly to POJOs.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.12.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.12.md
index 15e303ed0..3e499c23b 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.12.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.12.md
@@ -7,12 +7,12 @@ title: "Release 5.0.0.12"
 **Date:** Mar 10, 2013
 
 Juno 5.0.0.12 is a minor update.
-###### Core API changes
+#### Core API changes
 
 Relaxed method naming conventions when using ~~@BeanProperty~~ annotation.
 Methods with zero parameters are interpreted as getters, and methods with one 
parameter are interpreted as setters.
 Eliminated the `BeanProperty.method` annotation, since it's now unnecessary.
-###### REST server API changes
+#### REST server API changes
 
 Significantly improved response error messages.
 Older messages were rather cryptic.   Error conditions should be much easier 
to debug now.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.13.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.13.md
index 0eaae4593..fb7cb5bbe 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.13.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.13.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.13"
 **Date:** Mar 14, 2013
 
 Juno 5.0.0.13 is a minor update.
-###### Core API changes
+#### Core API changes
 
 New support for relative URIs.
 - URIs of the form "foo/bar" are interpreted as relative to the context root 
of the web application.
@@ -18,7 +18,7 @@ New ~~URI @URI~~ annotation that allows you to specify 
classes and bean properti
 New ~~HtmlSerializer.HTML_uriAnchorText~~HTML serializer property for 
tailoring how anchor text is rendered.
 Renamed `BeanProperty#uri` annotation to `BeanProperty#beanUri` to make it 
clear that this property represents the URI of the bean itself instead of an 
arbitrary property containing a URI.
 Removed `BeanProperty#id` annotation.
-###### REST server API changes
+#### REST server API changes
 
 Improvements to ~~RestServlet~~ to automatically handle relative URIs in POJOs.
 - `SerializerContext.SERIALIZER_uriContext` property set by default to web app 
context root.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.14.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.14.md
index afa54bde6..e22db2552 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.14.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.14.md
@@ -10,7 +10,7 @@ Juno 5.0.0.14 is a major update.
 The biggest change is that the `RestSerializer`, `RestParser`, 
`RestSerializerGroup`, and `RestParserGroup` classes have been eliminated 
entirely.
 Instead, the existing \{@link oaj.serializer.Serializer\}, \{@link 
oaj.parser.Parser\}, ~~SerializerGroup~~, and ~~ParserGroup~~ classes of the 
core API have been augmented to replace them.
 Adoptions will be required if you have previously used these classes.
-###### Core API changes
+#### Core API changes
 
 New `org.apache.juneau.serializer` package.
 - Entirely reworked class hierarchy to make it easier to define new 
serializers.
@@ -50,12 +50,12 @@ Improved cloning support on the \{@link oaj.BeanContext\} 
class.
 
 `JsonMap` and `JsonList` changed to ~~ObjectMap~~ and ~~ObjectList~~ to better 
reflect that they're not limited to just JSON support.
 Renamed `PojoSwap` to ~~PojoQuery~~ to not confuse it with the new Filter API.
-###### REST server API changes
+#### REST server API changes
 
 Eliminated `org.apache.juneau.rest.serializers` and 
`org.apache.juneau.rest.parsers` packages.
 - All existing REST serializers and parsers merged into the core API.
 
-###### REST client API changes
+#### REST client API changes
 
 Simplified \{@link oajrc.RestClient\} API.
 - You can now only specify a single serializer or parser per client.  This 
significantly simplifies the code.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.18.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.18.md
index 6846847eb..9ac79cd83 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.18.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.18.md
@@ -13,6 +13,6 @@ There are plans of adding an equivalent `RdfParser` class in 
the future, so the
 The `RdfXmlSerializer` class should be considered deprecated for now.
 However, I'm keeping it around, since it's considerably faster and uses far 
less memory than the Jena-based serializer since it serializes directly from 
POJOs to RDF/XML.
 It may or may not be removed in the future depending on demand.
-###### Other changes
+#### Other changes
 
 New ~~JsoParser~~ class.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.20.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.20.md
index 5384adf43..98b484229 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.20.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.20.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.20"
 **Date:** Apr 7, 2013
 
 Juno 5.0.0.20 is a major update.
-###### Core API changes
+#### Core API changes
 
 New Jena-based ~~RdfSerializer~~ for serializing POJOs to RDF/XML, 
RDF/XML-ABBREV, N-Triple, Turtle, and N3.
 Serializes ANY POJOs to RDF, even simple objects and primitives.
@@ -16,7 +16,7 @@ New Jena-based ~~RdfParser~~ for parsing RDF/XML, 
RDF/XML-ABBREV, N3, Turtle, an
 The old default value would cause XML with unmapped namespaces if you didn't 
manually specify them via the ~~XmlSerializerContext.XML_namespaces~~ 
annotation.
 While setting the default to true is somewhat slower (since the serializer 
must crawl the POJO tree to find namespaces), the benefits of having it work 
out-of-the-box outweighs the performance concerns.
 For developers concerned about performance, they can always change it back to 
false and specify the namespaces themselves.     
-###### REST server API changes
+#### REST server API changes
 
 Allow inheritance of ~~@RestResource~~ annotation.
 Serializers, parsers, filters, properties , guards, and converters definitions 
are automatically inherited from parent classes and interfaces.
@@ -34,6 +34,6 @@ New methods on ~~RestServlet~~:
 - `RestServlet.createParsers()`
 
 These augment the existing `getBeanContext()` / `getSerializers()` / 
`getParsers()` methods.           
-###### REST client API changes
+#### REST client API changes
 
 New `RestCall.setDateHeader(String,Object)` method for setting ISO8601 
datetime headers.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.21.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.21.md
index 3c7956db1..bcbfc41b9 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.21.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.21.md
@@ -7,11 +7,11 @@ title: "Release 5.0.0.21"
 **Date:** Apr 9, 2013
 
 Juno 5.0.0.21 is a minor update.
-###### Core API changes
+#### Core API changes
 
 New ~~HtmlDocSerializerContext.HTMLDOC_navlinks~~ annotation for addint links 
to HTML page views.
 Renamed the properties in ~~HtmlDocSerializerContext~~ for clarity.
-###### Servlet API changes
+#### Servlet API changes
 
 Added new `RestServlet.addDefaultProperties(ObjectMap,RestRequest)` method for 
programatically adding properties to the property map per request.
 Added the following new properties in the properties map to make them easily 
available to serializers and parsers (since they don't have access to the HTTP 
request object).
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.22.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.22.md
index 4b54dbabb..c655bdb3e 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.22.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.22.md
@@ -7,11 +7,11 @@ title: "Release 5.0.0.22"
 **Date:** Apr 12, 2013
 
 Juno 5.0.0.22 is a minor update.
-###### Core API changes
+#### Core API changes
 
 New `@Property.nls()` annotation for specifying localized property values.
 For example, allows you to set the HTMLDOC_title and HTMLDOC_description 
properties to localized values pulled from a resource bundle.
 See the `AddressBookResource` class for an example.
-###### REST Servlet API changes
+#### REST Servlet API changes
 
 - Fix a bug where the `&Content` query parameter was not always parsed 
correctly.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.24.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.24.md
index c81079049..86b796b04 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.24.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.24.md
@@ -7,7 +7,7 @@ title: "Release 5.0.0.24"
 **Date:** May 9, 2013
 
 Juno 5.0.0.24 is a major update.
-###### Core API updates
+#### Core API updates
 
 New support for \{@link oaj.dto.atom ATOM\}.
 New `AtomFeedResource` class added to sample war.
@@ -22,7 +22,7 @@ Fixed timezone bug in ~~CalendarSwap~~.
 Simplified `Serializer.serialize(Object,Object,SerializerContext)` method.
 Fixed bug where lists returned by ~~ObjectMap.getObjectList(String)~~were not 
updatable.
 Eliminated old RDF/XML serializer.
-###### Documentation updates
+#### Documentation updates
 
 - New \{@link oaj.json JSON Support Overview\} document.
 - New \{@link oaj.xml XML Support Overview\} document.
diff --git a/juneau-docs-poc/docs/release-notes/5.0.0.25.md 
b/juneau-docs-poc/docs/release-notes/5.0.0.25.md
index 6f134b993..24b2e344b 100644
--- a/juneau-docs-poc/docs/release-notes/5.0.0.25.md
+++ b/juneau-docs-poc/docs/release-notes/5.0.0.25.md
@@ -7,11 +7,11 @@ title: "Release 5.0.0.25"
 **Date:** May 11, 2013
 
 Juno 5.0.0.25 is a minor update.
-###### Core API updates
+#### Core API updates
 
 New \{@link oaj.dto.ResultSetList\} DTO for serializing SQL result sets to 
JSON/XML/HTML and so forth.
 New `SqlQueryResource` class in the sample war for demonstrating the 
`ResultSetList` DTO.
-###### Server API updates
+#### Server API updates
 
 Fixed issue with media type for CSS files being reported as "text/plain" 
instead of "text/css".
 Moved initialization of class properties to before the call to 
`Servlet.init()` so that `getProperties()` can be called during servlet 
initialization.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.00.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.00.md
index 1f5c43385..fb2bee765 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.00.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.00.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.0"
 **Date:** Jan 18, 2014
 
 Juno 5.1.0.0 is a major update.
-###### Major changes
+#### Major changes
 
 Brand new REST client API that uses Apache HttpClient for HTTP communication.
 The new client API is simply a thin layer on top of `HttpClient` that performs 
@@ -30,7 +30,7 @@ However, it could interfere with garbage collection of the 
original string objec
 Instead, the existing \{@link oaj.parser.ParserReader\} was enhanced to work
 well with `String` input, and tests show no significant performance 
differences.
 New `org.apache.juneau.parser.Parser.parse(Object,int,ClassMeta)` convenience 
method added.
-###### Other changes
+#### Other changes
 
 Various new methods added to ~~StringUtils~~ and ~~ClassUtils~~.
 Improved support on ~~BeanContext.getClassMetaFromString(String)~~.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.03.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.03.md
index 5d4f28cb4..1cfcd0acc 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.03.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.03.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.3"
 **Date:** Jun 28, 2014
 
 Juno 5.1.0.3 is a moderate update.
-###### Core API updates
+#### Core API updates
 
 Ability to detect and use non-public bean classes, getters/setters, and fields 
using the following new properties:
 ~~BeanContext.BEAN_beanConstructorVisibility~~- Control which bean 
constructors are visible to Juno.
@@ -35,7 +35,7 @@ The previous behavior was not strictly JSON-compliant since 
JSON objects are sup
 While targeted for JSON, the restriction is also lifted for all other parsers. 
        
 New fluent-style \{@link oaj.BeanMap#load(String) BeanMap.load()\} methods for 
initializing bean maps.
 \{@link oaj.html.HtmlDocSerializer\} will now embed the data portion of the 
output in a ` id='data'>` element to make it easier to extract the data portion 
of the page in Javascript in browsers.
-###### REST Server API updates
+#### REST Server API updates
 
 New ~~RestRequest.getJavaMethod()~~method for getting access to the method 
used to handle a request.
 Useful for accessing the method name or annotations during requests, such as 
in calls to ~~RestGuard.guard(RestRequest,RestResponse)~~.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.10.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.10.md
index d31df7fb2..e1655312c 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.10.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.10.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.10"
 **Date:** Dec 23, 2014
 
 Juno 5.1.0.10 is a moderate update.
-###### Core            
+#### Core              
 
 Major changes to URL-Encoded serializer and parser.
 Logic for serializing and parsing URL-Encoded key-value pairs moved to \{@link 
oaj.urlencoding.UrlEncodingSerializer\} and \{@link 
oaj.urlencoding.UrlEncodingParser\} classes.
@@ -19,7 +19,7 @@ Fixed bug in ~~BeanContext.addTransforms(Class[])~~that would 
cause filter order
 Fixed indentation bugs in \{@link oaj.html.HtmlSerializer\}.
 Fixed issue in \{@link oaj.html.HtmlSerializer\} where newlines were not being 
converted into line breaks.
 New \{@link oaj.serializer.WriterSerializer#toString(Object)\} method that's 
identical to the serialize method but throws `RuntimeExceptions` to make the 
serializer easier to use for debugging.
-###### Server          
+#### Server            
 
 Fixed major issue that prevented parsing URL-Encoded form posts into POJOs.
 Calling ~~HttpServlet.getParameter(String)~~was forcing the underlying servlet 
code to process the HTTP body itself, preventing the `UrlEncodingSerializer`
@@ -32,7 +32,7 @@ Removed properties parameters from 
~~RestServlet.onPreCall(RestRequest)~~and ~~R
 since the properties are already accessible through 
`RestRequest.getProperties()`.
 Added \{@link oaj.uon.UonSerializer\} and \{@link oaj.uon.UonParser\} to 
serializer and parser lists on 
 ~~BasicRestServlet~~and ~~RestServletJenaDefault~~.
-###### Client          
+#### Client            
 
 Moved to Apache HttpClient 4.3 to match Jazz 6.0.
 Renamed `RestResponseEntity` to ~~RestRequestEntity~~.
@@ -44,7 +44,7 @@ New methods on \{@link oajrc.RestClient\} class that makes it 
easier to associat
 ~~RestClient.addTransforms(Class[])~~          
 ~~RestClient.addImplClass(Class,Class)~~       
 Renamed `RestClient.shutdown()` to \{@link oajrc.RestClient#close()\} to 
mirror change in Apache API.          
-###### Samples         
+#### Samples           
 
 New `CodeFormatterResource` for quickly formatting Java and XML code samples 
in Javadocs.
 New `UrlEncodedFormResource` for showing how to work with URL-Encoded form 
posts.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.11.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.11.md
index 21d041dab..fa43a0be7 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.11.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.11.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.11"
 **Date:** Feb 14, 2015
 
 Juno 5.1.0.11 is a moderate update.
-###### Core            
+#### Core              
 
 Additions to \{@link oaj.html.annotation.Html @Html\} bean annotation.
 New \{@link oaj.html.annotation.Html#noTables() @Html(noTables)\} annotation 
that prevents
@@ -28,7 +28,7 @@ Performance improvements when using the \{@link 
oaj.BeanMap#add(String,Object)\}
 Array properties are stored in a temporary list cache until \{@link 
oaj.BeanMap#getBean()\} is called.
 New ~~BeanPropertyMeta.add(BeanMap,Object)~~ method for adding values to 
Collection and array properties.
 Config INI files now support keys with name "*".
-###### Server          
+#### Server            
 
 REST method parameters can now be generic types (e.g. @Param("foo") Map foo).
 This applies to headers, attributes, and parameters.
@@ -51,7 +51,7 @@ the `Content-Type` through this method was inconsistent with 
the behavior in WAS
 Workaround for Jetty issue where `ServletContext.getContextPath()` always ends 
with "null".
 `RestServletProperties.REST_allowMethodParam` is now true by default on all 
subclasses 
 of ~~BasicRestServlet~~ and ~~RestServletJenaDefault~~.
-###### Client          
+#### Client            
 
 New method ~~RestCall.allowRedirectsOnPosts(boolean)~~.
 New method `RestCall.peekInputStream()` allows you to read response bodies 
without interrupting execution flow.
@@ -61,7 +61,7 @@ Shows all request/response headers and bodies.
 New method `RestClient.addListener(RestClientListener)` for registering 
request/response listeners.
 New ~~RestClient.setClassLoader(ClassLoader)~~method.
 TLS support in `JazzRestClient`.
-###### Other changes   
+#### Other changes     
 
 `samples.ear` and `samples.war` projects
 have been replaced with an OSGi bundle with activated servlets in 
`juno.samples`.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.12.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.12.md
index 802a32af8..95a8c06da 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.12.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.12.md
@@ -7,12 +7,12 @@ title: "Release 5.1.0.12"
 **Date:** Mar 28, 2015
 
 Juno 5.1.0.12 is a minor update.
-###### Core            
+#### Core              
 
 Fixed ~~ConfigFile.isEmpty()~~method.
 Changed behavior on \{@link oaj.uon.UonParser\} to not treat '~' characters as 
escapes
 unless followed by one of the following characters:  `( ) , $ = ~`.
-###### Client          
+#### Client            
 
 New class ~~RestCallInterceptor~~.  
 Allows responses to be inspected and modified before being processed.  
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.13.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.13.md
index 708bb1d7d..052967019 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.13.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.13.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.13"
 **Date:** Apr 24, 2015
 
 Juno 5.1.0.13 is a minor update.
-###### Core            
+#### Core              
 
 \{@link oaj.ClassMeta#newInstance()\} method can now create new instances of 
arrays.
 Arguments passed to ~~Link~~ are now serialized using \{@link 
oaj.urlencoding.UrlEncodingSerializer\}, so arbitrary POJOs can now be passed 
as arguments.
@@ -17,14 +17,14 @@ Adds "* \{white-space:nowrap\}" to the style header to 
prevent word wrapping.
 Fixed bug in \{@link oaj.uon.UonParser\} where passing in a blank value on an 
array or collection type in a form post would cause a `ClassCastException`.  
 New behavior creates an empty array or `Collection`.
 Improved implementation of ~~UrlEncodingSerializer.serializeUrlPart(Object)~~ 
method.
-###### Server          
+#### Server            
 
 ~~RestConverter~~ API fixed to handle the existence of POJO filters.
 ~~Introspectable~~/~~Queryable~~/~~Traversable~~ classes can now work with 
filtered POJOs.  
 ~~@RestResource(messages)~~annotation can now be defined on super and 
subclasses so that NLS messages can be defined in multiple resource bundles.
 Performance improvements in `RestServletNls` class. 
 Fixed bug where two REST java methods mapped to the same path pattern wasn't 
triggering an exception when it was supposed to.
-###### Client          
+#### Client            
 
 New ~~RestCall.setRedirectMaxAttempts(int)~~method to prevent endless 
redirection loops.
 New ~~RestCall.setRetryable(int,long,RetryOn)~~method to automatically retry 
on failed connection attempts.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.14.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.14.md
index 03ca4e388..8315fdc61 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.14.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.14.md
@@ -9,16 +9,16 @@ title: "Release 5.1.0.14"
 Juno 5.1.0.14 is a moderate update.
 The major addition is support for Remoteable Services, the ability
 to invoke server-side POJO methods through client-side proxy interfaces.
-###### Core            
+#### Core              
 
 Simplified ~~PojoIntrospector~~ class.
 New ~~ClassUtils.getMethodSignature(Method)~~method.
-###### Client          
+#### Client            
 
 New methods in \{@link oajrc.RestClient\} for working with remoteable services:
 ~~RestClient.setRemoteableServletUri(String)~~
 ~~RestClient.getRemoteableProxy(Class)~~
-###### Server          
+#### Server            
 
 Added a default OPTIONS page to ~~BasicRestServlet~~and 
~~RestServletJenaDefault~~.
 `RestServletProperties.REST_allowMethodParam` has been enhanced to allow you to
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.15.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.15.md
index 88d8ee697..e4e348939 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.15.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.15.md
@@ -7,21 +7,21 @@ title: "Release 5.1.0.15"
 **Date:** May 24, 2015
 
 Juno 5.1.0.15 is a minor update.
-###### Core
+#### Core
 
 New properties in ~~SerializerContext~~:
 ~~SerializerContext.SERIALIZER_relativeUriBase~~
 ~~SerializerContext.SERIALIZER_absolutePathUriBase~~
 These replace the `SERIALIZER_uriAuthority` and `SERIALIZER_uriContext` 
properties.
 Improvements in \{@link oaj.csv.CsvSerializer\}.
-###### Server
+#### Server
 
 New properties in `RestServletProperties`:
 `REST_defaultCharset`
 `REST_servletURI`
 `REST_relativeServletURI`
 Improvements involving path calculations when servlets deployed outside of a 
war file with a context root.
-###### Client
+#### Client
 
 New methods in ~~RestCall~~:
 ~~RestRequest.getHeader(String,Class)~~
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.16.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.16.md
index 16b9c9a83..ba101c25d 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.16.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.16.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.16"
 **Date:** June 28, 2015
 
 Juno 5.1.0.16 is a moderate update.
-###### Core
+#### Core
 
 New methods on \{@link oaj.ClassMeta\} that eliminates language-specific code 
in 
 the general class metadata.
@@ -28,11 +28,11 @@ Fixed warning message about "tab" setting when using the 
N3/Turtle serializers.
 New ~~SerializerContext.SERIALIZER_sortCollections~~and 
 ~~SerializerContext.SERIALIZER_sortMaps~~properties.
 FindBug fixes.
-###### Server
+#### Server
 
 New ~~RestRequest.getServletParentURI()~~method.
 New `$R\{servletParentURI\}` variable.
 Removed final modifier from ~~ChildResourceDescriptions~~.
-###### Samples
+#### Samples
 
 Added source code links to examples.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.17.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.17.md
index 186abbb96..7e68e4583 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.17.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.17.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.17"
 **Date:** Aug 3, 2015
 
 Juno 5.1.0.17 is a major update.
-###### Core
+#### Core
 
 \{@link oaj.BeanMap#get(Object)\} and \{@link oaj.BeanMap#put(String,Object)\} 
now
 automatically performs filtering if filters are defined on the bean property 
or bean property class.
@@ -31,7 +31,7 @@ New ~~ZipFileList~~class for providing efficiently zipped 
directories through th
 New `RdfProperties.RDF_useXmlNamespaces` property.                     
 New ~~XmlParserContext.XML_preserveRootElement~~ property.
 Worked around bug in Sun VM on OS/X where XML parser was throwing an exception 
when trying to set a reporter.                  
-###### Server
+#### Server
 
 New ~~ZipFileListResponseHandler~~class.
 Simplified labels in servlet resource bundles:
@@ -96,6 +96,6 @@ want to provide labels in resource bundles.
 ~~Param.description()~~
 ~~QParam.description()~~
 Support for sorting resources by name in ~~ChildResourceDescriptions~~.
-###### Samples
+#### Samples
 
 Added `/tempDir/upload` showing how to use `ServletFileUpload` with multipart 
form posts.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.18.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.18.md
index f02d284ec..d5c276db7 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.18.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.18.md
@@ -7,7 +7,7 @@ title: "Release 5.1.0.18"
 **Date:** Aug 5, 2015
 
 Juno 5.1.0.18 is a minor update affecting the server component only.
-###### Server
+#### Server
 
 Fixed bug where localized strings weren't resolving when using chained 
resource bundles.
 Servlet and method labels and descriptions can now contain embedded string 
variables.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.19.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.19.md
index 2b745700b..f122fd65e 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.19.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.19.md
@@ -8,7 +8,7 @@ title: "Release 5.1.0.19"
 
 Juno 5.1.0.19 is a minor update in terms of core functionality.
 But it introduces a ~~Microservices~~ project for building REST microservices 
and docker containers.
-###### Core
+#### Core
 
 Beans can now be serialized to and parsed from ~~ObjectMap ObjectMaps~~.
 See Serializing to ObjectMaps for details.
@@ -16,10 +16,10 @@ New ~~ObjectMap.include(String[])~~and 
~~ObjectMap.exclude(String[])~~methods.
 \{@link oaj.html.annotation.Html @Html\} annotations can now be applied to 
bean properties.
 New ~~IOPipe~~ utility class.
 Behavior change on ~~StringVarResolver~~.  null input now results in blank 
strings instead of null.
-###### Client
+#### Client
 
 New ~~RestClient.doCallback(String)~~method.
-###### Server
+#### Server
 
 New \{@link oajr.RestRequest#getHeaders()\} method.
 New `RestResponse.getUnbufferedWriter()` method.
diff --git a/juneau-docs-poc/docs/release-notes/5.1.0.20.md 
b/juneau-docs-poc/docs/release-notes/5.1.0.20.md
index 2547a05db..ed528dda3 100644
--- a/juneau-docs-poc/docs/release-notes/5.1.0.20.md
+++ b/juneau-docs-poc/docs/release-notes/5.1.0.20.md
@@ -8,7 +8,7 @@ title: "Release 5.1.0.20"
 
 Juno 5.1.0.20 is a moderate update.
 The biggest improvement is the ability to associate external INI config files 
with REST servlets using the ~~ConfigFile~~ functionality.
-###### Core
+#### Core
 
 Significant API changes to `org.apache.juneau.config` API.
 ~~ConfigFile~~ is now thread safe and can be shared across multiple threads.
@@ -32,7 +32,7 @@ Various internal improvements to ~~IOPipe~~.
 New ~~ReflectionUtils.getResource(Class,String)~~method.
 ~~StringUtils.parseNumber(String,Class)~~ now returns zero for empty strings. 
 This affects the way most parsers handle blank values.
-###### Server
+#### Server
 
 You can now parse into non-static inner classes of a servlet for 
parameters/attributes/content.
 Useful if you like to define your marshaller beans inside your servlet.
@@ -68,7 +68,7 @@ New ~~@RestResource(config)~~ annotation for associating 
external ~~ConfigFile~~
 New `org.apache.juneau.rest.matcher` package for commonly-used 
~~RestMatchers~~:
 ~~MultipartFormDataMatcher~~
 ~~UrlEncodedFormMatcher~~
-###### Microservice
+#### Microservice
 
 New juneau-microservice.jar file that encapsulates all 3 juneau jars with code 
necessary for creating fast and efficent jetty-powered REST microservices.
 Contains the following:
diff --git a/juneau-docs-poc/docs/release-notes/5.2.0.0.md 
b/juneau-docs-poc/docs/release-notes/5.2.0.0.md
index ae200ba9c..9d08153b4 100644
--- a/juneau-docs-poc/docs/release-notes/5.2.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/5.2.0.0.md
@@ -8,7 +8,7 @@ title: "Release 5.2.0.0"
 
 Juno 5.2.0.0 is a major update.
 Major changes have been made to the microservice architecture and config INI 
file APIs.
-###### Core
+#### Core
 
 Significant changes and enhancements to the `org.apache.juneau.config` API.
 More consistent handling of comma-delimited lists of objects.
@@ -161,7 +161,7 @@ Renamed ~~CharSet~~ to ~~AsciiSet~~.
 so that resources that include Jena support can continue to operate even if 
the Jena libraries are not present.
 New \{@link oaj.internal.FileUtils#createTempFile(String)\} method.
 New ~~PojoQuery~~ modified to handle bean getters that throw exceptions.
-###### Client
+#### Client
 
 Upgraded to use Apache HttpClient 4.5.
 New classes:
@@ -259,7 +259,7 @@ These classes are now deprecated and will be removed in a 
future release:
 `org.apache.juneau.rest.client.jazz.LenientCertificateValidator`
 `org.apache.juneau.rest.client.jazz.SharedTrustStoreProvider`
 `org.apache.juneau.rest.client.jazz.ValidatingX509TrustManager`
-###### Server
+#### Server
 
 New ~~ReaderResource~~ class.   
 Represents the contents of a text file with convenience methods for resolving
@@ -307,7 +307,7 @@ New DevOps stylesheet.
 Servlet initialization and HTTP requests are now logged at FINE level.
 Added abstract modifier on various RestServlet subclasses to indicate that 
they're meant to be subclassed.
 New ~~RestUtils.trimPathInfo(StringBuffer,String,String)~~ method.
-###### Microservice
+#### Microservice
 
 Completely revamped API.
 New \{@link oaj.microservice.Microservice\} class that serves as a generic
@@ -336,11 +336,11 @@ New predefined reusable resources:
 \{@link oaj.microservice.resources.LogsResource\} - REST resource for viewing 
log files.
 \{@link oaj.microservice.resources.SampleRootResource\} - Sample REST resource 
that contains the config and logs resource as children.
 \{@link oaj.microservice.resources.ShutdownResource\} - REST resource for 
stopping the microservice JVM.  Useful for testing purposes.
-###### Samples
+#### Samples
 
 Converted to a REST microservice.
 Look-and-feel changed to IBM DevOps.
-###### Documentation Updates
+#### Documentation Updates
 
 ~~microservice~~ - New package-level javadoc.
 ~~config~~ - New package-level javadoc.
diff --git a/juneau-docs-poc/docs/release-notes/5.2.0.1.md 
b/juneau-docs-poc/docs/release-notes/5.2.0.1.md
index 25d83f12f..620b92909 100644
--- a/juneau-docs-poc/docs/release-notes/5.2.0.1.md
+++ b/juneau-docs-poc/docs/release-notes/5.2.0.1.md
@@ -7,7 +7,7 @@ title: "Release 5.2.0.1"
 **Date:** Mar 23, 2016
 
 Juno 5.2.0.1 is a moderate update.
-###### com.ibm.team.juno
+#### com.ibm.team.juno
 
 Improved support for multi-line values in config files.
 Any line that begins with whitespace is interpreted as a continuation of the 
previous line.
@@ -36,11 +36,11 @@ New ~~StringMapVar~~ class.
 New ~~StringVars~~ class with reusable common ~~StringVar~~ instances.
 New ~~JuneauLogger~~class.
 Default value for ~~XmlParserContext.XML_trimWhitespace~~changed to true.      
                
-###### Server
+#### Server
 
 New methods on \{@link oajr.RestContext\}:
 \{@link oajr.RestContext#getMessages()\}
-###### Client
+#### Client
 
 Fixed potential issue in \{@link oajrc.RestClient\} where the HTTP connection 
pool could end up exhausted if an error occurred.
 Improved thread safety on \{@link oajrc.RestClient\}.
diff --git a/juneau-docs-poc/docs/release-notes/6.0.0.md 
b/juneau-docs-poc/docs/release-notes/6.0.0.md
index 87ee877af..a39c29341 100644
--- a/juneau-docs-poc/docs/release-notes/6.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.0.0.md
@@ -8,7 +8,7 @@ title: "Release 6.0.0"
 
 Juneau 6.0.0 is a major update.
 The major change is rebranding from "Juno" to "Juneau" in preparation for 
donation to the Apache Foundation.
-###### org.apache.juneau
+#### org.apache.juneau
 
 Major changes around how serializer and parser class properties are defined to 
improve performance
 and concurrency.
@@ -76,7 +76,7 @@ Introduced new classes to eliminate the references to 
language-specific metadata
 ~~BeanPropertyMetaExtended~~/ ~~BeanPropertyMeta.getExtendedMeta(Class)~~ 
 Renamed `@Transform` annotation to ~~@Pojo~~ so that it can be used for 
various POJO-related behavior, not just associating transforms.  
 Introduced \{@link oaj.dto.swagger Swagger DTOs\}.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
 
 OPTIONS pages replaced with Swagger documents.
 Lots of changes related to supporting Swagger.
@@ -117,7 +117,7 @@ New/updated methods on ~~RestServlet~~:
 New client-version annotations:
 ~~RestResource.clientVersionHeader~~ - The name of the header used to identify 
the client version.
 ~~RestMethod.clientVersion~~ - The client version range applied to a Java 
method.
-###### org.apache.juneau.rest.client
+#### org.apache.juneau.rest.client
 
 Removed the `JazzRestClient` class.
 New method ~~RestClient.setClientVersion(String)~~.
diff --git a/juneau-docs-poc/docs/release-notes/6.0.1.md 
b/juneau-docs-poc/docs/release-notes/6.0.1.md
index d5b77eab2..88f5da390 100644
--- a/juneau-docs-poc/docs/release-notes/6.0.1.md
+++ b/juneau-docs-poc/docs/release-notes/6.0.1.md
@@ -7,7 +7,7 @@ title: "Release 6.0.1"
 **Date:** Jan 3, 2017
 
 Juneau 6.0.1 is a minor update.
-###### org.apache.juneau
+#### org.apache.juneau
 
 General improvements to JSON parser.
 Several fixes to handle obscure edge cases.
diff --git a/juneau-docs-poc/docs/release-notes/6.1.0.md 
b/juneau-docs-poc/docs/release-notes/6.1.0.md
index 6cfae3e70..d373f4371 100644
--- a/juneau-docs-poc/docs/release-notes/6.1.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.1.0.md
@@ -11,7 +11,7 @@ In particular, this release cleans up the \{@link 
oaj.BeanContext\} API to match
 the ~~PropertyStore~~/\{@link oaj.Context\}/~~Session~~ paradigm
 previously used in the serializer and parser APIs.
 It also makes several improvements to the HTML and XML serialization support 
and introduces HTML5 DTO beans.
-###### org.apache.juneau
+#### org.apache.juneau
 
 Improvements to XML serialization support.
 New supported XML formats:
@@ -175,7 +175,7 @@ This has the added benefit of simplifying the overall code.
 The ~~SerializerContext.SERIALIZER_addBeanTypeProperties~~setting is now 
enabled by default.
 Combined the 
`SERIALIZER_addIndentation`/`JSON_addWhitespace`/`UON_addWhitespace`
 properties into a single ~~SerializerContext.SERIALIZER_useWhitespace~~setting.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
 
 \{@link oajr.RestRequest\} now passes locale and timezone to 
serializers/parsers/transforms.
 ~~RestRequest.getTimeZone()~~method.
diff --git a/juneau-docs-poc/docs/release-notes/6.2.0.md 
b/juneau-docs-poc/docs/release-notes/6.2.0.md
index d160bccb0..35c9b1708 100644
--- a/juneau-docs-poc/docs/release-notes/6.2.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.2.0.md
@@ -7,7 +7,7 @@ title: "Release 6.2.0"
 **Date:** Apr 28, 2017
 
 Juneau 6.2.0 is a major update.
-###### org.apache.juneau
+#### org.apache.juneau
 
 Revamped the serializer, parser classes to use builders for creation.
 Serializers and parsers are now unmodifiable objects once they are created.
@@ -77,7 +77,7 @@ New URL-encoding serializer setting: 
~~UrlEncodingSerializerContext.URLENC_param
 New methods on \{@link oaj.urlencoding.UrlEncodingSerializer.Builder\}:
 ~~Builder.paramFormat(String)~~        
 ~~Builder.plainTextParams()~~  
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
 
 ~~@RestResource~~ annotation can now be applied to 
 any class!  You're no longer restricted to subclassing your resources from 
~~RestServlet~~.
@@ -172,7 +172,7 @@ See ~~RestMethod.name() @RestMethod(name)~~for more 
information.
 \{@link oajr.RestRequest#toString()\} can be called at any time to view the 
headers and content of the request
 without affecting functionality.  Very useful for debugging.
 ~~RestMethod.name() @RestMethod(name)~~annotation is now optional.  Defaults 
to "GET".
-###### org.apache.juneau.rest.client
+#### org.apache.juneau.rest.client
 
 Revamped the client API to use builders.
 New doc: 1.5 - Debugging
@@ -231,7 +231,7 @@ New methods added to ~~NameValuePairs~~:
 ~~append(String,Object,PartSerializer)~~
 ~~RetryOn~~is now an abstract class with an additional method:
 ~~RetryOn.onResponse(HttpResponse) onResponse(HttpResponse)~~
-###### org.apache.juneau.microservice
+#### org.apache.juneau.microservice
 
 "REST/port" configuration setting can now be a comma-limited list of port 
numbers to try.
 You can also specify one or more `0`s to try a random port.
diff --git a/juneau-docs-poc/docs/release-notes/6.3.0.md 
b/juneau-docs-poc/docs/release-notes/6.3.0.md
index b1ce4e1c4..d36fbc25a 100644
--- a/juneau-docs-poc/docs/release-notes/6.3.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.3.0.md
@@ -8,7 +8,7 @@ title: "Release 6.3.0"
 
 Juneau 6.3.0 is a major update with significant new functionality for defining 
proxy interfaces against
 arbitrary 3rd-party REST interfaces.
-###### org.apache.juneau
+#### org.apache.juneau
 
 New package:  \{@link oaj.http\}.
 Support for dynamic beans.  See ~~@BeanProperty(name)~~.
@@ -144,7 +144,7 @@ New properties on \{@link oaj.BeanContext\}:
 ~~BEAN_includeProperties~~
 ~~BEAN_excludeProperties~~
 New annotation property: ~~@BeanProperty(format)~~.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
 
 MAJOR enhancements made to the REST API.
 The \{@link oajr.RestRequest\} class functionality has been broken up into the 
following
@@ -319,7 +319,7 @@ New annotation attributes:
 \{@link oaj.http.annotation.Path#name() @Path(name)\}
 \{@link oaj.http.annotation.HasQuery#name() @HasQuery(name)\}
 \{@link oaj.http.annotation.HasFormData#name() @HasFormData(name)\}
-###### org.apache.juneau.rest.client
+#### org.apache.juneau.rest.client
 
 New ~~Path~~ annotation for specifying path variables on remoteable interfaces.
 New ~~@RequestBean~~ annotation for specifying beans with remoteable 
annotations
@@ -329,8 +329,8 @@ when using "*" as the name.
 ~~FormData~~,~~FormDataIfNE~~,
 ~~Query~~,~~QueryIfNE~~,
 ~~Header~~,~~HeaderIfNE~~ 
-###### org.apache.juneau.microservice
-###### org.apache.juneau.examples.rest
+#### org.apache.juneau.microservice
+#### org.apache.juneau.examples.rest
 
 Many code enhancements make to examples to reflect new functionality.
 All pages now render aside comments to help explain what feature they're 
trying to explain using the 
diff --git a/juneau-docs-poc/docs/release-notes/6.3.1.md 
b/juneau-docs-poc/docs/release-notes/6.3.1.md
index fb7ea2c76..4d905f066 100644
--- a/juneau-docs-poc/docs/release-notes/6.3.1.md
+++ b/juneau-docs-poc/docs/release-notes/6.3.1.md
@@ -7,7 +7,7 @@ title: "Release 6.3.1"
 **Date:** Aug 1, 2017
 
 Juneau 6.3.1 is a minor release.
-###### org.apache.juneau
+#### org.apache.juneau
 
 ~~PojoQuery~~ improvements.
 New ~~RemoteMethod.returns()~~ annotation.
@@ -25,7 +25,7 @@ HTMLDOC_title, HTMLDOC_description, HTMLDOC_description
 See below on changes to simplify HTML headers.
 \{@link oaj.svl.Var\} implementations can now throw exceptions and will be 
converted to
 ""\{exceptionMessage\}" values.
-###### org.apache.juneau.rest
+#### org.apache.juneau.rest
 
 New 'light' stylesheet:
 Compared with previous 'devops':
@@ -148,7 +148,7 @@ has been replaced with the following:
 ~~RestMethod.bpi() bpi()~~- Now an array of simplified values instead of LAX 
JSON.
 ~~RestMethod.bpx() bpx()~~- Now an array of simplified values instead of LAX 
JSON.
 Two new variables added to `$R` variable: "$R\{servletClass\}", 
"$R\{servletClassSimple\}"
-###### org.apache.juneau.rest.examples
+#### org.apache.juneau.rest.examples
 
 Added CONTENT-TYPE and STYLES menu items to most pages.
 Added improved QUERY menu item to PetStore page.
diff --git a/juneau-docs-poc/docs/release-notes/6.4.0.md 
b/juneau-docs-poc/docs/release-notes/6.4.0.md
index 49ad1a941..debe05c05 100644
--- a/juneau-docs-poc/docs/release-notes/6.4.0.md
+++ b/juneau-docs-poc/docs/release-notes/6.4.0.md
@@ -89,7 +89,7 @@ juneau-rest-client
 Java 6
 Servlet 3.1
 Apache HttpClient 4.5
-###### juneau-marshall
+#### juneau-marshall
 
 Improvements to swap support.
 New \{@link oaj.annotation.Swap @Swap\} annotation.
@@ -241,14 +241,14 @@ the `super()` method.
 New class: ~~PojoMerge~~
 New doc: 2.6.2 - @Pojo annotation
 New doc: 2.6.5 - Serializing Readers and InputStreams
-###### juneau-dto
+#### juneau-dto
 
 \{@link oaj.dto.html5.HtmlElementMixed#children(Object...)\} can now take in 
collections
 of objects.
 The DTO beans can now be serialized to strings of their typical language by 
calling the `toString()` method.
 For example, `Swagger.toString()` produces JSON and the HTML5 `Form.toString()`
 produces HTML.
-###### juneau-rest-server
+#### juneau-rest-server
 
 Revamped and simplified servlet and REST-call lifecycle handling through new
 ~~@RestHook~~annotation.
@@ -319,7 +319,7 @@ Eliminated the `RestServletJenaDefault` class to remove the 
Jena dependency clas
 the `juneau-rest-server` artifact. 
 It's simple enough to simply extend `BasicRestServlet` and add the RDF 
serializers and
 parsers.
-###### juneau-microservice
+#### juneau-microservice
 
 The microservice has been significantly modified to be configured via a 
`jetty.xml` file
 for maximum flexibility instead of the hodge-podge of support in the config 
file.
@@ -339,6 +339,6 @@ New class ~~JettyLogger~~ for directing Jetty logging to the
 java.util.logging framework.
 New class ~~DebugResource~~for viewing and generating
 Jetty thread dumps through REST calls.
-###### org.apache.juneau.rest.examples
+#### org.apache.juneau.rest.examples
 
 New example of adding a menu-item widget to the Pet Store resource (including 
tooltips):
diff --git a/juneau-docs-poc/docs/release-notes/7.0.0.md 
b/juneau-docs-poc/docs/release-notes/7.0.0.md
index 73790393a..de99b24ba 100644
--- a/juneau-docs-poc/docs/release-notes/7.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/7.0.0.md
@@ -7,14 +7,14 @@ title: "Release 7.0.0"
 **Date:** Oct 25, 2017
 
 This release ups the Java prerequisite to Java 7.
-###### juneau-marshall
+#### juneau-marshall
 
 New class ~~HttpMethodName~~ with valid static string HTTP method names.
-###### juneau-dto
+#### juneau-dto
 
 Class `org.apache.juneau.dto.Link` renamed to \{@link oaj.dto.LinkString\}.
 Helps avoid confusion since there are other Link classes in the library.
-###### juneau-rest-server
+#### juneau-rest-server
 
 Annotation `@HtmlDoc(links)` renamed to ~~HtmlDoc.navlinks() navlinks~~.
 New annotation ~~HtmlDoc.head() @HtmlDoc(head)~~.
diff --git a/juneau-docs-poc/docs/release-notes/7.0.1.md 
b/juneau-docs-poc/docs/release-notes/7.0.1.md
index 5004beed0..2bd747e54 100644
--- a/juneau-docs-poc/docs/release-notes/7.0.1.md
+++ b/juneau-docs-poc/docs/release-notes/7.0.1.md
@@ -10,7 +10,7 @@ This release is a minor update.
 It includes the following prereq updates:
 Apache HttpClient:  4.5.3 to 4.5.4
 Eclipse Jetty:  9.4.6.v20170531 to 9.4.8.v20171121
-###### juneau-marshall
+#### juneau-marshall
 
 New static `create()` methods for builders on serializers and parsers.
 This simplifies the syntax of creation of serializers and parsers by scratch.
@@ -32,18 +32,18 @@ The same static create methods have also been added to the 
following classes:
 The order of the parameters in \{@link 
oaj.serializer.SerializerSession#serialize(Object,Object)\}
 has been change to match \{@link 
oaj.serializer.Serializer#serialize(Object,Object)\}. 
 Fixed some bugs in the XML parser related to whitespace and comments.
-###### juneau-svl
+#### juneau-svl
 
 New methods on \{@link oaj.svl.Var\} class to restrict when nested and 
embedded variables
 are resolved.
 \{@link oaj.svl.Var#allowNested()\}
 \{@link oaj.svl.Var#allowRecurse()\}
-###### juneau-rest-server
+#### juneau-rest-server
 
 New ~~@RestResource(maxInput)~~ and 
 ~~RestMethod.maxInput() @RestMethod(maxInput)~~for alleviating
 potential DoS attacks.
-###### juneau-microservice-server
+#### juneau-microservice-server
 
 New pluggable console commands.
 When you start up the microservice, you'll now see the following:
diff --git a/juneau-docs-poc/docs/release-notes/7.1.0.md 
b/juneau-docs-poc/docs/release-notes/7.1.0.md
index 2d9996a2d..c8d94daaa 100644
--- a/juneau-docs-poc/docs/release-notes/7.1.0.md
+++ b/juneau-docs-poc/docs/release-notes/7.1.0.md
@@ -7,7 +7,7 @@ title: "Release 7.1.0"
 **Date:** Mar 08, 2018
 
 Version 7.1.0 is a major update with major implementation refactoring across 
all aspects of the product.
-###### juneau-marshall
+#### juneau-marshall
 
 Significant improvements made to the internals of the Serializer and Parser 
classes.
 Caching improvements on serializers and parsers have reduced execution time of 
the core
@@ -83,7 +83,7 @@ It's now a regular method instead of a static method.
 \{@link oaj.annotation.Swap @Swap\} annotation can now be used with 
 ~~Surrogate~~classes.
 New support for ~~PojoBuilders POJO Builders~~.        
-###### juneau-svl
+#### juneau-svl
 
 New variables:
 \{@link oaj.svl.vars.CoalesceVar\}
@@ -94,7 +94,7 @@ New variables:
 Variables moved from juneau-microservice:
 \{@link oaj.svl.vars.ArgsVar\}
 \{@link oaj.svl.vars.ManifestFileVar\}
-###### juneau-config
+#### juneau-config
 
 The Config API has been completely revamped.
 New features include:
@@ -103,7 +103,7 @@ File-system watcher integration support.
 Changes made to file system files now automatically reflected in configurations
 and interface proxies.
 New builder-based design.
-###### juneau-dto
+#### juneau-dto
 
 Enhancements to Swagger DTO:
 New methods for setting and retrieving properties via name:
@@ -113,7 +113,7 @@ Support for setting non-standard fields such as "$ref" via 
getter and setter
 above.
 Setter methods that take in beans and collections of beans can now take in 
 JSON strings.
-###### juneau-rest-server
+#### juneau-rest-server
 
 `RestServletDefault` renamed to ~~BasicRestServlet~~.
 `RestServletGroupDefault` renamed to ~~BasicRestServletGroup~~.
@@ -276,7 +276,7 @@ config="$S{juneau.configFile}"
 ```
 
 
-###### juneau-rest-client
+#### juneau-rest-client
 
 New configuration property ~~RestClient.RESTCLIENT_query~~and
 builder method ~~Builder.query(String,Object)~~.
@@ -289,7 +289,7 @@ New methods on ~~RestCall~~class:
 ~~RestCall.getResponseCode() getResponseCode()~~
 ~~RestCall~~ and \{@link oajrc.RestClient\}
 now implement the `Closeable` interface.
-###### juneau-microservice
+#### juneau-microservice
 
 `Resource` and `ResourceGroup` classes removed.
 ~~BasicRestServlet~~ and ~~BasicRestServletGroup~~ can be used instead.
diff --git a/juneau-docs-poc/docs/release-notes/7.2.0.md 
b/juneau-docs-poc/docs/release-notes/7.2.0.md
index 604a8c838..d9b9784e3 100644
--- a/juneau-docs-poc/docs/release-notes/7.2.0.md
+++ b/juneau-docs-poc/docs/release-notes/7.2.0.md
@@ -13,7 +13,7 @@ New HTTP-Part annotations that are applicable to both the 
servlet and client API
 Serverless servlet and client unit testing.
 Simplified UI customization.
 Marshalls that combines serializers and parsers into a single API.
-###### juneau-marshall
+#### juneau-marshall
 
 The REST client @Remoteable annotations and REST server @RemoteMethod 
annotations which used to be
 in separate packages in the client and server projects have been combined into 
a single set of annotations in 
@@ -137,7 +137,7 @@ RDF serializer subclasses have been moved into top-level 
classes:
 `RdfParser.NTriple` -> ~~NTripleParser~~
 `RdfParser.Turtle` -> ~~TurtleParser~~
 New API for pairing serializers and parsers for simplified syntax:
-###### Examples:
+#### Examples:
 
 
 ```text
@@ -174,13 +174,13 @@ String string = Json.DEFAULT.write(myPojo);
 ~~MsgPack~~
 New/updated documentation:
 2.15.3 - Simplified JSON
-###### juneau-dto
+#### juneau-dto
 
 Fixed bug where Swagger ~~ oaj.dto.swagger.SchemaInfo.required(Object...)~~ 
was defined as a boolean
 instead of a list of strings.
 Boolean attributes are now handled correctly for HTML5.
 For example, calling `new Select().disabled(true)` will produce ``
-###### juneau-rest-server
+#### juneau-rest-server
 
 Auto-generated ~~RestSwagger Swagger UI~~.
 Simplified ~~@RestResource(swagger)~~
@@ -345,7 +345,7 @@ New convenience annotations for specifying default `Accept` 
and `Content-Type` h
 ~~RestMethod~~
 ~~RestMethod.defaultAccept defaultAccept~~
 ~~RestMethod.defaultContentType defaultContentType~~
-###### juneau-rest-client
+#### juneau-rest-client
 
 Remote Resource interfaces support OpenAPI annotations.
 Made improvements to the builder API for defining SSL support.
@@ -385,7 +385,7 @@ The `RestClient.getRemoteableProxy()` methods have been 
split into separate meth
 ~~RestClient.getRemoteResource(Class)~~
 ~~RestClient.getRemoteResource(Class,Object)~~
 ~~RestClient.getRemoteResource(Class,Object,Serializer,Parser)~~
-###### juneau-rest-microservice
+#### juneau-rest-microservice
 
 The look-and-feel of an application is now controlled through the external 
configuration file and access to
 CSS stylesheets in the working directory in a new folder called `files`:
diff --git a/juneau-docs-poc/docs/release-notes/7.2.1.md 
b/juneau-docs-poc/docs/release-notes/7.2.1.md
index 275620b69..7611690f6 100644
--- a/juneau-docs-poc/docs/release-notes/7.2.1.md
+++ b/juneau-docs-poc/docs/release-notes/7.2.1.md
@@ -8,13 +8,13 @@ title: "Release 7.2.1"
 
 This release contains mostly bug fixes.
 Code changes have been made to preserve binary backwards compatibility with 
7.1.0.
-###### juneau-marshall
+#### juneau-marshall
 
 The ~~@JsonSchema~~ annotation has been merged with the ~~@Schema~~ annotation.
 Annotations typically used on bean properties (getters/setters/public fields) 
can now be used on private fields.
 This is inline with behavior on JPA-annotated beans.
 These include:  @Swap, @Html, @Xml, @BeanProperty.
-###### juneau-rest-server
+#### juneau-rest-server
 
 Method-level annotations (e.g. @RestMethod) and parameter-level annotations 
(e.g. @Query) are now inheritable
 from parent classes and interfaces. 
@@ -25,7 +25,7 @@ A new ~~ResolvingReaderResource~~ class has been added that 
includes the variabl
 this relies on the `juneau-svl` package.
 The `RemoteInterfaceServlet` class has been renamed to \{@link 
oajr.remote.RrpcServlet\}.
 `@RestMethod(name="PROXY")` has been changed to `@RestMethod(name="RRPC")`.
-###### juneau-rest-client
+#### juneau-rest-client
 
 The `RestClient.getRemoteInterface()` method has been renamed to \{@link 
oajrc.RestClient#getRrpcInterface(Class)\}.
 Fixed a bug where `@RemoteMethod(path)` values containing '/' characters were 
erroneously being encoded.
diff --git a/juneau-docs-poc/docs/release-notes/8.0.0.md 
b/juneau-docs-poc/docs/release-notes/8.0.0.md
index cac4c3534..ac16a3781 100644
--- a/juneau-docs-poc/docs/release-notes/8.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/8.0.0.md
@@ -27,14 +27,14 @@ The structure is now as follows:
 **`juneau-microservice-rest`** - Now contains only servlet example classes.  
No Jetty configuration.
 **`juneau-microservice-rest-jetty`** - Servlet examples deployed using Jetty.
 **`juneau-microservice-rest-springboot`** - Servlet examples deployed using 
Spring Boot.
-###### juneau-svl
+#### juneau-svl
 
 New SVL variables:
 \{@link oaj.svl.vars.SubstringVar\}
 \{@link oaj.svl.vars.PatternExtractVar\}
 \{@link oaj.svl.vars.PatternReplaceVar\}
 \{@link oaj.svl.vars.LenVar\}
-###### juneau-config
+#### juneau-config
 
 New methods for setting a system default configuration:
 \{@link oaj.config.Config\}
@@ -45,17 +45,17 @@ New classpath store.
 New API method:
 \{@link oaj.config.store.ConfigStore\}
 \{@link oaj.config.store.ConfigStore#exists(String) exists(String)\}
-###### juneau-rest-server
+#### juneau-rest-server
 
 New methods on ~~RestServlet~~:
 ~~RestServlet.setRestResourceResolver(RestResourceResolver) 
setRestResourceResolver(RestResourceResolver)~~
 ~~RestServlet.getPath() getPath()~~
 The registered resource resolver is now used to instantiate objects of classes 
defined via ~~@RestResource~~.
 This allows for any of those instance to be injectable beans.
-###### juneau-rest-server-springboot
+#### juneau-rest-server-springboot
 
 New project containing classes for making it easy to use Juneau with Spring 
Boot.
-###### juneau-microservice-core
+#### juneau-microservice-core
 
 New project that consist of just the core \{@link 
oaj.microservice.Microservice\} class and console support.
 The Microservice API has been revamped to use a builder-based approach to 
creating microservices.
@@ -67,13 +67,13 @@ directory that ends with ".cfg".
 New \{@link oaj.microservice.MicroserviceListener\} API for defining lifecycle 
event listeners.
 New \{@link oaj.microservice.console.ConfigCommand\} class for performing 
config queries and updates through 
 the microservice console.
-###### juneau-microservice-jetty
+#### juneau-microservice-jetty
 
 New \{@link oaj.microservice.jetty.JettyMicroservice\} class replaces the 
previous `RestMicroservice`.
-###### juneau-my-jetty-microservice
+#### juneau-my-jetty-microservice
 
 New template starter project for Jetty-based microservices.
-###### juneau-my-springboot-microservice
+#### juneau-my-springboot-microservice
 
 Template starter project for Spring-Boot-based microservices.
 `app.json` and `Procfile` files for deploying examples into Heroku.
diff --git a/juneau-docs-poc/docs/release-notes/8.1.0.md 
b/juneau-docs-poc/docs/release-notes/8.1.0.md
index 2697343a7..0794ccb82 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.0.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.0.md
@@ -16,7 +16,7 @@ title: "Release 8.1.0"
 ~~RestRoleGuards Role Guards~~
 ~~RestLoggingAndDebugging Improved REST logging/debugging~~
 [New MockRest API](#juneau-rest-mock)
-###### juneau-marshall
+#### juneau-marshall
 
 New utility class for diffing beans: 
 \{@link oaj.utils.BeanDiff\}
@@ -66,7 +66,7 @@ All serializers and parsers now have built-in default swaps 
for common class typ
 \{@link java.util.TimeZone\}
 \{@link javax.xml.datatype.XMLGregorianCalendar\}
 \{@link java.time.ZoneId\}
-###### juneau-config
+#### juneau-config
 
 Support for import statements:
 
@@ -88,7 +88,7 @@ system properties.
 Entries in the system config are automatically set as system properties.
 This mean you can set any of the various serializer and parser settings (e.g. 
"JsonSerializer.simpleMode.b")
 in the default configuration area or `application.properties`.
-###### juneau-rest-server
+#### juneau-rest-server
 
 New annotations that can be applied to REST classes and methods to configure 
serializers and parsers.
 
@@ -238,6 +238,6 @@ public String myMethod() throws Exception {...}
 See ~~RestLoggingAndDebugging~~for details.
 Fixed a bug where the HTTP response was returning 405 (method not found) but 
should really be 404 (not found)
 when no path patterns match on any of the Java methods.
-###### juneau-rest-client
+#### juneau-rest-client
 
 PATCH support added.
diff --git a/juneau-docs-poc/docs/release-notes/8.1.1.md 
b/juneau-docs-poc/docs/release-notes/8.1.1.md
index 7a3b695d8..f4c47355b 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.1.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.1.md
@@ -7,7 +7,7 @@ title: "Release 8.1.1"
 **Date:** Sept 20, 2019
 
 Juneau 8.1.1 is a minor release but introduces some new features/modifications.
-###### juneau-marshall
+#### juneau-marshall
 
 Support for serializing/parsing \{@link java.util.Optional\} objects and bean 
properties.
 Fixed a bug in the parsers where the generic subtype of a complex bean 
property type involving both collections and arrays
@@ -22,7 +22,7 @@ Defaulting SVL variables now won't ignore additional 
parameters.
 "$S\{Foo,bar,baz\}" used to default to "bar" but now will default to "bar,baz".
 Ranking support has been added to all @XConfig annotations.
 This allows you to override the normal precedence of application of config 
annotations on class and method hierarchies.
-###### juneau-rest-server
+#### juneau-rest-server
 
 Support for \{@link java.util.Optional\} on method parameters annotated with 
\{@link oaj.http.annotation.Header\}, \{@link oaj.http.annotation.FormData\},  
 \{@link oaj.http.annotation.Query\}, \{@link oaj.http.annotation.Path\}.
@@ -63,11 +63,11 @@ The ~~@RestResource(staticFiles)~~ annotation now supports 
absolute path locatio
 
 Fixed a bug in ~~@RestResource(staticFiles)~~where the order of lookup between 
parent and child resources
 was wrong.
-###### juneau-rest-client
+#### juneau-rest-client
 
 Removed the dependency on the `juneau-rest-server` module.  
 Allows the client API to be used without pulling in all the javax.servlet and 
server dependencies.
-###### juneau-examples
+#### juneau-examples
 
 The PetStore application has been moved to a separate Git repository.
 [GitHub Repo](https://github.com/apache/juneau-petstore)
diff --git a/juneau-docs-poc/docs/release-notes/8.1.2.md 
b/juneau-docs-poc/docs/release-notes/8.1.2.md
index ab8ba21e0..caf064379 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.2.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.2.md
@@ -7,7 +7,7 @@ title: "Release 8.1.2"
 **Date:** Dec 01, 2019
 
 Juneau 8.1.2 is a moderate release.
-###### juneau-marshall
+#### juneau-marshall
 
 Support for read-only and write-only properties.
 ~~Bean.bpro()~~
@@ -26,12 +26,12 @@ New convenience methods:
 \{@link oaj.annotation.Beanc @Beanc\} replaces ~~BeanConstructor 
@BeanConstructor~~.
 \{@link oaj.http.remote.Remote @Remote\} replaces ~~RemoteResource 
@RemoteResource~~.
 Shortened names for \{@link oaj.annotation.Bean#dictionary @Bean(dictionary)\} 
and \{@link oaj.BeanContext.Builder#beanDictionary(Class...)\}.
-###### juneau-rest-server
+#### juneau-rest-server
 
 \{@link oajr.annotation.Rest @Rest\} replaces ~~RestResource @RestResource~~ 
with shorter syntax.
 New method ~~RestResponse.setHeaderSafe(String,String)~~to strip invalid 
characters from header values.
 Fixed issues related to invalid characters being set on HTTP header values.
-###### juneau-rest-client
+#### juneau-rest-client
 
 \{@link oajrc.RestClient\} is now extendible.  The constructor has been made 
public and simplified to:
 ~~ oajrc.RestClient.RestClient(RestClient.Builder)~~.
diff --git a/juneau-docs-poc/docs/release-notes/8.1.3.md 
b/juneau-docs-poc/docs/release-notes/8.1.3.md
index 3f8901ee1..d81581cbe 100644
--- a/juneau-docs-poc/docs/release-notes/8.1.3.md
+++ b/juneau-docs-poc/docs/release-notes/8.1.3.md
@@ -7,7 +7,7 @@ title: "Release 8.1.3"
 **Date:** Jan 20, 2020
 
 Juneau 8.1.3 is a moderate release.
-###### juneau-marshall
+#### juneau-marshall
 
 Dynamically applied annotations: ~~DynamicallyAppliedAnnotations~~
 Better representation of nulls for XML and HTML content properties.
@@ -25,7 +25,7 @@ JsonParser.DEFAULT.parse(input, MyBean[].class);
 ```
 
 
-###### juneau-rest-server
+#### juneau-rest-server
 
 Fixed bug in ~~BasicRestCallHandler~~ where if you have the following REST 
methods...
 
@@ -56,10 +56,10 @@ Renamed the following annotations:
 @RestMethod(attrs) --> ~~RestMethod.reqAttrs() @RestMethod(reqAttrs)~~
 @RestMethod(defaultRequestHeaders) --> ~~RestMethod.reqHeaders() 
@RestMethod(reqHeaders)~~
 New auto-generated REST method execution statistics: 
~~RestExecutionStatistics~~
-###### juneau-rest-client
+#### juneau-rest-client
 
 Several convenience methods defined in \{@link oajrc.RestClient.Builder\} that 
were deprecated in 8.1.2 have been
 undeprecated in this release due to user feedback.
-###### juneau-doc
+#### juneau-doc
 
 New auto-generated glossary of all configurable properties: 
~~GlossaryConfigurableProperties~~
diff --git a/juneau-docs-poc/docs/release-notes/8.2.0.md 
b/juneau-docs-poc/docs/release-notes/8.2.0.md
index cf65ce5dc..9fad09475 100644
--- a/juneau-docs-poc/docs/release-notes/8.2.0.md
+++ b/juneau-docs-poc/docs/release-notes/8.2.0.md
@@ -10,7 +10,7 @@ Juneau 8.2.0 is a major release.
 The most significant change is the addition of an entirely new ~~RestClient~~ 
API build from scratch
 with near 100% unit test coverage.
 The new API is located in the `org.apache.juneau.rest.client2` package and 
will replace the old API in 9.0.
-###### juneau-marshall
+#### juneau-marshall
 
 \{@link oaj.annotation.Bean @Bean\} and \{@link oaj.annotation.BeanIgnore 
@BeanIgnore\} annotations can alternately occur in parent class hierarchy.
 The first one found dictates whether a class is ignored as a bean or not.
@@ -214,7 +214,7 @@ return this;
 
 
 Note you could previously use the @BeanProperty annotation to identify these 
setters.
-###### juneau-rest-server
+#### juneau-rest-server
 
 New ~~RestContext.REST_context REST_context~~/~~Rest.context() 
@Rest(context)~~ setting to allow you to extend the \{@link oajr.RestContext\}
 class.
@@ -274,7 +274,7 @@ Added the following convenience hook methods on the 
~~RestServlet~~ and ~~BasicR
 ~~BasicRest.onPostCall(RestRequest,RestResponse) 
onPostCall(RestRequest,RestResponse)~~
 ~~BasicRest.onEndCall(HttpServletRequest,HttpServletResponse) 
onEndCall(HttpServletRequest,HttpServletResponse)~~
 New \{@link oajr.annotation.Rest#debugOn() @Rest(debugOn)\} annotation for 
turning on debug mode using class/method identifiers:
-###### Example:
+#### Example:
 
 
 ```text
@@ -347,14 +347,14 @@ String getFoo();  // @RestMethod(name=GET,path="/foo") is 
implied.
 
 
 Improved ~~RestContext.REST_messages REST_messages~~ support (mostly bug 
fixes).
-###### juneau-rest-server-springboot
+#### juneau-rest-server-springboot
 
 ~~JuneauRestInitializer~~now provides a no-arg constructor so that it can be 
used in
 the `@ConfigurationContext(initializers=JuneauRestInitializer.class)` when 
unit testing
 using @SpringBootTest.
 New 
~~ResourceDescription.ResourceDescription(String,String,String)~~constructor 
and ~~ResourceDescriptions.append(String,String,String)~~ method.
 New ~~Hyperlink~~class.
-###### juneau-rest-client
+#### juneau-rest-client
 
 Completely revamped RestClient API.
 All APIs now extend from HttpClient interfaces.
@@ -381,7 +381,7 @@ Additions to \{@link oaj.http.remote.Remote\} annotation:
 \{@link oaj.http.remote.Remote#version version\} - Adds a client version 
header to all requests.
 \{@link oaj.http.remote.Remote#headers headers\} - Adds a set of headers to 
all requests.
 ~~headerSupplier~~ - Adds a dynamic supplier of headers to all requests.
-###### juneau-rest-mock
+#### juneau-rest-mock
 
 The `MockRest` and `MockRemote` classes have been remove entirely and all 
existing functions
 have been moved into the improved ~~MockRestClient~~ class.  All REST test 
mocking can be 
diff --git a/juneau-docs-poc/docs/release-notes/9.0.0.md 
b/juneau-docs-poc/docs/release-notes/9.0.0.md
index e843f0314..17eba7fd1 100644
--- a/juneau-docs-poc/docs/release-notes/9.0.0.md
+++ b/juneau-docs-poc/docs/release-notes/9.0.0.md
@@ -13,7 +13,7 @@ Configuration properties have been removed entirely.  They 
have been replaced wi
 architecture.  In addition to making the code more maintainable, it also 
improves performance when
 creating new serializers/parsers/rest clients (and others).
 REST servlets now seemlessly integrate with Spring Boot.  
-###### juneau-marshall
+#### juneau-marshall
 
 Eliminated the various `@XConfig(applyX=\{...\})` annotations and replaced 
them with the ability
 to apply targeted annotations directly to configuration classes and methods 
(such as REST classes/methods).
@@ -37,7 +37,7 @@ New \{@link oaj.annotation.Marshalled @Marshalled\} 
annotation for non-bean clas
 New \{@link oaj.annotation.BeanConfig#ignoreUnknownEnumValues() 
@BeanConfig(ignoreUnknownEnumValues)\} annotation and support for ignoring
 unknown enum values during parsing.
 Java Serialized Object marshalling support has been removed entirely due to 
security risks with usage (better safe than sorry).
-###### juneau-rest-common
+#### juneau-rest-common
 
 New module containing the common REST classes/annotations uses by both the 
client and server APIs.
 These were previously contained within `juneau-marshall`.
@@ -50,7 +50,7 @@ extensions to the Apache HttpComponents APIs.  Significant 
new functionality her
 \{@link oaj.http.remote.RemotePatch\}
 \{@link oaj.http.remote.RemotePost\}
 \{@link oaj.http.remote.RemoteDelete\}
-###### juneau-rest-server
+#### juneau-rest-server
 
 Significant refactoring done to allow for many extensible aspects of the API 
to be performed through injected beans
 in Spring.  These include logging, debugging, REST method arg types, static 
files, file finders, swagger creators, thrown stores, response
@@ -78,16 +78,16 @@ Defining REST resources with predefined marshalling support 
is now much simpler.
 \{@link oajr.servlet.BasicRestServletGroup\}
 \{@link oajr.servlet.BasicRestObject\}
 \{@link oajr.servlet.BasicRestObjectGroup\}
-###### juneau-dto
+#### juneau-dto
 
 Addition of OpenAPI 3.0 (\{@link oaj.dto.openapi3\} package).
-###### juneau-rest-server-springboot
+#### juneau-rest-server-springboot
 
 The requirement for using `JuneauRestInitializer` during App initialization to 
use bean injection has been eliminated.
 Instead, root resources should simply extend from \{@link 
oajr.springboot.BasicSpringRestServlet\} and \{@link 
oajr.springboot.BasicSpringRestServletGroup\}.
 These will automatically hook into the Spring Boot framework for resolution of 
REST children and various extension beans added
 to the REST API framework.
-###### juneau-rest-client
+#### juneau-rest-client
 
 While the general usage pattern stays the same, the REST client code has 
undergone significant rewriting.  It is now more inline
 as an extension of the Apache HttpClient library.  Much new functionality such 
as support for fluent assertions has been added.
@@ -105,6 +105,6 @@ as an extension of the Apache HttpClient library.  Much new 
functionality such a
 ```
 
 
-###### juneau-rest-mock
+#### juneau-rest-mock
 
 Entirely rewritten.  Changes too many to list.
diff --git a/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md 
b/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md
index 995031fc5..cf0e6d366 100644
--- a/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md
+++ b/juneau-docs-poc/docs/topics/02.01.Module-juneau-marshall.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-marshall"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,19 +12,20 @@ title: "Module: juneau-marshall"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-marshall-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.marshall_{{JUNEAU_VERSION}}.jar
 ```
 
-The `juneau-marshall` artifact contains the following:
+### Contents/Features
+
 - Foundation for all serializers and parsers.
 - Implementations for all serializers and parsers except RDF languages.
 - Extensions to Apache HttpCore components used by both client and server APIs.
diff --git a/juneau-docs-poc/docs/topics/02.02.Marshallers.md 
b/juneau-docs-poc/docs/topics/02.02.Marshallers-test.md
similarity index 95%
copy from juneau-docs-poc/docs/topics/02.02.Marshallers.md
copy to juneau-docs-poc/docs/topics/02.02.Marshallers-test.md
index abf7373d7..d5985116b 100644
--- a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
+++ b/juneau-docs-poc/docs/topics/02.02.Marshallers-test.md
@@ -5,7 +5,6 @@ title: "Marshallers"
 [Marshallers](../apidocs/org/apache/juneau/marshaller/Marshaller.html) are 
simple pairings of a 
[Serializer](../apidocs/org/apache/juneau/serializer/Serializer.html)
 and [Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience 
methods for serializing and parsing POJOs.
 - [Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)
-
 `T`  \{@link oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class)\}
 - [CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)
 - `String`  
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write(Object))
@@ -21,25 +20,14 @@ and 
[Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience m
 - 
[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)
 - `byte[]`  
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write(Object))
 - [MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)
-
-:::tip Examples
-
-
-```java
+##### Examples:
 // Using instance.
 Json json = new Json();
 MyPojo myPojo = json.read(string, MyPojo.class);
 String string = json.write(myPojo);
-```
-
-
-```java
 // Using DEFAULT instance.
 MyPojo myPojo = Json.DEFAULT.read(string, MyPojo.class);
 String string = Json.DEFAULT.write(myPojo);
-```
-
-
 Juneau comes with the following predefined marshallers:
 - [Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)
 - [Html](../apidocs/org/apache/juneau/marshaller/Html.html)
@@ -51,23 +39,12 @@ Juneau comes with the following predefined marshallers:
 - [Uon](../apidocs/org/apache/juneau/marshaller/Uon.html)
 - [UrlEncoding](../apidocs/org/apache/juneau/marshaller/UrlEncoding.html)
 - [Xml](../apidocs/org/apache/juneau/marshaller/Xml.html)
-
 Each predefined marshaller also includes static convenience from/to methods to 
make it even easier to
 perform marshalling on POJOs:
 - [Json](../apidocs/org/apache/juneau/marshaller/Json.html)
 - `String`  
*[of(Object)](../apidocs/org/apache/juneau/marshaller/Json.html#of(Object))*
-
 `T`  *\{@link oaj.marshaller.Json#to(Object,Class) to(Object,Class)\}*
-:::
-
-:::tip Examples
-
-
-```java
+##### Examples:
 // Using shortcut static methods.
 MyPojo myPojo = Json.to(jsonString, MyPojo.class);
-String json = Json.of(myPojo);
-
-```
-
-:::
+String json = Json.of(myPojo);
\ No newline at end of file
diff --git a/juneau-docs-poc/docs/topics/02.02.Marshallers.md 
b/juneau-docs-poc/docs/topics/02.02.Marshallers-test2.md
similarity index 95%
copy from juneau-docs-poc/docs/topics/02.02.Marshallers.md
copy to juneau-docs-poc/docs/topics/02.02.Marshallers-test2.md
index abf7373d7..d5985116b 100644
--- a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
+++ b/juneau-docs-poc/docs/topics/02.02.Marshallers-test2.md
@@ -5,7 +5,6 @@ title: "Marshallers"
 [Marshallers](../apidocs/org/apache/juneau/marshaller/Marshaller.html) are 
simple pairings of a 
[Serializer](../apidocs/org/apache/juneau/serializer/Serializer.html)
 and [Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience 
methods for serializing and parsing POJOs.
 - [Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)
-
 `T`  \{@link oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class)\}
 - [CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)
 - `String`  
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write(Object))
@@ -21,25 +20,14 @@ and 
[Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience m
 - 
[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)
 - `byte[]`  
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write(Object))
 - [MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)
-
-:::tip Examples
-
-
-```java
+##### Examples:
 // Using instance.
 Json json = new Json();
 MyPojo myPojo = json.read(string, MyPojo.class);
 String string = json.write(myPojo);
-```
-
-
-```java
 // Using DEFAULT instance.
 MyPojo myPojo = Json.DEFAULT.read(string, MyPojo.class);
 String string = Json.DEFAULT.write(myPojo);
-```
-
-
 Juneau comes with the following predefined marshallers:
 - [Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)
 - [Html](../apidocs/org/apache/juneau/marshaller/Html.html)
@@ -51,23 +39,12 @@ Juneau comes with the following predefined marshallers:
 - [Uon](../apidocs/org/apache/juneau/marshaller/Uon.html)
 - [UrlEncoding](../apidocs/org/apache/juneau/marshaller/UrlEncoding.html)
 - [Xml](../apidocs/org/apache/juneau/marshaller/Xml.html)
-
 Each predefined marshaller also includes static convenience from/to methods to 
make it even easier to
 perform marshalling on POJOs:
 - [Json](../apidocs/org/apache/juneau/marshaller/Json.html)
 - `String`  
*[of(Object)](../apidocs/org/apache/juneau/marshaller/Json.html#of(Object))*
-
 `T`  *\{@link oaj.marshaller.Json#to(Object,Class) to(Object,Class)\}*
-:::
-
-:::tip Examples
-
-
-```java
+##### Examples:
 // Using shortcut static methods.
 MyPojo myPojo = Json.to(jsonString, MyPojo.class);
-String json = Json.of(myPojo);
-
-```
-
-:::
+String json = Json.of(myPojo);
\ No newline at end of file
diff --git a/juneau-docs-poc/docs/topics/02.02.Marshallers.md 
b/juneau-docs-poc/docs/topics/02.02.Marshallers.md
index abf7373d7..109abdf41 100644
--- a/juneau-docs-poc/docs/topics/02.02.Marshallers.md
+++ b/juneau-docs-poc/docs/topics/02.02.Marshallers.md
@@ -4,26 +4,19 @@ title: "Marshallers"
 
 [Marshallers](../apidocs/org/apache/juneau/marshaller/Marshaller.html) are 
simple pairings of a 
[Serializer](../apidocs/org/apache/juneau/serializer/Serializer.html)
 and [Parser](../apidocs/org/apache/juneau/parser/Parser.html) with convenience 
methods for serializing and parsing POJOs.
-- [Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)
 
-`T`  \{@link oaj.marshaller.Marshaller#read(Object,Class) read(Object,Class)\}
-- [CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)
-- `String`  
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write(Object))
-- [Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)
-- [Html](../apidocs/org/apache/juneau/marshaller/Html.html)
-- [Json](../apidocs/org/apache/juneau/marshaller/Json.html)
-- [OpenApi](../apidocs/org/apache/juneau/marshaller/OpenApi.html)
-- [PlainText](../apidocs/org/apache/juneau/marshaller/PlainText.html)
-- [Json5](../apidocs/org/apache/juneau/marshaller/Json5.html)
-- [Uon](../apidocs/org/apache/juneau/marshaller/Uon.html)
-- [UrlEncoding](../apidocs/org/apache/juneau/marshaller/UrlEncoding.html)
-- [Xml](../apidocs/org/apache/juneau/marshaller/Xml.html)
-- 
[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)
-- `byte[]`  
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write(Object))
-- [MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)
+<java-abstract-class>[Marshaller](../apidocs/org/apache/juneau/marshaller/Marshaller.html)</java-abstract-class>
+><java-method>`T` 
[read(Object,Class&lt;T&gt;)](../apidocs/org/apache/juneau/marshaller/Marshaller.html#read)</java-method>
+>><java-abstract-class>[CharMarshaller](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html)</java-abstract-class>
+>>><java-method>`String` 
[write(Object)](../apidocs/org/apache/juneau/marshaller/CharMarshaller.html#write)</java-method>
+>>>><javac-class>[Csv](../apidocs/org/apache/juneau/marshaller/Csv.html)</javac-class>&nbsp;&nbsp;<javac-class>[Html](../apidocs/org/apache/juneau/marshaller/Html.html)</javac-class>&nbsp;&nbsp;<javac-class>[Json](../apidocs/org/apache/juneau/marshaller/Json.html)</javac-class>&nbsp;&nbsp;<javac-class>[OpenApi](../apidocs/org/apache/juneau/marshaller/OpenApi.html)</javac-class>&nbsp;&nbsp;<javac-class>[PlainText](../apidocs/org/apache/juneau/marshaller/PlainText.html)</javac-class>&nbsp;
 [...]
+
+>><java-abstract-class>[StreamMarshaller](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html)</java-abstract-class>
+>>><java-method>`byte[]` 
[write(Object)](../apidocs/org/apache/juneau/marshaller/StreamMarshaller.html#write)</java-method>
+>>>><javac-class>[MsgPack](../apidocs/org/apache/juneau/marshaller/MsgPack.html)</javac-class>
 
-:::tip Examples
 
+:::tip Examples
 
 ```java
 // Using instance.
@@ -32,12 +25,12 @@ MyPojo myPojo = json.read(string, MyPojo.class);
 String string = json.write(myPojo);
 ```
 
-
 ```java
 // Using DEFAULT instance.
 MyPojo myPojo = Json.DEFAULT.read(string, MyPojo.class);
 String string = Json.DEFAULT.write(myPojo);
 ```
+:::
 
 
 Juneau comes with the following predefined marshallers:
@@ -58,7 +51,6 @@ perform marshalling on POJOs:
 - `String`  
*[of(Object)](../apidocs/org/apache/juneau/marshaller/Json.html#of(Object))*
 
 `T`  *\{@link oaj.marshaller.Json#to(Object,Class) to(Object,Class)\}*
-:::
 
 :::tip Examples
 
diff --git a/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md 
b/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md
index 005d82cd2..ddee752d4 100644
--- a/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md
+++ b/juneau-docs-poc/docs/topics/03.01.Module-juneau-marshall-rdf.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-marshall-rdf"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-marshall-rdf"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-marshall-rdf-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.marshaller.rdf_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 The `juneau-marshall-rdf` library provides additional serializers and parsers 
for RDF.
 These rely on the Apache Jena library to provide support for the following 
languages:
 - RDF/XML
diff --git a/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md 
b/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md
index 73d288408..0b17efd0d 100644
--- a/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md
+++ b/juneau-docs-poc/docs/topics/04.01.Module-juneau-dto.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-dto"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,17 +12,17 @@ title: "Module: juneau-dto"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-dto-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.dto_{{JUNEAU_VERSION}}.jar
 ```
 
-The `juneau-dto` library contains several predefined POJOs for generating 
commonly-used document types.
-This section describes support for these POJOs.
+### Contents/Features
+- Predefined POJOs for generating commonly-used document types.
diff --git a/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md 
b/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md
index b2f062960..18df24155 100644
--- a/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md
+++ b/juneau-docs-poc/docs/topics/05.01.Module-juneau-config.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-config"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,13 +12,13 @@ title: "Module: juneau-config"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-config-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.config_{{JUNEAU_VERSION}}.jar
diff --git a/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md 
b/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md
index ab91b94fe..371873c4c 100644
--- a/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md
+++ b/juneau-docs-poc/docs/topics/06.01.Module-juneau-assertions.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-assertions"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-assertions"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-assertions-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.assertions_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 The [assertions](../apidocs/org/apache/juneau/assertions.html) package in 
Juneau is a powerful API for performing fluent style assertions.
 It is used to implement built-in assertion methods on both the server and 
client side APIs.
 But it can also be used standalone for testing.
diff --git a/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md 
b/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md
index 30edfc66f..96b6965bd 100644
--- a/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md
+++ b/juneau-docs-poc/docs/topics/07.01.Module-juneau-rest-common.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-rest-common"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-rest-common"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-rest-common-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.rest.common_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 The [http](../apidocs/org/apache/juneau/http.html) package contains a slew of 
useful extensions to the Apache HttpComponents libraries
 and define APIs used extensively in the REST server and client APIs.
 - [http](../apidocs/org/apache/juneau/http.html) - Utility classes used for 
HTTP parts/headers/entities.
diff --git a/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md 
b/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md
index 0569b56ef..bf4800191 100644
--- a/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md
+++ b/juneau-docs-poc/docs/topics/08.01.Module-juneau-rest-server.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-rest-server"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,13 +12,13 @@ title: "Module: juneau-rest-server"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-rest-server-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.rest.server_{{JUNEAU_VERSION}}.jar
@@ -42,51 +42,35 @@ The root class, 
[RestServlet](../apidocs/org/apache/juneau/rest/servlet/RestServ
 This allows maximum flexibility for the developer since you can let Juneau 
handle operations such as
 serialization, or you can revert to the existing servlet APIs to do low-level 
processing of requests yourself.
 It also means you need nothing more than a Servlet container such as Jetty to 
use the REST framework.
-### Features
 
--
-Deployable in standard Servlet containers.
--
-Deployable in Spring Boot environments with full support for injected beans.
--
-Serializes POJOs to JSON, XML, HTML, URL-Encoding, UON, RDF/XML, N-Triple, 
Turtle, N3, SOAP, or
+### Contents/Features
+
+- Deployable in standard Servlet containers.
+- Deployable in Spring Boot environments with full support for injected beans.
+- Serializes POJOs to JSON, XML, HTML, URL-Encoding, UON, RDF/XML, N-Triple, 
Turtle, N3, SOAP, or
 Java-serialized-object based on value of Accept header.
 No user code is required to handle these types.
-- Extensible design that provides ability to override existing content type 
handlers, or add the
-
-ability to handle other kinds of content types.
--
-Parses content of POST/PUT request bodies to POJOs.
--
-Automatic built-in ability to serialize POJO metadata to JSON+SCHEMA, 
XML+SCHEMA, or HTML+SCHEMA based on
-Accept header.
--
-Automatic negotiation of output Writer based on HTTP headers.
-Automatic handling of Accept-Charset header for all character sets supported 
by the JVM.
-Automatic handling of Accept-Encoding header with registered encoders.
--
-Automatic error handling.
-- Automatic 401 errors (Unauthorized) on failed guards.
-- Automatic 404 errors (Not Found) on unmatched path patterns.
-- Automatic 405 errors (Method Not Implemented) on unimplemented methods.
-- Automatic 406 errors (Not Acceptable) when no matching serializer was found 
to handle the
-
-Accept header.
-- Automatic 412 errors (Precondition Failed) when all matchers failed to match.
-- Automatic 415 errors (Unsupported Media Type) when no matching parser was 
found was found to handle
-
-the Content-Type header.
-- Automatic 500 errors on uncaught exceptions.
+- Extensible design that provides ability to override existing content type 
handlers, or add the ability to handle other kinds of content types.
+- Parses content of POST/PUT request bodies to POJOs.
+- Automatic built-in ability to serialize POJO metadata to JSON+SCHEMA, 
XML+SCHEMA, or HTML+SCHEMA based on Accept header.
+- Automatic negotiation of output Writer based on HTTP headers.
+   - Automatic handling of Accept-Charset header for all character sets 
supported by the JVM.
+   - Automatic handling of Accept-Encoding header with registered encoders.
+- Automatic error handling.
+   - Automatic 401 errors (Unauthorized) on failed guards.
+   - Automatic 404 errors (Not Found) on unmatched path patterns.
+   - Automatic 405 errors (Method Not Implemented) on unimplemented methods.
+   - Automatic 406 errors (Not Acceptable) when no matching serializer was 
found to handle the Accept header.
+   - Automatic 412 errors (Precondition Failed) when all matchers failed to 
match.
+   - Automatic 415 errors (Unsupported Media Type) when no matching parser was 
found was found to handle the Content-Type header.
+   - Automatic 500 errors on uncaught exceptions.
 
--
-Support for parsing all HTTP parts (headers, query, formData, path variables) 
using Swagger formatting rules and validations.
-Not limited to simple POJOs but rather you can represent arbitrarily-complex 
POJOs in any HTTP part using UON notation.
--
-Auto-created Swagger JSON and Swagger UI available through OPTIONS requests of 
resources.
--
-Various useful debugging features that make debugging using a browser 
extremely simple...
-Ability to pass HTTP header values as URL GET parameters (e.g. 
&Accept=text/xml).
-- Ability to pass HTTP content on PUT/POST requests as a URL GET parameter
+- Support for parsing all HTTP parts (headers, query, formData, path 
variables) using Swagger formatting rules and validations.
+   Not limited to simple POJOs but rather you can represent 
arbitrarily-complex POJOs in any HTTP part using UON notation.
+- Auto-created Swagger JSON and Swagger UI available through OPTIONS requests 
of resources.
+- Various useful debugging features that make debugging using a browser 
extremely simple...
+   - Ability to pass HTTP header values as URL GET parameters (e.g. 
&Accept=text/xml).
+   - Ability to pass HTTP content on PUT/POST requests as a URL GET parameter
 
 (e.g. &content=(foo=bar)).
 Ability to simulate non-GET requests using a &method GET parameter
diff --git 
a/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md 
b/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md
index 1325577c2..6a208e4d3 100644
--- a/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md
+++ b/juneau-docs-poc/docs/topics/09.01.Module-juneau-rest-server-springboot.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-rest-server-springboot"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,17 +12,19 @@ title: "Module: juneau-rest-server-springboot"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-rest-server-springboot-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.rest.server.springboot_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 The `juneau-rest-server-springboot` library provides classes to make it easy 
to integrate
 Juneau REST resources with Spring and Spring Boot.
diff --git a/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md 
b/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md
index 232ea20cf..1ca37a566 100644
--- a/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md
+++ b/juneau-docs-poc/docs/topics/10.01.Module-juneau-rest-client.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-rest-client"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-rest-client"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-rest-client-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.rest.client_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 Built upon the feature-rich Apache HttpClient library, the Juneau RestClient 
API adds support for fluent-style
 REST calls and the ability to perform marshalling of POJOs to and from HTTP 
parts.
 :::tip Example
diff --git a/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md 
b/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md
index d7c9d0c9b..2a7d5087e 100644
--- a/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md
+++ b/juneau-docs-poc/docs/topics/11.01.Module-juneau-rest-mock.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-rest-mock"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-rest-mock"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-rest-mock-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.rest.mock_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 The `juneau-rest-mock` module contains convenience APIs for performing 
serverless unit
 testing of your REST APIs.
 Each of the APIs provide the ability to fully test your server and client REST 
interfaces without the
diff --git 
a/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md 
b/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md
index 11bd0981e..5fc4c196c 100644
--- a/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md
+++ b/juneau-docs-poc/docs/topics/12.01.Module-juneau-microservice-core.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-microservice-core"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,18 +12,20 @@ title: "Module: juneau-microservice-core"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-microservice-core-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.microservice.core_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 Juneau Microservice is an API for creating stand-alone executable jars with 
automatic support for
 Juneau configurations and console commands.
 Features include:
diff --git 
a/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md 
b/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md
index b7c6a30a3..59910dfa5 100644
--- a/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md
+++ b/juneau-docs-poc/docs/topics/13.01.Module-juneau-microservice-jetty.md
@@ -2,7 +2,7 @@
 title: "Module: juneau-microservice-jetty"
 ---
 
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
@@ -12,17 +12,19 @@ title: "Module: juneau-microservice-jetty"
 </dependency>
 ```
 
-##### Java Library
+### Java Library
 
 ```text
 juneau-microservice-jetty-{{JUNEAU_VERSION}}.jar
 ```
 
-##### OSGi Module
+### OSGi Module
 
 ```text
 org.apache.juneau.microservice.jetty_{{JUNEAU_VERSION}}.jar
 ```
 
+### Contents/Features
+
 Juneau Microservice Jetty is an API for creating stand-alone executable jars 
that can be used to
 start lightweight configurable REST interfaces with all the power of the 
Juneau REST server and client APIs.
diff --git a/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md 
b/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md
index 78439bea4..da4bd942b 100644
--- a/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md
+++ b/juneau-docs-poc/docs/topics/16.03.App-juneau-petstore-api.md
@@ -152,7 +152,7 @@ and will be describe in the client code section.
 @Path and @Body are used by both the client and server side code to map to 
REST artifacts on both
 sides.
 Both sets of annotations are provided by pulling in the Juneau dependency 
below:
-##### Maven Dependency
+### Maven Dependency
 
 ```xml
 <dependency>
diff --git a/juneau-docs-poc/docs/topics/temp.json 
b/juneau-docs-poc/docs/topics/temp.json
new file mode 100644
index 000000000..e69de29bb
diff --git a/juneau-docs-poc/html-to-md-converter.js 
b/juneau-docs-poc/html-to-md-converter.js
index d135c7b05..44247369d 100755
--- a/juneau-docs-poc/html-to-md-converter.js
+++ b/juneau-docs-poc/html-to-md-converter.js
@@ -323,6 +323,9 @@ function convertHtmlToMarkdown(htmlContent, sourceFile) {
     // Process {@link} tags for Javadoc-style links
     markdown = processJuneauLinks(markdown);
     
+    // Convert Java trees to custom elements (must come before 
convertClassHierarchies)
+    markdown = convertJavaTreeToCustomElements(markdown);
+    
     // Convert class hierarchy trees 
     markdown = convertClassHierarchies(markdown);
     
@@ -462,6 +465,413 @@ function convertClassHierarchies(content) {
     return content;
 }
 
+function convertJavaTreeToCustomElements(content) {
+    // Convert Java tree HTML structures to custom element format
+    console.log('🔍 convertJavaTreeToCustomElements called, content length:', 
content.length);
+    
+    const result = 
content.replace(/<ul\s+class=['"](?:.*\s)?javatree(?:\s.*)?['"][^>]*>([\s\S]*?)<\/ul>/gi,
 (match, listContent) => {
+        try {
+            console.log('Converting Java tree:', match.substring(0, 100) + 
'...');
+            const lines = parseJavaTreeToLines(listContent, 0);
+            return '\n' + lines.join('\n') + '\n';
+        } catch (error) {
+            console.error('Error converting Java tree:', error);
+            return match;
+        }
+    });
+    
+    console.log('🔍 convertJavaTreeToCustomElements finished');
+    return result;
+}
+
+function parseJavaTreeToLines(html, depth) {
+    const lines = [];
+    const depthPrefix = '>'.repeat(depth);
+    
+    // Parse properly nested <li> elements 
+    let pos = 0;
+    while (pos < html.length) {
+        const liMatch = 
html.substring(pos).match(/<li\s+class=['"]([^'"]*?)['"][^>]*>/);
+        if (!liMatch) break;
+        
+        const fullLiStart = pos + liMatch.index;
+        const className = liMatch[1];
+        const liOpenEnd = fullLiStart + liMatch[0].length;
+        
+        // Find the matching </li> tag, accounting for nested <li> elements
+        let liEnd = findMatchingLiClose(html, liOpenEnd);
+        if (liEnd === -1) {
+            // If no closing </li> found, take until next <li> or end
+            const nextLi = 
html.substring(liOpenEnd).search(/<li\s+class=['"][^'"]*['"][^>]*>/);
+            liEnd = nextLi !== -1 ? liOpenEnd + nextLi : html.length;
+        }
+        
+        const content = html.substring(liOpenEnd, liEnd).trim();
+        
+        // Extract the main content before any nested <ul>
+        const ulIndex = content.indexOf('<ul');
+        const mainContent = ulIndex !== -1 ? content.substring(0, 
ulIndex).trim() : content.trim();
+        
+        // Process {@link} tags and convert to markdown links
+        const processedContent = processJavaTreeContent(mainContent);
+        
+        // Map class names to custom elements
+        const elementType = mapClassToElement(className);
+        
+        // Handle javatreec (condensed) lists
+        if (content.includes("class='javatreec'") || 
content.includes('class="javatreec"')) {
+            const condensedItems = extractCondensedItems(content);
+            if (condensedItems.length > 0) {
+                const condensedLine = depthPrefix + '>' + 
condensedItems.join('&nbsp;&nbsp;');
+                lines.push(condensedLine);
+                pos = liEnd + 5; // Skip past </li>
+                continue;
+            }
+        }
+        
+        // Add the main element
+        
lines.push(`${depthPrefix}<${elementType}>${processedContent}</${elementType}>`);
+        
+        // Process nested <ul> elements
+        const nestedUls = content.match(/<ul[^>]*>([\s\S]*?)<\/ul>/gi);
+        if (nestedUls) {
+            nestedUls.forEach(nestedUl => {
+                const nestedContent = nestedUl.replace(/^<ul[^>]*>/, 
'').replace(/<\/ul>$/, '');
+                const nestedLines = parseJavaTreeToLines(nestedContent, depth 
+ 1);
+                lines.push(...nestedLines);
+            });
+        }
+        
+        pos = liEnd + 5; // Skip past </li>
+    }
+    
+    return lines;
+}
+
+function findMatchingLiClose(html, startPos) {
+    let depth = 1;
+    let pos = startPos;
+    
+    while (pos < html.length && depth > 0) {
+        const nextLiOpen = html.substring(pos).search(/<li[^>]*>/);
+        const nextLiClose = html.substring(pos).search(/<\/li>/);
+        
+        if (nextLiClose === -1) return -1;
+        
+        if (nextLiOpen !== -1 && nextLiOpen < nextLiClose) {
+            depth++;
+            pos += nextLiOpen + 4;
+        } else {
+            depth--;
+            if (depth === 0) {
+                return pos + nextLiClose;
+            }
+            pos += nextLiClose + 5;
+        }
+    }
+    
+    return -1;
+}
+
+function mapClassToElement(className) {
+    const mapping = {
+        'jac': 'java-abstract-class',
+        'jc': 'javac-class', 
+        'jic': 'java-interface',
+        'ja': 'java-annotation',
+        'je': 'java-enum',
+        'jm': 'java-method',
+        'jmp': 'java-method-private',
+        'jma': 'java-method-annotation',
+        'jf': 'java-field',
+        'jfp': 'java-field-private'
+    };
+    
+    return mapping[className] || 'java-class';
+}
+
+function processJavaTreeContent(content) {
+    // Process {@link} tags
+    content = content.replace(/\{@link\s+([^}]+)\}/gi, (match, linkContent) => 
{
+        const parts = linkContent.split(/\s+/);
+        const target = parts[0];
+        const text = parts.slice(1).join(' ') || target.split('.').pop();
+        
+        // Expand oaj abbreviation
+        const expandedTarget = target.replace(/^oaj\./, 'org.apache.juneau.');
+        const linkPath = expandedTarget.replace(/\./g, '/');
+        
+        return `[${text}](../apidocs/${linkPath}.html)`;
+    });
+    
+    // Process <c> tags (convert to backticks)
+    content = content.replace(/<c>(.*?)<\/c>/gi, '`$1`');
+    
+    // Process <jk> tags (Java keywords)
+    content = content.replace(/<jk>(.*?)<\/jk>/gi, '$1');
+    
+    // Clean up HTML entities
+    content = content.replace(/&lt;/g, '<').replace(/&gt;/g, 
'>').replace(/&nbsp;/g, ' ');
+    
+    // Remove extra whitespace
+    content = content.replace(/\s+/g, ' ').trim();
+    
+    return content;
+}
+
+function extractCondensedItems(content) {
+    const items = [];
+    const javatreecMatch = 
content.match(/<ul\s+class=['"]javatreec['"][^>]*>([\s\S]*?)<\/ul>/i);
+    
+    if (javatreecMatch) {
+        const innerContent = javatreecMatch[1];
+        const liMatches = 
innerContent.match(/<li\s+class=['"]([^'"]*?)['"][^>]*>([\s\S]*?)<\/li>/gi);
+        
+        if (liMatches) {
+            liMatches.forEach(liMatch => {
+                const classMatch = 
liMatch.match(/class=['"]([^'"]*?)['"][^>]*>/);
+                const contentMatch = liMatch.replace(/^<li[^>]*>/, 
'').replace(/<\/li>$/, '');
+                
+                if (classMatch) {
+                    const className = classMatch[1];
+                    const elementType = mapClassToElement(className);
+                    const processedContent = 
processJavaTreeContent(contentMatch);
+                    
items.push(`<${elementType}>${processedContent}</${elementType}>`);
+                }
+            });
+        }
+    }
+    
+    return items;
+}
+
+function parseJavaTreeNode(html) {
+    const nodes = [];
+    
+    // Clean up the HTML and normalize it
+    let normalizedHtml = html.trim();
+    
+    // Split by <li> tags and process each
+    const liParts = 
normalizedHtml.split(/<li\s+class=['"]([^'"]*?)['"][^>]*>/i);
+    
+    // Skip the first empty part
+    for (let i = 1; i < liParts.length; i += 2) {
+        const className = liParts[i];
+        let content = liParts[i + 1] || '';
+        
+        // Find the end of this li content (next <li> or end of string)
+        const nextLiIndex = 
content.search(/<li\s+class=['"][^'"]*['"][^>]*>/i);
+        if (nextLiIndex !== -1) {
+            content = content.substring(0, nextLiIndex);
+        }
+        
+        const node = parseJavaTreeItem(className, content);
+        if (node) {
+            nodes.push(node);
+        }
+    }
+    
+    return nodes;
+}
+
+function parseJavaTreeItem(className, content) {
+    try {
+        // Extract the main text/link for this item
+        const { name, link, type } = extractNodeInfo(className, content);
+        
+        const node = {
+            name: name,
+            type: type,
+            link: link
+        };
+        
+        // Look for nested <ul> elements for children
+        const children = [];
+        const nestedUlPattern = 
/<ul(?:\s+class=['"]([^'"]*?)['"])?[^>]*>([\s\S]*?)<\/ul>/gi;
+        let ulMatch;
+        
+        while ((ulMatch = nestedUlPattern.exec(content)) !== null) {
+            const ulClass = ulMatch[1] || '';
+            const ulContent = ulMatch[2];
+            
+            if (ulClass.includes('javatreec')) {
+                // This is a condensed children list
+                const condensedChildren = parseCondensedChildren(ulContent);
+                if (condensedChildren.length > 0) {
+                    // Find the last child that can have condensed children
+                    if (children.length > 0) {
+                        const lastChild = children[children.length - 1];
+                        lastChild.childrenCondensed = true;
+                        lastChild.children = (lastChild.children || 
[]).concat(condensedChildren);
+                    } else {
+                        // Apply to current node
+                        node.childrenCondensed = true;
+                        node.children = (node.children || 
[]).concat(condensedChildren);
+                    }
+                }
+            } else {
+                // Regular nested children
+                const nestedChildren = parseJavaTreeNode(ulContent);
+                children.push(...nestedChildren);
+            }
+        }
+        
+        if (children.length > 0) {
+            node.children = children;
+        }
+        
+        return node;
+        
+    } catch (error) {
+        console.error('Error parsing Java tree item:', error);
+        return null;
+    }
+}
+
+function parseCondensedChildren(html) {
+    const children = [];
+    const liPattern = /<li\s+class=['"]([^'"]*?)['"][^>]*>([\s\S]*?)<\/li>/gi;
+    let match;
+    
+    while ((match = liPattern.exec(html)) !== null) {
+        const className = match[1];
+        const content = match[2];
+        
+        const { name, link, type } = extractNodeInfo(className, content);
+        children.push({
+            name: name,
+            type: type,
+            link: link
+        });
+    }
+    
+    return children;
+}
+
+function extractNodeInfo(className, content) {
+    // Map CSS class to our type system
+    const typeMap = {
+        'jac': 'java-abstract-class',
+        'jc': 'java-class', 
+        'jic': 'java-interface',
+        'ja': 'java-annotation',
+        'je': 'java-enum',
+        'jm': 'java-method',
+        'jf': 'java-field',
+        'jmp': 'java-private-method',
+        'jfp': 'java-private-field',
+        'jma': 'java-annotation-method'
+    };
+    
+    const type = typeMap[className] || 'java-class';
+    
+    // Extract the main content before any nested <ul> tags
+    const mainContent = content.split('<ul')[0].trim();
+    
+    // Extract link and name from {@link} patterns
+    const linkPattern = /\{@link\s+([^}]+)\}/gi;
+    const linkMatch = linkPattern.exec(mainContent);
+    
+    let name = '';
+    let link = '';
+    
+    if (linkMatch) {
+        const linkTarget = linkMatch[1];
+        
+        // Handle package abbreviations
+        let expandedTarget = linkTarget;
+        for (const [abbrev, fullPackage] of 
Object.entries(packageAbbreviations)) {
+            expandedTarget = expandedTarget.replace(new 
RegExp(`^${abbrev}\\.`, 'g'), `${fullPackage}.`);
+        }
+        
+        // Extract class name and method
+        const parts = expandedTarget.split('#');
+        const classPath = parts[0];
+        const methodName = parts[1];
+        
+        // Get the simple class name
+        const classSegments = classPath.split('.');
+        name = classSegments[classSegments.length - 1];
+        
+        // If there's a method, format it properly
+        if (methodName) {
+            // Clean up method signature from content after the {@link}
+            const afterLink = mainContent.replace(/\{@link[^}]+\}/, '').trim();
+            const codeMatch = afterLink.match(/<c>(.*?)<\/c>/);
+            let returnType = codeMatch ? codeMatch[1] : '';
+            
+            // Decode HTML entities in return type
+            returnType = returnType.replace(/&lt;/g, '<').replace(/&gt;/g, 
'>').replace(/&amp;/g, '&');
+            
+            // Extract the method signature (everything after the return type)
+            const methodText = afterLink.replace(/<c>.*?<\/c>/, 
'').replace(/&nbsp;/g, ' ').trim();
+            let methodSig = methodText || methodName;
+            
+            // Decode HTML entities in method signature
+            methodSig = methodSig.replace(/&lt;/g, '<').replace(/&gt;/g, 
'>').replace(/&amp;/g, '&');
+            
+            if (returnType) {
+                name = `${returnType} ${methodSig}`;
+            } else {
+                name = methodSig;
+            }
+        }
+        
+        // Convert to documentation link
+        const classPathWithSlashes = classPath.replace(/\./g, '/');
+        link = `../apidocs/${classPathWithSlashes}.html`;
+        if (methodName) {
+            // Clean up method name for anchor - just the method name without 
params
+            const cleanMethodName = methodName.split('(')[0];
+            link += `#${cleanMethodName}`;
+        }
+    } else {
+        // Fallback: extract text content
+        name = mainContent.replace(/<[^>]*>/g, '').replace(/&nbsp;/g, ' 
').replace(/\s+/g, ' ').trim();
+        // Decode HTML entities
+        name = name.replace(/&lt;/g, '<').replace(/&gt;/g, 
'>').replace(/&amp;/g, '&');
+    }
+    
+    return { name, link, type };
+}
+
+function generateClassHierarchyComponent(nodes) {
+    const indent = '  ';
+    
+    function nodeToString(node, depth = 1) {
+        const baseIndent = indent.repeat(depth);
+        let result = `${baseIndent}{ name: "${escapeQuotes(node.name)}", type: 
"${node.type}"`;
+        
+        if (node.link) {
+            result += `, link: "${node.link}"`;
+        }
+        
+        if (node.childrenCondensed) {
+            result += `, childrenCondensed: true`;
+        }
+        
+        if (node.children && node.children.length > 0) {
+            result += `,\n${baseIndent}  children: [\n`;
+            
+            const childStrings = node.children.map(child => 
nodeToString(child, depth + 2));
+            result += childStrings.join(',\n');
+            
+            result += `\n${baseIndent}  ]`;
+        }
+        
+        result += ' }';
+        return result;
+    }
+    
+    const nodeStrings = nodes.map(node => nodeToString(node));
+    
+    return `<ClassHierarchy nodes={[\n${nodeStrings.join(',\n')}\n]} />`;
+}
+
+function escapeQuotes(text) {
+    return text.replace(/"/g, '\\"').replace(/'/g, "\\'");
+}
+
 function convertTables(content) {
     // Convert HTML tables to Markdown tables
     content = content.replace(/<table[^>]*>([\s\S]*?)<\/table>/gi, (match, 
tableContent) => {
diff --git a/juneau-docs-poc/src/components/ClassHierarchy.module.css 
b/juneau-docs-poc/src/components/ClassHierarchy.module.css
index c0b0511be..2a733b795 100644
--- a/juneau-docs-poc/src/components/ClassHierarchy.module.css
+++ b/juneau-docs-poc/src/components/ClassHierarchy.module.css
@@ -19,6 +19,8 @@
   border-radius: 8px;
   background: var(--ifm-color-emphasis-100);
   padding: 1rem;
+  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
+  font-size: 14px;
 }
 
 .treeList {
@@ -29,9 +31,48 @@
 
 .treeList .treeList {
   padding-left: 1.5rem;
-  margin-top: 0.5rem;
+  margin-top: 0.25rem;
   border-left: 2px solid var(--ifm-color-emphasis-300);
   margin-left: 1rem;
+  position: relative;
+}
+
+/* Tree connection lines */
+.treeList .treeList::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 10px;
+  border-left: 1px solid var(--ifm-color-emphasis-400);
+  height: 100%;
+}
+
+.treeNode::before {
+  content: '';
+  position: absolute;
+  top: 18px;
+  left: -15px;
+  border-top: 1px solid var(--ifm-color-emphasis-400);
+  width: 15px;
+}
+
+.treeNode::after {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: -15px;
+  border-left: 1px solid var(--ifm-color-emphasis-400);
+  height: 18px;
+}
+
+.treeNode:last-child::after {
+  height: 18px;
+}
+
+/* Remove lines for root level */
+.hierarchyContainer > .treeList > .treeNode::before,
+.hierarchyContainer > .treeList > .treeNode::after {
+  display: none;
 }
 
 .treeNode {
@@ -39,14 +80,24 @@
   padding: 0.25rem 0;
   display: flex;
   align-items: flex-start;
-  line-height: 1.4;
+  line-height: 1.0;
+  position: relative;
 }
 
 .icon {
   margin-right: 0.5rem;
-  font-size: 1rem;
+  font-size: 0.9rem;
   flex-shrink: 0;
   margin-top: 0.1rem;
+  font-weight: bold;
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  width: 1.2rem;
+  height: 1.2rem;
+  border-radius: 50%;
+  background: var(--ifm-color-emphasis-300);
+  color: var(--ifm-color-emphasis-900);
 }
 
 .nodeLink {
@@ -85,6 +136,11 @@
   margin-left: -0.5rem;
 }
 
+.interface .icon {
+  background: #2196f3;
+  color: white;
+}
+
 .class {
   background: rgba(76, 175, 80, 0.05);
   border-left: 3px solid #4caf50;
@@ -92,6 +148,11 @@
   margin-left: -0.5rem;
 }
 
+.class .icon {
+  background: #4caf50;
+  color: white;
+}
+
 .abstract {
   background: rgba(255, 152, 0, 0.05);
   border-left: 3px solid #ff9800;
@@ -99,6 +160,11 @@
   margin-left: -0.5rem;
 }
 
+.abstract .icon {
+  background: #ff9800;
+  color: white;
+}
+
 .method {
   background: rgba(156, 39, 176, 0.05);
   border-left: 3px solid #9c27b0;
@@ -106,6 +172,11 @@
   margin-left: -0.5rem;
 }
 
+.method .icon {
+  background: #9c27b0;
+  color: white;
+}
+
 .field {
   background: rgba(63, 81, 181, 0.05);
   border-left: 3px solid #3f51b5;
@@ -113,6 +184,76 @@
   margin-left: -0.5rem;
 }
 
+.field .icon {
+  background: #3f51b5;
+  color: white;
+}
+
+.annotation {
+  background: rgba(255, 193, 7, 0.05);
+  border-left: 3px solid #ffc107;
+  padding-left: 0.5rem;
+  margin-left: -0.5rem;
+}
+
+.annotation .icon {
+  background: #ffc107;
+  color: #333;
+}
+
+.enum {
+  background: rgba(121, 85, 72, 0.05);
+  border-left: 3px solid #795548;
+  padding-left: 0.5rem;
+  margin-left: -0.5rem;
+}
+
+.enum .icon {
+  background: #795548;
+  color: white;
+}
+
+.privateMethod {
+  background: rgba(156, 39, 176, 0.03);
+  border-left: 3px solid #9c27b0;
+  padding-left: 0.5rem;
+  margin-left: -0.5rem;
+  opacity: 0.7;
+}
+
+.privateMethod .icon {
+  background: #9c27b0;
+  color: white;
+  opacity: 0.8;
+}
+
+.privateField {
+  background: rgba(63, 81, 181, 0.03);
+  border-left: 3px solid #3f51b5;
+  padding-left: 0.5rem;
+  margin-left: -0.5rem;
+  opacity: 0.7;
+}
+
+.privateField .icon {
+  background: #3f51b5;
+  color: white;
+  opacity: 0.8;
+}
+
+.annotationMethod {
+  background: rgba(255, 193, 7, 0.03);
+  border-left: 3px solid #ffc107;
+  padding-left: 0.5rem;
+  margin-left: -0.5rem;
+}
+
+.annotationMethod .icon {
+  background: #ffc107;
+  color: #333;
+  opacity: 0.8;
+}
+
 /* Dark theme adjustments */
 [data-theme='dark'] .hierarchyContainer {
   background: var(--ifm-color-emphasis-200);
@@ -123,10 +264,21 @@
   border-left-color: var(--ifm-color-emphasis-400);
 }
 
+[data-theme='dark'] .treeList .treeList::before,
+[data-theme='dark'] .treeNode::before,
+[data-theme='dark'] .treeNode::after {
+  border-color: var(--ifm-color-emphasis-500);
+}
+
 [data-theme='dark'] .description {
   color: var(--ifm-color-emphasis-600);
 }
 
+[data-theme='dark'] .icon {
+  background: var(--ifm-color-emphasis-400);
+  color: var(--ifm-color-emphasis-100);
+}
+
 /* Responsive adjustments */
 @media (max-width: 768px) {
   .treeList .treeList {
@@ -141,6 +293,6 @@
   .description {
     display: block;
     margin-left: 1.5rem;
-    margin-top: 0.25rem;
+    margin-top: 0.125rem;
   }
 }
diff --git a/juneau-docs-poc/src/components/ClassHierarchy.tsx 
b/juneau-docs-poc/src/components/ClassHierarchy.tsx
index 7dc4a4007..01cb66bce 100644
--- a/juneau-docs-poc/src/components/ClassHierarchy.tsx
+++ b/juneau-docs-poc/src/components/ClassHierarchy.tsx
@@ -12,14 +12,15 @@
  */
 
 import React from 'react';
-import styles from './ClassHierarchy.module.css';
 
 interface ClassNode {
   name: string;
-  type: 'interface' | 'class' | 'abstract' | 'method' | 'field' | 'annotation' 
| 'enum' | 'private-method' | 'private-field' | 'annotation-method';
+  type: 'interface' | 'class' | 'abstract' | 'method' | 'field' | 'annotation' 
| 'enum' | 'private-method' | 'private-field' | 'annotation-method' |
+        'java-interface' | 'java-class' | 'java-abstract-class' | 
'java-method' | 'java-field' | 'java-annotation' | 'java-enum' | 
'java-private-method' | 'java-private-field' | 'java-annotation-method';
   link?: string;
   description?: string;
   children?: ClassNode[];
+  childrenCondensed?: boolean;
 }
 
 interface ClassHierarchyProps {
@@ -29,34 +30,72 @@ interface ClassHierarchyProps {
 const getCssClass = (type: string) => {
   switch (type) {
     case 'interface':
+    case 'java-interface':
       return 'jic'; // Java interface
     case 'class':
+    case 'java-class':
       return 'jc'; // Java class
     case 'abstract':
+    case 'java-abstract-class':
       return 'jac'; // Java abstract class
     case 'method':
+    case 'java-method':
       return 'jm'; // Java method
     case 'field':
+    case 'java-field':
       return 'jf'; // Java field
     case 'annotation':
+    case 'java-annotation':
       return 'ja'; // Java annotation
     case 'enum':
+    case 'java-enum':
       return 'je'; // Java enum
     case 'private-method':
+    case 'java-private-method':
       return 'jmp'; // Java private method
     case 'private-field':
+    case 'java-private-field':
       return 'jfp'; // Java private field
     case 'annotation-method':
+    case 'java-annotation-method':
       return 'jma'; // Java annotation method
     default:
       return 'jc';
   }
 };
 
+const getTypeIcon = (type: string) => {
+  switch (type) {
+    case 'interface':
+      return '\u24d8'; // ⓘ
+    case 'class':
+      return '\u24d2'; // ⓒ
+    case 'abstract':
+      return '\u24d2'; // ⓒ (same as class but different color)
+    case 'method':
+      return '\u25cf'; // ●
+    case 'field':
+      return '\u25cf'; // ●
+    case 'annotation':
+      return '\u24d0'; // ⓐ
+    case 'enum':
+      return '\u24d4'; // ⓔ
+    case 'private-method':
+      return '\u25c6'; // ◆
+    case 'private-field':
+      return '\u25cf'; // ●
+    case 'annotation-method':
+      return '\u25cf'; // ●
+    default:
+      return '\u24d2'; // ⓒ
+  }
+};
+
 const ClassTreeNode: React.FC<{ node: ClassNode; level: number }> = ({ node, 
level }) => {
-  const cssClass = getCssClass(node.type);
+  const typeClass = getCssClass(node.type);
+  
   return (
-    <li className={cssClass}>
+    <li className={typeClass}>
       {node.link ? (
         <a href={node.link}>
           {node.name}
@@ -68,7 +107,7 @@ const ClassTreeNode: React.FC<{ node: ClassNode; level: 
number }> = ({ node, lev
         <span> - {node.description}</span>
       )}
       {node.children && node.children.length > 0 && (
-        <ul>
+        <ul className={node.childrenCondensed ? 'condensed' : ''}>
           {node.children.map((child, index) => (
             <ClassTreeNode key={index} node={child} level={level + 1} />
           ))}
@@ -80,13 +119,11 @@ const ClassTreeNode: React.FC<{ node: ClassNode; level: 
number }> = ({ node, lev
 
 export const ClassHierarchy: React.FC<ClassHierarchyProps> = ({ nodes }) => {
   return (
-    <div className="javatreec">
-      <ul>
-        {nodes.map((node, index) => (
-          <ClassTreeNode key={index} node={node} level={0} />
-        ))}
-      </ul>
-    </div>
+    <ul className="javatreec">
+      {nodes.map((node, index) => (
+        <ClassTreeNode key={index} node={node} level={0} />
+      ))}
+    </ul>
   );
 };
 
diff --git a/juneau-docs-poc/src/css/custom.css 
b/juneau-docs-poc/src/css/custom.css
index d1c2167ed..9986a06b3 100644
--- a/juneau-docs-poc/src/css/custom.css
+++ b/juneau-docs-poc/src/css/custom.css
@@ -347,94 +347,50 @@ a[href*="apidocs"]:hover {
   margin-top: 0;
 }
 
-/* Java Tree styling - using original Juneau icons */
-.java-tree, .javatreec {
-  background: var(--ifm-color-emphasis-100);
-  border: 1px solid var(--ifm-color-emphasis-300);
-  border-radius: 8px;
-  padding: 1rem 1.5rem;
-  margin: 1.5rem 0;
-  max-width: 900px;
-}
+/* Java Tree CSS - Original Juneau styling */
 
-.java-tree ul, .javatreec ul {
-  padding-left: 0px;
-  margin: 0px;
-  max-width: 900px;
-  margin-left: 1.5rem;
-  border-left: 2px solid var(--ifm-color-emphasis-300);
-  padding-left: 1rem;
+/* Documentation Tree - from original juneau-doc.css */
+.doctree li, .javatree li, .seealso>li, .notes>li, .values>li, .format>li { 
+  max-width: 800px; 
+  margin-top: 0px; 
+  list-style: none;
 }
-
-.java-tree li, .javatreec li {
-  display: inline-block;
-  padding-left: 5px;
-  margin: 0.5rem 0;
-  line-height: 1.4;
-  width: 100%;
+.doctree>li, .seealso>li { 
+  margin-bottom: 10px; 
 }
-
-.java-tree li::before, .javatreec li::before {
-  font-weight: bolder;
-  font-size: x-small;
-}
-
-/* Java element type icons */
-/* Larger icons for class/interface/annotation/enum */
-.java-tree li.ja::before, .javatreec li.ja::before { color: #00ced1; content: 
'\00a0\00a0\24d0\00a0'; font-size: medium; font-weight: bold; } /* Java 
annotation */
-.java-tree li.jc::before, .javatreec li.jc::before { color: rgb(76, 107, 135); 
content: '\00a0\00a0\24d2\00a0'; font-size: medium; font-weight: bold; } /* 
Java class */
-.java-tree li.jac::before, .javatreec li.jac::before { color: #eed304; 
content: '\00a0\00a0\24d2\00a0'; font-size: medium; font-weight: bold; } /* 
Java abstract class */
-.java-tree li.jic::before, .javatreec li.jic::before { color: #5f4ba2; 
content: '\00a0\00a0\24d8\00a0'; font-size: medium; font-weight: bold; } /* 
Java interface */
-.java-tree li.je::before, .javatreec li.je::before { color: #906029; content: 
'\00a0\00a0\24d4\00a0'; font-size: medium; font-weight: bold; } /* Java enum */
-
-/* Smaller icons for methods/fields */
-.java-tree li.jf::before, .javatreec li.jf::before { color: rgb(76, 107, 135); 
content: '\00a0\00a0\25cf\00a0'; } /* Java field */
-.java-tree li.jfp::before, .javatreec li.jfp::before { color: #eed304; 
content: '\00a0\00a0\25cf\00a0'; } /* Java private field */
-.java-tree li.jm::before, .javatreec li.jm::before { color: rgb(76, 107, 135); 
content: '\00a0\00a0\25cf\00a0'; } /* Java method */
-.java-tree li.jmp::before, .javatreec li.jmp::before { color: #eed304; 
content: '\00a0\00a0\25c6\00a0'; } /* Java private method */
-.java-tree li.jma::before, .javatreec li.jma::before { color: #00ced1; 
content: '\00a0\00a0\25cf\00a0'; } /* Java annotation method */
-
-/* List markers for better compatibility */
-.java-tree li.jc::marker, .javatreec li.jc::marker { font-weight: bolder; 
font-size: small; color: #008000; content: '\00a0\00a0\24d2\00a0\00a0'; }
-.java-tree li.jac::marker, .javatreec li.jac::marker { font-weight: bolder; 
font-size: small; color: #eed304; content: '\00a0\00a0\24d2\00a0\00a0'; }
-.java-tree li.jic::marker, .javatreec li.jic::marker { font-weight: bolder; 
font-size: small; color: #5f4ba2; content: '\00a0\00a0\24d8\00a0\00a0'; }
-.java-tree li.ja::marker, .javatreec li.ja::marker { font-weight: bolder; 
font-size: small; color: #00ced1; content: '\00a0\00a0\24d0\00a0\00a0'; }
-.java-tree li.je::marker, .javatreec li.je::marker { font-weight: bolder; 
font-size: small; color: #906029; content: '\00a0\00a0\24d4\00a0\00a0'; }
-.java-tree li.jm::marker, .javatreec li.jm::marker { font-weight: bolder; 
font-size: small; color: #008000; content: '\00a0\00a0\25cf\00a0\00a0'; }
-.java-tree li.jf::marker, .javatreec li.jf::marker { font-weight: bolder; 
font-size: small; color: #008000; content: '\00a0\00a0\25cf\00a0\00a0'; }
-.java-tree li.jp::marker, .javatreec li.jp::marker { font-weight: bolder; 
font-size: small; color: #e09c01; content: '\00a0\00a0\229e\00a0\00a0'; }
-.java-tree li.jmp::marker, .javatreec li.jmp::marker { font-weight: bolder; 
font-size: small; color: #eed304; content: '\00a0\00a0\25c6\00a0\00a0'; }
-.java-tree li.jma::marker, .javatreec li.jma::marker { font-weight: bolder; 
font-size: small; color: #00ced1; content: '\00a0\00a0\25cf\00a0\00a0'; }
-
-.java-tree code {
-  background: none;
-  border: none;
-  padding: 0;
-  color: var(--ifm-color-primary);
+.doctree li, .seealso li {  
+  margin-top: 5px; 
 }
-
-.java-tree a {
-  color: rgb(76, 107, 135);
-  text-decoration: none;
-  border-bottom: 1px dotted rgb(76, 107, 135);
+.doctree ul, .seealso ul {  
+  padding: 0px 0px 0px 15px; 
+  margin-top: -2px; 
+  margin-bottom: -2px; 
 }
-
-.java-tree a:hover {
-  color: rgb(60, 85, 108);
-  border-bottom: 1px solid rgb(60, 85, 108);
-  background: rgba(76, 107, 135, 0.05);
-  border-radius: 3px;
-  padding: 1px 3px;
+.javatree>li {  
+  margin-bottom: 1px; 
 }
-
-/* Dark theme for java-tree */
-[data-theme='dark'] .java-tree, [data-theme='dark'] .javatreec {
-  background: var(--ifm-color-emphasis-200);
-  border-color: var(--ifm-color-emphasis-400);
+.javatree li { 
+  margin-top: 1px; 
+}
+.javatree ul { 
+  padding: 0px 0px 0px 20px; 
+  margin-top: 0px; 
+  margin-bottom: 0px; 
 }
 
-[data-theme='dark'] .java-tree ul, [data-theme='dark'] .javatreec ul {
-  border-left-color: var(--ifm-color-emphasis-400);
+/* Compressed/condensed Java tree - from original juneau-doc.css */
+ul.javatreec, .javatreec ul {  
+  padding-left: 0px; 
+  margin: 0px;
+  max-width: 900px; 
+}
+.javatreec li { 
+  display: inline-block; 
+  padding-left: 5px; 
+}
+.javatreec li::before { 
+  font-weight: bolder; 
+  font-size: x-small; 
 }
 
 /* Responsive adjustments */
@@ -446,9 +402,48 @@ a[href*="apidocs"]:hover {
   .feature-grid {
     grid-template-columns: 1fr;
   }
-  
-  .java-tree ul {
-    margin-left: 1rem;
-    padding-left: 0.75rem;
-  }
-}
\ No newline at end of file
+}
+
+javac-annotation, 
+javac-class, 
+javac-abstract-class, 
+javac-interface, 
+javac-enum, 
+javac-field, 
+javac-field-private, 
+javac-method, 
+javac-method-private, 
+javac-method-annotation { font: 'Lucida Console'; font-size: small; }
+
+java-annotation, 
+java-class, 
+java-abstract-class, 
+java-interface, 
+java-enum, 
+java-field, 
+java-field-private, 
+java-method, 
+java-method-private, 
+java-method-annotation { font: 'Lucida Console';}
+
+javac-annotation::before  { color: #00ced1; content: '\24d0\00a0'; 
font-weight: bolder; font-size: x-small; }
+javac-class::before  { color: #008000; content: '\24d2\00a0'; font-weight: 
bolder; font-size: x-small; }
+javac-abstract-class::before { color: #CCB404; content: '\24d2\00a0'; 
font-weight: bolder; font-size: x-small; }
+javac-interface::before { color: #5f4ba2; content: '\24d8\00a0'; font-weight: 
bolder; font-size: x-small; }
+javac-enum::before  { color: #906029; content: '\24d4\00a0'; font-weight: 
bolder; font-size: x-small; }
+javac-field::before  { color: #008000; content: '\25cf\00a0'; font-weight: 
bolder; font-size: x-small; }
+javac-field-private::before { color: #CCB404; content: '\25cf\00a0'; 
font-weight: bolder; font-size: x-small; }
+javac-method::before  { color: #008000; content: '\25cf\00a0'; font-weight: 
bolder; font-size: x-small; }
+javac-method-private::before { color: #CCB404; content: '\25c6\00a0'; 
font-weight: bolder; font-size: x-small; }
+javac-method-annotation::before { color: #00ced1; content: '\25cf\00a0'; 
font-weight: bolder; font-size: x-small; }
+
+java-annotation::before  { color: #00ced1; content: '\24d0\00a0\00a0'; 
font-weight: bolder; font-size: large; }
+java-class::before  { color: #008000; content: '\24d2\00a0\00a0'; font-weight: 
bolder; font-size: large; }
+java-abstract-class::before { color: #CCB404; content: '\24d2\00a0\00a0'; 
font-weight: bolder; font-size: large; }
+java-interface::before { color: #5f4ba2; content: '\24d8\00a0\00a0'; 
font-weight: bolder; font-size: large; }
+java-enum::before  { color: #906029; content: '\24d4\00a0\00a0'; font-weight: 
bolder; font-size: large; }
+java-field::before  { color: #008000; content: '\25cf\00a0\00a0'; font-weight: 
bolder; font-size: x-small; }
+java-field-private::before { color: #CCB404; content: '\25cf\00a0\00a0'; 
font-weight: bolder; font-size: x-small; }
+java-method::before  { color: #008000; content: '\25cf\00a0\00a0'; 
font-weight: bolder; font-size: x-small; }
+java-method-private::before { color: #CCB404; content: '\25c6\00a0\00a0'; 
font-weight: bolder; font-size: x-small; }
+java-method-annotation::before { color: #00ced1; content: '\25cf\00a0\00a0'; 
font-weight: bolder; font-size: x-small; }

Reply via email to