You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2020/03/29 20:22:02 UTC

[juneau] branch master updated: Replace ObjectMap/ObjectList with OMap/OList

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 34874b3  Replace ObjectMap/ObjectList with OMap/OList
34874b3 is described below

commit 34874b396ef33886c92a6af706efd754afc72595
Author: JamesBognar <ja...@apache.org>
AuthorDate: Sun Mar 29 16:21:43 2020 -0400

    Replace ObjectMap/ObjectList with OMap/OList
---
 .../main/java/org/apache/juneau/config/Config.java |  66 +-
 .../apache/juneau/config/internal/ConfigMap.java   |   4 +-
 .../juneau/config/store/ConfigClasspathStore.java  |   5 +-
 .../juneau/config/store/ConfigFileStore.java       |  11 +-
 .../juneau/config/store/ConfigMemoryStore.java     |   5 +-
 .../apache/juneau/config/store/ConfigStore.java    |   5 +-
 .../apache/juneau/BeanConfigAnnotationTest.java    |   5 +-
 .../java/org/apache/juneau/BeanConfigTest.java     |  10 +-
 .../test/java/org/apache/juneau/BeanMapTest.java   | 319 ++++----
 .../java/org/apache/juneau/ContextCacheTest.java   |  13 +-
 .../java/org/apache/juneau/DataConversionTest.java |  27 +-
 .../java/org/apache/juneau/DynaBeanComboTest.java  |   9 +-
 .../juneau/{ObjectListTest.java => OListTest.java} |  31 +-
 .../juneau/{ObjectMapTest.java => OMapTest.java}   | 237 +++---
 .../test/java/org/apache/juneau/PojoSwapTest.java  |   3 +-
 .../java/org/apache/juneau/PropertyStoreTest.java  |  22 +-
 .../juneau/a/rttests/RoundTripGenericsTest.java    |   6 +-
 .../a/rttests/RoundTripSimpleObjectsTest.java      |  14 +-
 .../org/apache/juneau/a/rttests/RoundTripTest.java |   6 +-
 ...jectMapsTest.java => RoundTripToOMapsTest.java} |  18 +-
 .../juneau/a/rttests/RoundTripTrimStringsTest.java |  30 +-
 .../java/org/apache/juneau/config/ConfigTest.java  |  38 +-
 .../apache/juneau/dto/cognos/CognosXmlTest.java    |   3 +-
 .../org/apache/juneau/dto/swagger/SwaggerTest.java |  13 +-
 .../org/apache/juneau/html/CommonParserTest.java   |   8 +-
 .../java/org/apache/juneau/html/CommonTest.java    |   5 +-
 .../test/java/org/apache/juneau/html/HtmlTest.java |  11 +-
 .../juneau/httppart/OpenApiPartParserTest.java     |  46 +-
 .../juneau/httppart/OpenApiPartSerializerTest.java |  85 ++-
 .../apache/juneau/httppart/UonPartParserTest.java  |   5 +-
 .../org/apache/juneau/jena/CommonParserTest.java   |   8 +-
 .../java/org/apache/juneau/jena/CommonTest.java    |   9 +-
 .../java/org/apache/juneau/jena/RdfParserTest.java |   4 +-
 .../org/apache/juneau/json/CommonParserTest.java   |  14 +-
 .../java/org/apache/juneau/json/CommonTest.java    |   5 +-
 .../org/apache/juneau/json/JsonParserTest.java     |  29 +-
 .../test/java/org/apache/juneau/json/JsonTest.java |  14 +-
 .../juneau/jsonschema/JsonSchemaGeneratorTest.java |  93 +--
 .../juneau/msgpack/MsgPackSerializerTest.java      |  10 +-
 ...ngObjectMapTest.java => ResolvingOMapTest.java} |  21 +-
 .../apache/juneau/transform/AutoListSwapTest.java  |  22 +-
 .../apache/juneau/transform/AutoMapSwapTest.java   |  22 +-
 .../juneau/transform/AutoObjectSwapTest.java       |  18 +-
 .../org/apache/juneau/transforms/BeanMapTest.java  |  13 +-
 .../juneau/transforms/CalendarSwapComboTest.java   |  27 +-
 .../juneau/transforms/DateSwapComboTest.java       |  27 +-
 .../org/apache/juneau/transforms/DateSwapTest.java |   5 +-
 .../apache/juneau/uon/CommonParser_UonTest.java    |   8 +-
 .../java/org/apache/juneau/uon/Common_UonTest.java |   5 +-
 .../java/org/apache/juneau/uon/UonParserTest.java  |  13 +-
 .../org/apache/juneau/uon/UonSerializerTest.java   |  60 +-
 .../urlencoding/CommonParser_UrlEncodingTest.java  |  16 +-
 .../juneau/urlencoding/Common_UrlEncodingTest.java |   7 +-
 .../juneau/urlencoding/UrlEncodingParserTest.java  |  35 +-
 .../urlencoding/UrlEncodingSerializerTest.java     |  59 +-
 .../org/apache/juneau/utils/FilteredMapTest.java   |   3 +-
 .../org/apache/juneau/utils/MultiIterableTest.java |   8 +-
 .../java/org/apache/juneau/utils/PojoRestTest.java | 223 +++---
 .../org/apache/juneau/utils/StringUtilsTest.java   |  32 +-
 .../java/org/apache/juneau/xml/BasicXmlTest.java   |   4 +-
 .../org/apache/juneau/xml/CommonParserTest.java    |  14 +-
 .../java/org/apache/juneau/xml/CommonTest.java     |   5 +-
 .../org/apache/juneau/xml/InvalidXmlBeansTest.java |  42 +-
 .../apache/juneau/xml/XmlIgnoreCommentsTest.java   |   3 +-
 .../java/org/apache/juneau/xml/XmlParserTest.java  |  34 +-
 .../test/java/org/apache/juneau/xml/XmlTest.java   |   7 +-
 .../java/org/apache/juneau/dto/swagger/Items.java  |   8 +-
 .../org/apache/juneau/dto/swagger/Swagger.java     |  16 +-
 .../apache/juneau/dto/swagger/SwaggerElement.java  |   5 +-
 .../apache/juneau/dto/swagger/ui/SwaggerUI.java    |  14 +-
 .../java/org/apache/juneau/jena/RdfParser.java     |  16 +-
 .../org/apache/juneau/jena/RdfParserSession.java   |  23 +-
 .../java/org/apache/juneau/jena/RdfSerializer.java |  26 +-
 .../apache/juneau/jena/RdfSerializerSession.java   |   7 +-
 .../main/java/org/apache/juneau/BeanContext.java   |  68 +-
 .../java/org/apache/juneau/BeanContextBuilder.java |   5 +-
 .../src/main/java/org/apache/juneau/BeanMap.java   |   5 +-
 .../java/org/apache/juneau/BeanPropertyMeta.java   |  18 +-
 .../java/org/apache/juneau/BeanPropertyValue.java  |  10 +-
 .../main/java/org/apache/juneau/BeanSession.java   |  52 +-
 .../java/org/apache/juneau/BeanSessionArgs.java    |   9 +-
 .../org/apache/juneau/BeanTraverseContext.java     |  13 +-
 .../org/apache/juneau/BeanTraverseSession.java     |  20 +-
 .../src/main/java/org/apache/juneau/ClassMeta.java |   4 +-
 .../main/java/org/apache/juneau/ConfigApply.java   |  23 +-
 .../src/main/java/org/apache/juneau/Context.java   |  11 +-
 ...ingObjectMap.java => DefaultFilteringOMap.java} |  21 +-
 .../juneau/InvalidDataConversionException.java     |   2 +-
 .../org/apache/juneau/PropertyStoreBuilder.java    |  13 +-
 .../src/main/java/org/apache/juneau/Session.java   |  11 +-
 .../main/java/org/apache/juneau/SessionArgs.java   |  13 +-
 .../main/java/org/apache/juneau/UriContext.java    |   3 +-
 .../apache/juneau/annotation/BeanConfigApply.java  |   2 +-
 .../java/org/apache/juneau/collections/Args.java   |  16 +-
 .../java/org/apache/juneau/collections/OList.java  | 123 +++-
 .../java/org/apache/juneau/collections/OMap.java   | 211 +++++-
 .../main/java/org/apache/juneau/csv/CsvParser.java |   5 +-
 .../org/apache/juneau/csv/CsvParserSession.java    |   5 +-
 .../java/org/apache/juneau/csv/CsvSerializer.java  |   5 +-
 .../apache/juneau/csv/CsvSerializerSession.java    |   5 +-
 .../org/apache/juneau/html/HtmlDocSerializer.java  |  31 +-
 .../juneau/html/HtmlDocSerializerSession.java      |  24 +-
 .../java/org/apache/juneau/html/HtmlParser.java    |   5 +-
 .../org/apache/juneau/html/HtmlParserSession.java  |  22 +-
 .../juneau/html/HtmlSchemaDocSerializer.java       |   5 +-
 .../apache/juneau/html/HtmlSchemaSerializer.java   |   7 +-
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |   3 +-
 .../juneau/html/HtmlSchemaSerializerSession.java   |   5 +-
 .../org/apache/juneau/html/HtmlSerializer.java     |  36 +-
 .../apache/juneau/html/HtmlSerializerSession.java  |   7 +-
 .../juneau/html/HtmlStrippedDocSerializer.java     |   5 +-
 .../html/HtmlStrippedDocSerializerSession.java     |   5 +-
 .../org/apache/juneau/http/annotation/Body.java    |   2 +-
 .../apache/juneau/http/annotation/FormData.java    |   9 +-
 .../org/apache/juneau/http/annotation/Header.java  |   7 +-
 .../org/apache/juneau/http/annotation/Path.java    |   9 +-
 .../org/apache/juneau/http/annotation/Query.java   |   7 +-
 .../org/apache/juneau/httppart/HttpPartSchema.java |  60 +-
 .../juneau/httppart/HttpPartSchemaBuilder.java     |  28 +-
 .../org/apache/juneau/internal/ClassUtils.java     |   4 +-
 .../apache/juneau/internal/CollectionUtils.java    |   8 +-
 .../apache/juneau/internal/DelegateBeanMap.java    |   3 +-
 .../org/apache/juneau/internal/DelegateList.java   |   3 +-
 .../org/apache/juneau/internal/DelegateMap.java    |   5 +-
 .../org/apache/juneau/internal/ObjectUtils.java    |   8 +-
 .../org/apache/juneau/internal/StringUtils.java    |  13 +-
 .../main/java/org/apache/juneau/jso/JsoParser.java |   5 +-
 .../org/apache/juneau/jso/JsoParserSession.java    |   5 +-
 .../java/org/apache/juneau/jso/JsoSerializer.java  |   5 +-
 .../apache/juneau/jso/JsoSerializerSession.java    |   5 +-
 .../java/org/apache/juneau/json/JsonParser.java    |  17 +-
 .../org/apache/juneau/json/JsonParserSession.java  |  21 +-
 .../apache/juneau/json/JsonSchemaSerializer.java   |   7 +-
 .../juneau/json/JsonSchemaSerializerBuilder.java   |   3 +-
 .../juneau/json/JsonSchemaSerializerSession.java   |   5 +-
 .../org/apache/juneau/json/JsonSerializer.java     |  28 +-
 .../apache/juneau/json/JsonSerializerSession.java  |   5 +-
 .../org/apache/juneau/json/SimpleJsonParser.java   |   5 +-
 .../apache/juneau/json/SimpleJsonSerializer.java   |   5 +-
 .../jsonschema/JsonSchemaBeanPropertyMeta.java     |   9 +-
 .../juneau/jsonschema/JsonSchemaClassMeta.java     |   5 +-
 .../juneau/jsonschema/JsonSchemaGenerator.java     |  33 +-
 .../jsonschema/JsonSchemaGeneratorBuilder.java     |   7 +-
 .../jsonschema/JsonSchemaGeneratorSession.java     |  35 +-
 .../org/apache/juneau/jsonschema/SchemaUtils.java  | 175 +++--
 .../jsonschema/annotation/JsonSchemaConfig.java    |   3 +-
 .../annotation/JsonSchemaConfigApply.java          |   2 +-
 .../org/apache/juneau/msgpack/MsgPackParser.java   |   5 +-
 .../juneau/msgpack/MsgPackParserSession.java       |  23 +-
 .../apache/juneau/msgpack/MsgPackSerializer.java   |   7 +-
 .../juneau/msgpack/MsgPackSerializerSession.java   |   7 +-
 .../java/org/apache/juneau/oapi/OpenApiParser.java |   5 +-
 .../apache/juneau/oapi/OpenApiParserSession.java   |  17 +-
 .../org/apache/juneau/oapi/OpenApiSerializer.java  |   5 +-
 .../juneau/oapi/OpenApiSerializerSession.java      |   9 +-
 .../apache/juneau/parser/InputStreamParser.java    |   7 +-
 .../juneau/parser/InputStreamParserSession.java    |   5 +-
 .../org/apache/juneau/parser/ParseException.java   |   3 +-
 .../main/java/org/apache/juneau/parser/Parser.java |  29 +-
 .../org/apache/juneau/parser/ParserSession.java    |  33 +-
 .../apache/juneau/parser/ParserSessionArgs.java    |  13 +-
 .../org/apache/juneau/parser/ReaderParser.java     |   9 +-
 .../apache/juneau/parser/ReaderParserSession.java  |   9 +-
 .../apache/juneau/plaintext/PlainTextParser.java   |   7 +-
 .../juneau/plaintext/PlainTextParserSession.java   |   5 +-
 .../juneau/plaintext/PlainTextSerializer.java      |   5 +-
 .../plaintext/PlainTextSerializerSession.java      |   5 +-
 .../org/apache/juneau/reflect/AnnotationInfo.java  |   9 +-
 .../juneau/serializer/OutputStreamSerializer.java  |   7 +-
 .../serializer/OutputStreamSerializerSession.java  |   5 +-
 .../org/apache/juneau/serializer/Serializer.java   |  29 +-
 .../juneau/serializer/SerializerSession.java       |   7 +-
 .../juneau/serializer/SerializerSessionArgs.java   |  13 +-
 .../apache/juneau/serializer/WriterSerializer.java |  15 +-
 .../juneau/serializer/WriterSerializerSession.java |   5 +-
 .../org/apache/juneau/soap/SoapXmlSerializer.java  |   7 +-
 .../juneau/soap/SoapXmlSerializerSession.java      |   6 +-
 ...{ResolvingObjectMap.java => ResolvingOMap.java} |   8 +-
 .../org/apache/juneau/transform/AutoListSwap.java  |  12 +-
 .../org/apache/juneau/transform/AutoMapSwap.java   |  12 +-
 .../java/org/apache/juneau/transform/MapSwap.java  |  15 +-
 .../apache/juneau/transforms/CalendarMapSwap.java  |   8 +-
 .../org/apache/juneau/transforms/DateMapSwap.java  |   4 +-
 .../main/java/org/apache/juneau/uon/UonParser.java |   9 +-
 .../org/apache/juneau/uon/UonParserSession.java    |  29 +-
 .../java/org/apache/juneau/uon/UonSerializer.java  |  22 +-
 .../apache/juneau/uon/UonSerializerSession.java    |   5 +-
 .../juneau/urlencoding/UrlEncodingParser.java      |   7 +-
 .../urlencoding/UrlEncodingParserSession.java      |  19 +-
 .../juneau/urlencoding/UrlEncodingSerializer.java  |   9 +-
 .../urlencoding/UrlEncodingSerializerSession.java  |   5 +-
 .../java/org/apache/juneau/utils/BeanDiff.java     |  10 +-
 .../java/org/apache/juneau/utils/ManifestFile.java |   6 +-
 .../org/apache/juneau/utils/MessageBundle.java     |  10 +-
 .../java/org/apache/juneau/utils/PojoQuery.java    |   8 +-
 .../java/org/apache/juneau/utils/PojoRest.java     |  77 +-
 .../org/apache/juneau/utils/ReflectionMap.java     |  65 +-
 .../org/apache/juneau/xml/XmlDocSerializer.java    |   5 +-
 .../apache/juneau/xml/XmlDocSerializerSession.java |   5 +-
 .../main/java/org/apache/juneau/xml/XmlParser.java |  23 +-
 .../org/apache/juneau/xml/XmlParserBuilder.java    |   3 +-
 .../org/apache/juneau/xml/XmlParserSession.java    |  35 +-
 .../java/org/apache/juneau/xml/XmlSerializer.java  |  19 +-
 .../apache/juneau/xml/XmlSerializerSession.java    |   5 +-
 .../apache/juneau/xml/annotation/XmlConfig.java    |   4 +-
 .../juneau/xmlschema/XmlSchemaDocSerializer.java   |   5 +-
 .../juneau/xmlschema/XmlSchemaSerializer.java      |   5 +-
 .../xmlschema/XmlSchemaSerializerSession.java      |   5 +-
 juneau-doc/docs/ReleaseNotes/8.1.4.html            |   6 +-
 .../Topics/02.juneau-marshall/08.ObjectMap.html    |  54 +-
 .../11.Transforms/01.PojoSwaps.html                |   8 +-
 .../11.Transforms/03.AutoPojoSwaps.html            |   8 +-
 .../11.Transforms/05.OneWayPojoSwaps.html          |   2 +-
 .../16.ParsingIntoGenericModels.html               |  19 +-
 .../17.ReadingContinuousStreams.html               |   4 +-
 .../21.JsonDetails/03.SimplifiedJson.html          |  15 +-
 .../27.OpenApiDetails/03.Parsers.html              |   2 +-
 .../02.EntryTypes/04.Collections.html              |   6 +-
 .../Topics/05.juneau-config/05.SectionMaps.html    |   2 +-
 .../06.RestMethod/06.RequestAttributes.html        |   2 +-
 .../10.HttpPartAnnotations/01.Body.html            |   2 +-
 .../10.HttpPartAnnotations/02.FormData.html        |   2 +-
 juneau-doc/docs/Topics/09.juneau-rest-client.html  |  12 +-
 .../01.RestProxies/08.Request.html                 |   4 +-
 .../11.juneau-microservice-core/04.Manifest.html   |   2 +-
 .../16.juneau-examples-rest/04.ConfigResource.html |  10 +-
 .../Topics/21.Security/01.juneau-marshall.html     |   4 +-
 .../examples/core/json/JsonSimpleExample.java      |   2 +-
 .../juneau/examples/rest/RootResourcesTest.java    |  16 +-
 .../juneau/examples/rest/command/EchoCommand.java  |   2 +-
 .../apache/juneau/microservice/Microservice.java   |   5 +-
 .../microservice/resources/ConfigResource.java     |  20 +-
 .../org/apache/juneau/rest/test/ConfigTest.java    |   4 +-
 .../rest/test/client/CallbackStringsTest.java      |  10 +-
 .../juneau/rest/test/client/ClientFuturesTest.java |   8 +-
 .../microservice/jetty/JettyMicroservice.java      |   7 +-
 .../rest/client2/FormDataAnnotationTest.java       |  21 +-
 .../juneau/rest/client2/HeaderAnnotationTest.java  |  21 +-
 .../juneau/rest/client2/PathAnnotationTest.java    |  13 +-
 .../juneau/rest/client2/QueryAnnotationTest.java   |  21 +-
 .../juneau/rest/client2/RequestAnnotationTest.java |  62 +-
 .../juneau/rest/client2/RestClientBuilderTest.java |  13 +-
 .../org/apache/juneau/rest/client/RestCall.java    |  59 +-
 .../org/apache/juneau/rest/client/RestClient.java  |  38 +-
 .../org/apache/juneau/rest/client2/RestClient.java |  30 +-
 .../juneau/rest/client2/RestClientBuilder.java     |   7 +-
 .../apache/juneau/rest/client2/RestRequest.java    |  56 +-
 .../juneau/rest/client2/RestResponseBody.java      |   9 +-
 .../org/apache/juneau/rest/jaxrs/BaseProvider.java |  14 +-
 .../juneau/rest/BasicRestInfoProviderTest.java     |  12 +-
 .../java/org/apache/juneau/rest/PathsTest.java     |  32 +-
 .../rest/annotation/RestResourceMessagesTest.java  |   8 +-
 .../juneau/rest/annotation/RestResourceTest.java   |   6 +-
 .../rest/annotation2/FormDataAnnotationTest.java   |  42 +-
 .../rest/annotation2/PathAnnotationTest.java       |  12 +-
 .../rest/annotation2/QueryAnnotationTest.java      |  42 +-
 .../juneau/rest/annotation2/RestHookTest.java      |  38 +-
 .../rest/annotation2/RestMethodInheritTest.java    |  33 +-
 .../apache/juneau/rest/headers/HeadersTest.java    |  71 +-
 .../org/apache/juneau/rest/RequestAttributes.java  |   8 +-
 .../java/org/apache/juneau/rest/RequestBody.java   |   5 +-
 .../org/apache/juneau/rest/RequestFormData.java    |   5 +-
 .../org/apache/juneau/rest/RequestHeaders.java     |   3 +-
 .../java/org/apache/juneau/rest/RequestPath.java   |   3 +-
 .../org/apache/juneau/rest/RequestProperties.java  |   2 +-
 .../java/org/apache/juneau/rest/RequestQuery.java  |   5 +-
 .../apache/juneau/rest/RestCallLoggerConfig.java   |   6 +-
 .../org/apache/juneau/rest/RestCallLoggerRule.java |   5 +-
 .../java/org/apache/juneau/rest/RestContext.java   |  70 +-
 .../apache/juneau/rest/RestContextProperties.java  |   4 +-
 .../org/apache/juneau/rest/RestMethodContext.java  |  22 +-
 .../apache/juneau/rest/RestMethodProperties.java   |   6 +-
 .../java/org/apache/juneau/rest/RestResponse.java  |   3 +-
 .../org/apache/juneau/rest/StaticFileMapping.java  |   6 +-
 .../org/apache/juneau/rest/SwaggerGenerator.java   | 820 +++++++++++----------
 .../org/apache/juneau/rest/annotation/Attr.java    |   2 +-
 .../juneau/rest/annotation/RestConfigApply.java    |   9 +-
 .../rest/annotation/RestMethodConfigApply.java     |   9 +-
 .../rest/annotation/RestResourceConfigApply.java   |   9 +-
 .../org/apache/juneau/rest/util/UrlPathInfo.java   |   5 +-
 .../juneau/rest/util/UrlPathPatternMatch.java      |   5 +-
 281 files changed, 3363 insertions(+), 2785 deletions(-)

diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
index 5de9f61..88839f3 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Config.java
@@ -1265,32 +1265,72 @@ public final class Config extends Context implements ConfigEventListener, Writab
 	 * @param key The key.
 	 * @return The value, or <jk>null</jk> if the section or key does not exist.
 	 * @throws ParseException Malformed input encountered.
+	 * @deprecated Use {@link #getMap(String)}
 	 */
+	@Deprecated
 	public ObjectMap getObjectMap(String key) throws ParseException {
 		return getObject(key, ObjectMap.class);
 	}
 
 	/**
+	 * Convenience method for returning a config entry as an {@link OMap}.
+	 *
+	 * @param key The key.
+	 * @return The value, or <jk>null</jk> if the section or key does not exist.
+	 * @throws ParseException Malformed input encountered.
+	 */
+	public OMap getMap(String key) throws ParseException {
+		return getObject(key, OMap.class);
+	}
+
+	/**
 	 * Convenience method for returning a config entry as an {@link ObjectMap}.
 	 *
 	 * @param key The key.
 	 * @param def The default value.
 	 * @return The value, or the default value if the section or key does not exist.
 	 * @throws ParseException Malformed input encountered.
+	 * @deprecated Use {@link #getMap(String,OMap)}
 	 */
+	@Deprecated
 	public ObjectMap getObjectMap(String key, ObjectMap def) throws ParseException {
 		return getObjectWithDefault(key, def, ObjectMap.class);
 	}
 
 	/**
+	 * Convenience method for returning a config entry as an {@link OMap}.
+	 *
+	 * @param key The key.
+	 * @param def The default value.
+	 * @return The value, or the default value if the section or key does not exist.
+	 * @throws ParseException Malformed input encountered.
+	 */
+	public OMap getMap(String key, OMap def) throws ParseException {
+		return getObjectWithDefault(key, def, OMap.class);
+	}
+
+	/**
 	 * Convenience method for returning a config entry as an {@link ObjectList}.
 	 *
 	 * @param key The key.
 	 * @return The value, or <jk>null</jk> if the section or key does not exist.
 	 * @throws ParseException Malformed input encountered.
+	 * @deprecated Use {@link #getList(String)}.
 	 */
+	@Deprecated
 	public ObjectList getObjectList(String key) throws ParseException {
-		return getObject(key, ObjectList.class);
+		return getList(key);
+	}
+
+	/**
+	 * Convenience method for returning a config entry as an {@link OList}.
+	 *
+	 * @param key The key.
+	 * @return The value, or <jk>null</jk> if the section or key does not exist.
+	 * @throws ParseException Malformed input encountered.
+	 */
+	public OList getList(String key) throws ParseException {
+		return getObject(key, OList.class);
 	}
 
 	/**
@@ -1300,12 +1340,26 @@ public final class Config extends Context implements ConfigEventListener, Writab
 	 * @param def The default value.
 	 * @return The value, or the default value if the section or key does not exist.
 	 * @throws ParseException Malformed input encountered.
+	 * @deprecated Use {@link #getList(String, OList)}.
 	 */
+	@Deprecated
 	public ObjectList getObjectList(String key, ObjectList def) throws ParseException {
 		return getObjectWithDefault(key, def, ObjectList.class);
 	}
 
 	/**
+	 * Convenience method for returning a config entry as an {@link OList}.
+	 *
+	 * @param key The key.
+	 * @param def The default value.
+	 * @return The value, or the default value if the section or key does not exist.
+	 * @throws ParseException Malformed input encountered.
+	 */
+	public OList getList(String key, OList def) throws ParseException {
+		return getObjectWithDefault(key, def, OList.class);
+	}
+
+	/**
 	 * Returns the keys of the entries in the specified section.
 	 *
 	 * @param section
@@ -1438,16 +1492,16 @@ public final class Config extends Context implements ConfigEventListener, Writab
 	}
 
 	/**
-	 * Returns a section of this config copied into an {@link ObjectMap}.
+	 * Returns a section of this config copied into an {@link OMap}.
 	 *
 	 * @param section
 	 * 	The section name to write from.
 	 * 	<br>If empty, refers to the default section.
 	 * 	<br>Must not be <jk>null</jk>.
-	 * @return A new {@link ObjectMap}, or <jk>null</jk> if the section doesn't exist.
+	 * @return A new {@link OMap}, or <jk>null</jk> if the section doesn't exist.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public ObjectMap getSectionAsMap(String section) throws ParseException {
+	public OMap getSectionAsMap(String section) throws ParseException {
 		section = section(section);
 
 		if (! configMap.hasSection(section))
@@ -1455,7 +1509,7 @@ public final class Config extends Context implements ConfigEventListener, Writab
 
 		Set<String> keys = configMap.getKeys(section);
 
-		ObjectMap om = new ObjectMap();
+		OMap om = new OMap();
 		for (String k : keys)
 			om.put(k, getObject(section + '/' + k, Object.class));
 		return om;
@@ -1809,7 +1863,7 @@ public final class Config extends Context implements ConfigEventListener, Writab
 	 * @return A copy of this config as a map of maps.
 	 */
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return configMap.asMap();
 	}
 
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
index 676fdaa..105fe3f 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
@@ -651,8 +651,8 @@ public class ConfigMap implements ConfigStoreListener {
 	 *
 	 * @return A copy of this config as a map of maps.
 	 */
-	public ObjectMap asMap() {
-		ObjectMap m = new ObjectMap();
+	public OMap asMap() {
+		OMap m = new OMap();
 		readLock();
 		try {
 			for (Import i : imports)
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
index 987b479..6f73e7f 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
@@ -19,6 +19,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 
 /**
@@ -139,9 +140,9 @@ public class ConfigClasspathStore extends ConfigStore {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("ConfigClasspathStore", new DefaultFilteringObjectMap()
+			.a("ConfigClasspathStore", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
index ebd7277..6d944f1 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
@@ -25,6 +25,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 
 /**
@@ -502,12 +503,12 @@ public class ConfigFileStore extends ConfigStore {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("ConfigFileStore", new DefaultFilteringObjectMap()
-				.append("charset", charset)
-				.append("extensions", extensions)
-				.append("updateOnWrite", updateOnWrite)
+			.a("ConfigFileStore", new DefaultFilteringOMap()
+				.a("charset", charset)
+				.a("extensions", extensions)
+				.a("updateOnWrite", updateOnWrite)
 			);
 	}
 }
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
index ec6601c..c45a7b9 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
@@ -19,6 +19,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 
 /**
  * Filesystem-based storage location for configuration files.
@@ -122,9 +123,9 @@ public class ConfigMemoryStore extends ConfigStore {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("ConfigMemoryStore", new DefaultFilteringObjectMap()
+			.a("ConfigMemoryStore", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
index 29f177e..068d6fe 100644
--- a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
+++ b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigStore.java
@@ -18,6 +18,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.config.internal.*;
 
 /**
@@ -212,9 +213,9 @@ public abstract class ConfigStore extends Context implements Closeable {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("ConfigStore", new DefaultFilteringObjectMap()
+			.a("ConfigStore", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java
index 804d55d..70c3a0c 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotationTest.java
@@ -19,6 +19,7 @@ import java.util.function.*;
 import java.util.stream.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.marshall.*;
@@ -51,8 +52,8 @@ public class BeanConfigAnnotationTest {
 					.collect(Collectors.joining(","));
 			if (t.getClass().isArray())
 				return apply(ArrayUtils.toList(t, Object.class));
-			if (t instanceof ObjectMap)
-				return ((ObjectMap)t).toString();
+			if (t instanceof OMap)
+				return ((OMap)t).toString();
 			if (t instanceof Map)
 				return ((Map<?,?>)t)
 					.entrySet()
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
index ddd8b61..8bd9df0 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
@@ -349,15 +349,15 @@ public class BeanConfigTest {
 		assertEquals("xxx", file.getName());
 
 		// List of ints to array
-		o = new ObjectList(1, 2, 3);
+		o = OList.of(1, 2, 3);
 		assertEquals(1, session.convertToType(o, int[].class)[0]);
 
 		// List of beans to array
-		o = new ObjectList(new ReadOnlyPerson("x", 123));
+		o = OList.of(new ReadOnlyPerson("x", 123));
 		assertEquals("x", session.convertToType(o, ReadOnlyPerson[].class)[0].getName());
 
 		// Multi-dimensional array of beans.
-		o = new ObjectList().append(new ObjectList(new ReadOnlyPerson("x", 123)));
+		o = OList.of(OList.of(new ReadOnlyPerson("x", 123)));
 		assertEquals("x", session.convertToType(o, ReadOnlyPerson[][].class)[0][0].getName());
 
 		// Array of strings to array of ints
@@ -401,7 +401,7 @@ public class BeanConfigTest {
 		assertEquals("{name:'x',age:123}", session.convertToType(o, String.class));
 
 		// List of Maps to array of beans.
-		o = new ObjectList(new ObjectMap("{name:'x',age:1}"), new ObjectMap("{name:'y',age:2}"));
+		o = OList.of(OMap.ofJson("{name:'x',age:1}"), OMap.ofJson("{name:'y',age:2}"));
 		assertEquals(1, session.convertToType(o, ReadOnlyPerson[].class)[0].getAge());
 	}
 
@@ -441,7 +441,7 @@ public class BeanConfigTest {
 		assertEquals("{name:'x',age:123}", session.convertToType(o, String.class));
 
 		// List of Maps to array of beans.
-		o = new ObjectList(new ObjectMap("{name:'x',age:1}"), new ObjectMap("{name:'y',age:2}"));
+		o = OList.of(OMap.ofJson("{name:'x',age:1}"), OMap.ofJson("{name:'y',age:2}"));
 		assertEquals(1, session.convertToType(o, ReadOnlyPerson2[].class)[0].getAge());
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java
index fc74820..707dd43 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java
@@ -253,45 +253,45 @@ public class BeanMapTest {
 		Map m = session.toBeanMap(t);
 
 		// Non-initialized list fields.
-		m.put("l1", new ObjectList("[1,2,3]"));
-		m.put("al1", new ObjectList("[1,2,3]"));
-		m.put("ll1", new ObjectList("[1,2,3]"));
-		m.put("c1", new ObjectList("[1,2,3]"));
-		m.put("jl1", new ObjectList("[1,2,3]"));
+		m.put("l1", OList.ofJson("[1,2,3]"));
+		m.put("al1", OList.ofJson("[1,2,3]"));
+		m.put("ll1", OList.ofJson("[1,2,3]"));
+		m.put("c1", OList.ofJson("[1,2,3]"));
+		m.put("jl1", OList.ofJson("[1,2,3]"));
 
-		// al1 should be initialized with an ArrayList, since it's not a superclass of ObjectList.
+		// al1 should be initialized with an ArrayList, since it's not a superclass of OList.
 		assertEquals(ArrayList.class.getName(), m.get("al1").getClass().getName());
 
-		// The rest are proper superclasses of ObjectList.
-		assertEquals(ObjectList.class.getName(), m.get("l1").getClass().getName());
+		// The rest are proper superclasses of OList.
+		assertEquals(OList.class.getName(), m.get("l1").getClass().getName());
 		assertEquals(LinkedList.class.getName(), m.get("ll1").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("c1").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("jl1").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("c1").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("jl1").getClass().getName());
 
 		// Non-initialized map fields.
-		m.put("m1", new ObjectMap("{foo:'bar'}"));
-		m.put("hm1", new ObjectMap("{foo:'bar'}"));
-		m.put("jm1", new ObjectMap("{foo:'bar'}"));
-		m.put("tm1", new ObjectMap("{foo:'bar'}"));
+		m.put("m1", OMap.ofJson("{foo:'bar'}"));
+		m.put("hm1", OMap.ofJson("{foo:'bar'}"));
+		m.put("jm1", OMap.ofJson("{foo:'bar'}"));
+		m.put("tm1", OMap.ofJson("{foo:'bar'}"));
 
-		// tm1 should be initialized with TreeMap, since it's not a superclass of ObjectMap.
+		// tm1 should be initialized with TreeMap, since it's not a superclass of OMap.
 		assertEquals(TreeMap.class.getName(), m.get("tm1").getClass().getName());
 
-		// The rest are propert superclasses of ObjectMap
-		assertEquals(ObjectMap.class.getName(), m.get("m1").getClass().getName());
+		// The rest are propert superclasses of OMap
+		assertEquals(OMap.class.getName(), m.get("m1").getClass().getName());
 		assertEquals(HashMap.class.getName(), m.get("hm1").getClass().getName());
-		assertEquals(ObjectMap.class.getName(), m.get("jm1").getClass().getName());
+		assertEquals(OMap.class.getName(), m.get("jm1").getClass().getName());
 
 		// Initialized fields should reuse existing field value.
-		m.put("l2", new ObjectList("[1,2,3]"));
-		m.put("al2", new ObjectList("[1,2,3]"));
-		m.put("ll2", new ObjectList("[1,2,3]"));
-		m.put("c2", new ObjectList("[1,2,3]"));
-		m.put("m2", new ObjectMap("{foo:'bar'}"));
-		m.put("hm2", new ObjectMap("{foo:'bar'}"));
-		m.put("tm2", new ObjectMap("{foo:'bar'}"));
-		m.put("jm2", new ObjectMap("{foo:'bar'}"));
-		m.put("jl2", new ObjectList("[1,2,3]"));
+		m.put("l2", OList.ofJson("[1,2,3]"));
+		m.put("al2", OList.ofJson("[1,2,3]"));
+		m.put("ll2", OList.ofJson("[1,2,3]"));
+		m.put("c2", OList.ofJson("[1,2,3]"));
+		m.put("m2", OMap.ofJson("{foo:'bar'}"));
+		m.put("hm2", OMap.ofJson("{foo:'bar'}"));
+		m.put("tm2", OMap.ofJson("{foo:'bar'}"));
+		m.put("jm2", OMap.ofJson("{foo:'bar'}"));
+		m.put("jl2", OList.ofJson("[1,2,3]"));
 
 		assertEquals(ArrayList.class.getName(), m.get("l2").getClass().getName());
 		assertEquals(ArrayList.class.getName(), m.get("al2").getClass().getName());
@@ -300,8 +300,8 @@ public class BeanMapTest {
 		assertEquals(HashMap.class.getName(), m.get("m2").getClass().getName());
 		assertEquals(HashMap.class.getName(), m.get("hm2").getClass().getName());
 		assertEquals(TreeMap.class.getName(), m.get("tm2").getClass().getName());
-		assertEquals(ObjectMap.class.getName(), m.get("jm2").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("jl2").getClass().getName());
+		assertEquals(OMap.class.getName(), m.get("jm2").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("jl2").getClass().getName());
 	}
 
 	public static class C {
@@ -311,9 +311,9 @@ public class BeanMapTest {
 		public Collection c1;
 		public Map m1;
 		public HashMap hm1;
-		public ObjectMap jm1;
+		public OMap jm1;
 		public TreeMap tm1;
-		public ObjectList jl1;
+		public OList jl1;
 		public List l2 = new ArrayList();
 		public ArrayList al2 = new ArrayList();
 		public LinkedList ll2 = new LinkedList();
@@ -321,8 +321,8 @@ public class BeanMapTest {
 		public Map m2 = new HashMap();
 		public HashMap hm2 = new HashMap();
 		public TreeMap tm2 = new TreeMap();
-		public ObjectMap jm2 = new ObjectMap();
-		public ObjectList jl2 = new ObjectList();
+		public OMap jm2 = new OMap();
+		public OList jl2 = new OList();
 	}
 
 	//====================================================================================================
@@ -334,55 +334,55 @@ public class BeanMapTest {
 		Map m = session.toBeanMap(t);
 
 		// Non-initialized list fields.
-		m.put("l1", new ObjectList("[1,2,3]"));
-		m.put("al1", new ObjectList("[1,2,3]"));
-		m.put("ll1", new ObjectList("[1,2,3]"));
-		m.put("c1", new ObjectList("[1,2,3]"));
-		m.put("jl1", new ObjectList("[1,2,3]"));
+		m.put("l1", OList.ofJson("[1,2,3]"));
+		m.put("al1", OList.ofJson("[1,2,3]"));
+		m.put("ll1", OList.ofJson("[1,2,3]"));
+		m.put("c1", OList.ofJson("[1,2,3]"));
+		m.put("jl1", OList.ofJson("[1,2,3]"));
 
-		// al1 should be initialized with an ArrayList, since it's not a superclass of ObjectList.
+		// al1 should be initialized with an ArrayList, since it's not a superclass of OList.
 		assertEquals(ArrayList.class.getName(), m.get("al1").getClass().getName());
 
-		// The rest are proper superclasses of ObjectList.
-		assertEquals(ObjectList.class.getName(), m.get("l1").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("ll1").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("c1").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("jl1").getClass().getName());
+		// The rest are proper superclasses of OList.
+		assertEquals(OList.class.getName(), m.get("l1").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("ll1").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("c1").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("jl1").getClass().getName());
 
 		// Non-initialized map fields.
-		m.put("m1", new ObjectMap("{foo:'bar'}"));
-		m.put("hm1", new ObjectMap("{foo:'bar'}"));
-		m.put("jm1", new ObjectMap("{foo:'bar'}"));
-		m.put("tm1", new ObjectMap("{foo:'bar'}"));
+		m.put("m1", OMap.ofJson("{foo:'bar'}"));
+		m.put("hm1", OMap.ofJson("{foo:'bar'}"));
+		m.put("jm1", OMap.ofJson("{foo:'bar'}"));
+		m.put("tm1", OMap.ofJson("{foo:'bar'}"));
 
-		// tm1 should be initialized with TreeMap, since it's not a superclass of ObjectMap.
+		// tm1 should be initialized with TreeMap, since it's not a superclass of OMap.
 		assertEquals(TreeMap.class.getName(), m.get("tm1").getClass().getName());
 
-		// The rest are propert superclasses of ObjectMap
-		assertEquals(ObjectMap.class.getName(), m.get("m1").getClass().getName());
-		assertEquals(ObjectMap.class.getName(), m.get("hm1").getClass().getName());
-		assertEquals(ObjectMap.class.getName(), m.get("jm1").getClass().getName());
+		// The rest are propert superclasses of OMap
+		assertEquals(OMap.class.getName(), m.get("m1").getClass().getName());
+		assertEquals(OMap.class.getName(), m.get("hm1").getClass().getName());
+		assertEquals(OMap.class.getName(), m.get("jm1").getClass().getName());
 
 		// Initialized fields should reuse existing field value.
-		m.put("l2", new ObjectList("[1,2,3]"));
-		m.put("al2", new ObjectList("[1,2,3]"));
-		m.put("ll2", new ObjectList("[1,2,3]"));
-		m.put("c2", new ObjectList("[1,2,3]"));
-		m.put("m2", new ObjectMap("{foo:'bar'}"));
-		m.put("hm2", new ObjectMap("{foo:'bar'}"));
-		m.put("tm2", new ObjectMap("{foo:'bar'}"));
-		m.put("jm2", new ObjectMap("{foo:'bar'}"));
-		m.put("jl2", new ObjectList("[1,2,3]"));
-
-		assertEquals(ObjectList.class.getName(), m.get("l2").getClass().getName());
+		m.put("l2", OList.ofJson("[1,2,3]"));
+		m.put("al2", OList.ofJson("[1,2,3]"));
+		m.put("ll2", OList.ofJson("[1,2,3]"));
+		m.put("c2", OList.ofJson("[1,2,3]"));
+		m.put("m2", OMap.ofJson("{foo:'bar'}"));
+		m.put("hm2", OMap.ofJson("{foo:'bar'}"));
+		m.put("tm2", OMap.ofJson("{foo:'bar'}"));
+		m.put("jm2", OMap.ofJson("{foo:'bar'}"));
+		m.put("jl2", OList.ofJson("[1,2,3]"));
+
+		assertEquals(OList.class.getName(), m.get("l2").getClass().getName());
 		assertEquals(ArrayList.class.getName(), m.get("al2").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("ll2").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("c2").getClass().getName());
-		assertEquals(ObjectMap.class.getName(), m.get("m2").getClass().getName());
-		assertEquals(ObjectMap.class.getName(), m.get("hm2").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("ll2").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("c2").getClass().getName());
+		assertEquals(OMap.class.getName(), m.get("m2").getClass().getName());
+		assertEquals(OMap.class.getName(), m.get("hm2").getClass().getName());
 		assertEquals(TreeMap.class.getName(), m.get("tm2").getClass().getName());
-		assertEquals(ObjectMap.class.getName(), m.get("jm2").getClass().getName());
-		assertEquals(ObjectList.class.getName(), m.get("jl2").getClass().getName());
+		assertEquals(OMap.class.getName(), m.get("jm2").getClass().getName());
+		assertEquals(OList.class.getName(), m.get("jl2").getClass().getName());
 	}
 
 	public static class D {
@@ -410,17 +410,17 @@ public class BeanMapTest {
 		public HashMap getHm1() {return hm1;}
 		public void setHm1(HashMap hm1) {this.hm1 = hm1;}
 
-		private ObjectMap jm1;
-		public ObjectMap getJm1() {return jm1;}
-		public void setJm1(ObjectMap jm1) {this.jm1 = jm1;}
+		private OMap jm1;
+		public OMap getJm1() {return jm1;}
+		public void setJm1(OMap jm1) {this.jm1 = jm1;}
 
 		private TreeMap tm1;
 		public TreeMap getTm1() {return tm1;}
 		public void setTm1(TreeMap tm1) {this.tm1 = tm1;}
 
-		private ObjectList jl1;
-		public ObjectList getJl1() {return jl1;}
-		public void setJl1(ObjectList jl1) {this.jl1 = jl1;}
+		private OList jl1;
+		public OList getJl1() {return jl1;}
+		public void setJl1(OList jl1) {this.jl1 = jl1;}
 
 		private List l2 = new ArrayList();
 		public List getL2() {return l2;}
@@ -450,13 +450,13 @@ public class BeanMapTest {
 		public TreeMap getTm2() {return tm2;}
 		public void setTm2(TreeMap tm2) {this.tm2 = tm2;}
 
-		private ObjectMap jm2 = new ObjectMap();
-		public ObjectMap getJm2() {return jm2;}
-		public void setJm2(ObjectMap jm2) {this.jm2 = jm2;}
+		private OMap jm2 = new OMap();
+		public OMap getJm2() {return jm2;}
+		public void setJm2(OMap jm2) {this.jm2 = jm2;}
 
-		private ObjectList jl2 = new ObjectList();
-		public ObjectList getJl2() {return jl2;}
-		public void setJl2(ObjectList jl2) {this.jl2 = jl2;}
+		private OList jl2 = new OList();
+		public OList getJl2() {return jl2;}
+		public void setJl2(OList jl2) {this.jl2 = jl2;}
 	}
 
 	//====================================================================================================
@@ -466,7 +466,7 @@ public class BeanMapTest {
 	public void testArrayProperties() throws Exception {
 		D1 t = new D1();
 		Map m = session.toBeanMap(t);
-		m.put("b", new ObjectMap("{s:'foo'}"));
+		m.put("b", OMap.ofJson("{s:'foo'}"));
 		assertNotNull(t.b);
 		assertEquals("foo", t.b.s);
 
@@ -480,22 +480,22 @@ public class BeanMapTest {
 		assertEquals("default", t.b.s);
 
 		JsonParser p = JsonParser.create().dictionary(D2.class).build();
-		m.put("lb1", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
-		assertEquals(ObjectList.class.getName(), t.lb1.getClass().getName());
+		m.put("lb1", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
+		assertEquals(OList.class.getName(), t.lb1.getClass().getName());
 		assertEquals(D2.class.getName(), t.lb1.get(0).getClass().getName());
 		assertEquals("foobar", (t.lb1.get(0)).s);
 
-		m.put("lb2", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
+		m.put("lb2", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
 		assertEquals(ArrayList.class.getName(), t.lb2.getClass().getName());
 		assertEquals(D2.class.getName(), t.lb2.get(0).getClass().getName());
 		assertEquals("foobar", (t.lb2.get(0)).s);
 
-		m.put("ab1", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
+		m.put("ab1", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
 		assertEquals("[L"+D2.class.getName()+";", t.ab1.getClass().getName());
 		assertEquals(D2.class.getName(), t.ab1[0].getClass().getName());
 		assertEquals("foobar", t.ab1[0].s);
 
-		m.put("ab2", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
+		m.put("ab2", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
 		assertEquals("[L"+D2.class.getName()+";", t.ab2.getClass().getName());
 		assertEquals(D2.class.getName(), t.ab2[0].getClass().getName());
 		assertEquals("foobar", t.ab2[0].s);
@@ -518,7 +518,7 @@ public class BeanMapTest {
 	public void testArrayProperties_usingConfig() throws Exception {
 		D1c t = new D1c();
 		Map m = session.toBeanMap(t);
-		m.put("b", new ObjectMap("{s:'foo'}"));
+		m.put("b", OMap.ofJson("{s:'foo'}"));
 		assertNotNull(t.b);
 		assertEquals("foo", t.b.s);
 
@@ -532,22 +532,22 @@ public class BeanMapTest {
 		assertEquals("default", t.b.s);
 
 		JsonParser p = JsonParser.create().dictionary(D2c.class).applyAnnotations(D1c.class).build();
-		m.put("lb1", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
-		assertEquals(ObjectList.class.getName(), t.lb1.getClass().getName());
+		m.put("lb1", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
+		assertEquals(OList.class.getName(), t.lb1.getClass().getName());
 		assertEquals(D2c.class.getName(), t.lb1.get(0).getClass().getName());
 		assertEquals("foobar", (t.lb1.get(0)).s);
 
-		m.put("lb2", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
+		m.put("lb2", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
 		assertEquals(ArrayList.class.getName(), t.lb2.getClass().getName());
 		assertEquals(D2c.class.getName(), t.lb2.get(0).getClass().getName());
 		assertEquals("foobar", (t.lb2.get(0)).s);
 
-		m.put("ab1", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
+		m.put("ab1", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
 		assertEquals("[L"+D2c.class.getName()+";", t.ab1.getClass().getName());
 		assertEquals(D2c.class.getName(), t.ab1[0].getClass().getName());
 		assertEquals("foobar", t.ab1[0].s);
 
-		m.put("ab2", new ObjectList("[{_type:'D2',s:'foobar'}]", p));
+		m.put("ab2", OList.ofText("[{_type:'D2',s:'foobar'}]", p));
 		assertEquals("[L"+D2c.class.getName()+";", t.ab2.getClass().getName());
 		assertEquals(D2c.class.getName(), t.ab2[0].getClass().getName());
 		assertEquals("foobar", t.ab2[0].s);
@@ -571,19 +571,19 @@ public class BeanMapTest {
 	}
 
 	//====================================================================================================
-	// testArrayPropertiesInObjectList
+	// testArrayPropertiesInOList
 	//====================================================================================================
 	@Test
-	public void testArrayPropertiesInObjectList() throws Exception {
+	public void testArrayPropertiesInOList() throws Exception {
 		E t = new E();
 		Map m = session.toBeanMap(t);
-		m.put("s", new ObjectList("['foo']"));
-		m.put("s2", new ObjectList("[['foo']]"));
-		m.put("i", new ObjectList("[1,2,3]"));
-		m.put("i2", new ObjectList("[[1,2,3],[4,5,6]]"));
+		m.put("s", OList.ofJson("['foo']"));
+		m.put("s2", OList.ofJson("[['foo']]"));
+		m.put("i", OList.ofJson("[1,2,3]"));
+		m.put("i2", OList.ofJson("[[1,2,3],[4,5,6]]"));
 		assertEquals("{s:['foo'],s2:[['foo']],i:[1,2,3],i2:[[1,2,3],[4,5,6]]}", SimpleJsonSerializer.DEFAULT.serialize(t));
-		m.put("i", new ObjectList("[null,null,null]"));
-		m.put("i2", new ObjectList("[[null,null,null],[null,null,null]]"));
+		m.put("i", OList.ofJson("[null,null,null]"));
+		m.put("i2", OList.ofJson("[[null,null,null],[null,null,null]]"));
 		assertEquals("{s:['foo'],s2:[['foo']],i:[0,0,0],i2:[[0,0,0],[0,0,0]]}", SimpleJsonSerializer.DEFAULT.serialize(t));
 	}
 
@@ -636,7 +636,7 @@ public class BeanMapTest {
 		assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("l2")).get(0).getClass().getName());
 
 		m.put("l3", "[{a:'a',i:1}]");
-		assertEquals("org.apache.juneau.ObjectList", m.get("l3").getClass().getName());
+		assertEquals("org.apache.juneau.collections.OList", m.get("l3").getClass().getName());
 		assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("l3")).get(0).getClass().getName());
 
 		m.put("l4", "[{a:'a',i:1}]");
@@ -655,7 +655,7 @@ public class BeanMapTest {
 		assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("m2")).get(0).getClass().getName());
 
 		m.put("m3", "[{a:'a',i:1}]");
-		assertEquals("org.apache.juneau.ObjectList", m.get("m3").getClass().getName());
+		assertEquals("org.apache.juneau.collections.OList", m.get("m3").getClass().getName());
 		assertEquals("org.apache.juneau.BeanMapTest$G", ((List)m.get("m3")).get(0).getClass().getName());
 
 		m.put("m4", "[{a:'a',i:1}]");
@@ -1229,7 +1229,7 @@ public class BeanMapTest {
 	public void testCastWithNormalBean() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "R2");
 		m.put("f1", 1);
 		m.put("f2", "2");
@@ -1246,11 +1246,11 @@ public class BeanMapTest {
 		assertEquals(2, t.f2);
 
 		// Without _type
-		m = new ObjectMap(session);
+		m = new OMap(session);
 		m.put("f1", 1);
 		m.put("f2", "2");
 
-		m = (ObjectMap)m.cast(Object.class);
+		m = (OMap)m.cast(Object.class);
 		assertEquals(1, t.f1);
 		assertEquals(2, t.f2);
 
@@ -1279,9 +1279,9 @@ public class BeanMapTest {
 	public void testCastWithNestedBean() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "S");
-		m.put("f1", new ObjectMap(session).append("_type", "R1").append("f1", 1));
+		m.put("f1", new OMap(session).a("_type", "R1").a("f1", 1));
 
 		S t = (S)m.cast(Object.class);
 		assertEquals(1, t.f1.f1);
@@ -1293,10 +1293,10 @@ public class BeanMapTest {
 		assertEquals(1, t.f1.f1);
 
 		// Without _type
-		m = new ObjectMap(session);
-		m.put("f1", new ObjectMap(session).append("_type", R1.class.getName()).append("f1", 1));
+		m = new OMap(session);
+		m.put("f1", new OMap(session).a("_type", R1.class.getName()).a("f1", 1));
 
-		m = (ObjectMap)m.cast(Object.class);
+		m = (OMap)m.cast(Object.class);
 		assertEquals(1, t.f1.f1);
 
 		t = m.cast(S.class);
@@ -1318,7 +1318,7 @@ public class BeanMapTest {
 		Map m2;
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "TreeMap");
 		m.put("1", "ONE");
 
@@ -1356,15 +1356,15 @@ public class BeanMapTest {
 		assertEquals(TEnum.ONE, m2.get(1));
 
 		// Without _type
-		m = new ObjectMap();
+		m = new OMap();
 		m.put("1", "ONE");
 
-		m2 = (ObjectMap)m.cast(Object.class);
-		assertTrue(m2 instanceof ObjectMap);
+		m2 = (OMap)m.cast(Object.class);
+		assertTrue(m2 instanceof OMap);
 		assertEquals("ONE", m2.get("1"));
 
 		m2 = m.cast(Map.class);
-		assertTrue(m2 instanceof ObjectMap);
+		assertTrue(m2 instanceof OMap);
 		assertEquals("ONE", m2.get("1"));
 
 		m2 = m.cast(bc.getClassMeta(TreeMap.class));
@@ -1397,9 +1397,9 @@ public class BeanMapTest {
 	public void testCastToLinkedList() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "LinkedList");
-		m.put("items", new ObjectList().append("1").append("2"));
+		m.put("items", OList.of("1","2"));
 
 		List l = (List)m.cast(Object.class);
 		assertTrue(l instanceof LinkedList);
@@ -1418,11 +1418,11 @@ public class BeanMapTest {
 		assertEquals("1", l.get(0));
 
 		// Without _type
-		m = new ObjectMap();
-		m.put("items", new ObjectList().append("1").append("2"));
+		m = new OMap();
+		m.put("items", OList.of("1","2"));
 
 		l = m.cast(List.class);
-		assertTrue(l instanceof ObjectList);
+		assertTrue(l instanceof OList);
 		assertEquals("1", l.get(0));
 
 		l = m.cast(LinkedList.class);
@@ -1430,7 +1430,7 @@ public class BeanMapTest {
 		assertEquals("1", l.get(0));
 
 		l = m.cast(bc.getClassMeta(List.class));
-		assertTrue(l instanceof ObjectList);
+		assertTrue(l instanceof OList);
 		assertEquals("1", l.get(0));
 
 		l = m.cast(bc.getClassMeta(ArrayList.class));
@@ -1450,9 +1450,9 @@ public class BeanMapTest {
 	public void testToLinkedListInteger() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "LinkedListOfInts");
-		m.put("items", new ObjectList().append("1").append("2"));
+		m.put("items", OList.of("1","2"));
 
 		List l = (List)m.cast(Object.class);
 		assertTrue(l instanceof LinkedList);
@@ -1480,11 +1480,11 @@ public class BeanMapTest {
 		assertEquals("1", l.get(0));
 
 		// Without _type
-		m = new ObjectMap();
-		m.put("items", new ObjectList().append("1").append("2"));
+		m = new OMap();
+		m.put("items", OList.of("1", "2"));
 
 		l = m.cast(List.class);
-		assertTrue(l instanceof ObjectList);
+		assertTrue(l instanceof OList);
 		assertEquals("1", l.get(0));
 
 		l = m.cast(ArrayList.class);
@@ -1492,7 +1492,7 @@ public class BeanMapTest {
 		assertEquals("1", l.get(0));
 
 		l = m.cast(bc.getClassMeta(List.class));
-		assertTrue(l instanceof ObjectList);
+		assertTrue(l instanceof OList);
 		assertEquals("1", l.get(0));
 
 		l = m.cast(bc.getClassMeta(ArrayList.class));
@@ -1500,7 +1500,7 @@ public class BeanMapTest {
 		assertEquals("1", l.get(0));
 
 		l = (List)m.cast(bc.getClassMeta(List.class, Integer.class));
-		assertTrue(l instanceof ObjectList);
+		assertTrue(l instanceof OList);
 		assertTrue(l.get(0) instanceof Integer);
 		assertEquals(1, l.get(0));
 	}
@@ -1512,9 +1512,9 @@ public class BeanMapTest {
 	public void testCastToLinkedListBean() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "LinkedListOfR1");
-		m.put("items", new ObjectList(session).append("{f1:1}"));
+		m.put("items", new OList(session).a("{f1:1}"));
 
 		List l = (List)m.cast(Object.class);
 		assertTrue(l instanceof LinkedList);
@@ -1547,11 +1547,11 @@ public class BeanMapTest {
 		assertEquals(1, ((Map)l.get(0)).get("f1"));
 
 		// Without _type
-		m = new ObjectMap(session);
-		m.put("items", new ObjectList(session).append("{f1:1}"));
+		m = new OMap(session);
+		m.put("items", new OList(session).a("{f1:1}"));
 
 		l = m.cast(List.class);
-		assertTrue(l instanceof ObjectList);
+		assertTrue(l instanceof OList);
 		assertTrue(l.get(0) instanceof String);
 		assertEquals("{f1:1}", l.get(0));
 
@@ -1561,7 +1561,7 @@ public class BeanMapTest {
 		assertEquals("{f1:1}", l.get(0));
 
 		l = m.cast(session.getClassMeta(List.class));
-		assertTrue(l instanceof ObjectList);
+		assertTrue(l instanceof OList);
 		assertTrue(l.get(0) instanceof String);
 		assertEquals("{f1:1}", l.get(0));
 
@@ -1582,7 +1582,8 @@ public class BeanMapTest {
 
 		l = (List)m.cast(session.getClassMeta(List.class, Map.class));
 		assertTrue(l instanceof LinkedList);
-		assertTrue(l.get(0) instanceof ObjectMap);
+		System.err.println(l.get(0).getClass().getName());
+		assertTrue(l.get(0) instanceof OMap);
 		assertEquals(1, ((Map)l.get(0)).get("f1"));
 	}
 
@@ -1593,9 +1594,9 @@ public class BeanMapTest {
 	public void testCastToLinkedListUsingSwap() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "LinkedListOfCalendar");
-		m.put("items", new ObjectList().append("2001-07-04T15:30:45Z"));
+		m.put("items", OList.of("2001-07-04T15:30:45Z"));
 
 		List l = (List)m.cast(Object.class);
 		assertTrue(l instanceof LinkedList);
@@ -1625,8 +1626,8 @@ public class BeanMapTest {
 		assertEquals("2001-07-04T15:30:45Z", l.get(0));
 
 		// Without _type
-		m = new ObjectMap().setBeanSession(session);
-		m.put("items", new ObjectList().append("2001-07-04T15:30:45Z"));
+		m = new OMap().session(session);
+		m.put("items", OList.of("2001-07-04T15:30:45Z"));
 
 		l = m.cast(List.class);
 		assertTrue(l instanceof LinkedList);
@@ -1655,9 +1656,9 @@ public class BeanMapTest {
 	public void testCastToStringArray() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "StringArray");
-		m.put("items", new ObjectList().append("1").append("2"));
+		m.put("items", OList.of("1","2"));
 
 		String[] l = (String[])m.cast(Object.class);
 		assertEquals("1", l[0]);
@@ -1681,8 +1682,8 @@ public class BeanMapTest {
 		assertEquals("1", l2[0].toString());
 
 		// Without _type
-		m = new ObjectMap();
-		m.put("items", new ObjectList().append("1").append("2"));
+		m = new OMap();
+		m.put("items", OList.of("1","2"));
 
 		l = m.cast(String[].class);
 		assertEquals("1", l[0]);
@@ -1701,9 +1702,9 @@ public class BeanMapTest {
 	public void testCastToIntArray() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "IntArray");
-		m.put("items", new ObjectList().append("1").append("2"));
+		m.put("items", OList.of("1","2"));
 
 		int[] l = (int[])m.cast(Object.class);
 		assertEquals(1, l[0]);
@@ -1723,8 +1724,8 @@ public class BeanMapTest {
 		assertEquals(1, l2[0]);
 
 		// Without _type
-		m = new ObjectMap();
-		m.put("items", new ObjectList().append("1").append("2"));
+		m = new OMap();
+		m.put("items", OList.of("1","2"));
 
 		l = m.cast(int[].class);
 		assertEquals(1, l[0]);
@@ -1746,9 +1747,9 @@ public class BeanMapTest {
 	public void testCastToString2dArray() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "String2dArray");
-		m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2")));
+		m.put("items", OList.of(OList.of("1"),OList.of("2")));
 
 		String[][] l = (String[][])m.cast(Object.class);
 		assertEquals("1", l[0][0]);
@@ -1761,8 +1762,8 @@ public class BeanMapTest {
 		assertEquals("2", l[1][0]);
 
 		// Without _type
-		m = new ObjectMap();
-		m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2")));
+		m = new OMap();
+		m.put("items", OList.of(OList.of("1"),OList.of("2")));
 
 		l = m.cast(String[][].class);
 		assertEquals("1", l[0][0]);
@@ -1778,9 +1779,9 @@ public class BeanMapTest {
 	public void testCastToInt2dArray() throws Exception {
 
 		// With _type
-		ObjectMap m = new ObjectMap(session);
+		OMap m = new OMap(session);
 		m.put("_type", "Int2dArray");
-		m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2")));
+		m.put("items", OList.of(OList.of("1"),OList.of("2")));
 
 		int[][] l = (int[][])m.cast(Object.class);
 		assertEquals(1, l[0][0]);
@@ -1793,8 +1794,8 @@ public class BeanMapTest {
 		assertEquals(2, l[1][0]);
 
 		// Without _type
-		m = new ObjectMap();
-		m.put("items", new ObjectList().append(new ObjectList().append("1")).append(new ObjectList().append("2")));
+		m = new OMap();
+		m.put("items", OList.of(OList.of("1"),OList.of("2")));
 
 		l = m.cast(int[][].class);
 		assertEquals(1, l[0][0]);
@@ -2050,8 +2051,8 @@ public class BeanMapTest {
 	public void testSettingCollectionPropertyMultipleTimes() throws Exception {
 
 		BeanMap m = BeanContext.DEFAULT.createSession().newBeanMap(Y.class);
-		m.put("f1", new ObjectList().append("a"));
-		m.put("f1",  new ObjectList().append("b"));
+		m.put("f1", OList.of("a"));
+		m.put("f1",  OList.of("b"));
 		assertEquals("{f1=[b]}", m.toString());
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ContextCacheTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ContextCacheTest.java
index 9d770a4..bd0a900 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ContextCacheTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ContextCacheTest.java
@@ -16,6 +16,7 @@ import static org.apache.juneau.testutils.TestUtils.*;
 import static org.junit.Assert.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.junit.*;
 
 /**
@@ -143,8 +144,8 @@ public class ContextCacheTest {
 		}
 
 		@Override
-		public ObjectMap toMap() {
-			return new ObjectMap().append("f1", f1);
+		public OMap toMap() {
+			return OMap.of("f1", f1);
 		}
 	}
 
@@ -159,8 +160,8 @@ public class ContextCacheTest {
 		}
 
 		@Override
-		public ObjectMap toMap() {
-			return super.toMap().append("f2", f2);
+		public OMap toMap() {
+			return super.toMap().a("f2", f2);
 		}
 	}
 
@@ -173,8 +174,8 @@ public class ContextCacheTest {
 		}
 
 		@Override
-		public ObjectMap toMap() {
-			return super.toMap().append("f3", f3);
+		public OMap toMap() {
+			return super.toMap().a("f3", f3);
 		}
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DataConversionTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DataConversionTest.java
index 97760e3..1a590c7 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DataConversionTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DataConversionTest.java
@@ -16,6 +16,7 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
+import org.apache.juneau.collections.*;
 import org.apache.juneau.testutils.*;
 import org.junit.*;
 
@@ -37,7 +38,7 @@ public class DataConversionTest {
 	//====================================================================================================
 	@Test
 	public void testBasic() throws Exception {
-		ObjectMap m = new ObjectMap();
+		OMap m = new OMap();
 
 		// *** Number ***
 		m.put("x", 123);
@@ -55,16 +56,14 @@ public class DataConversionTest {
 		assertNull(m.getLong("x"));
 		assertNull(m.getBoolean("x"));
 		assertNull(m.getMap("x"));
-		assertNull(m.getObjectMap("x"));
 		assertNull(m.getList("x"));
-		assertNull(m.getObjectList("x"));
 
 		// *** Map ***
 		m.put("x", new HashMap());
 		assertEquals(m.getString("x"), "{}");
 
-		// *** ObjectMap ***
-		m.put("x", new ObjectMap("{foo:123}"));
+		// *** OMap ***
+		m.put("x", OMap.ofJson("{foo:123}"));
 		assertEquals(m.getString("x"), "{foo:123}");
 
 		// *** Collection ***
@@ -73,17 +72,15 @@ public class DataConversionTest {
 		m.put("x", s);
 		assertEquals(m.getString("x"), "[123]");
 
-		// *** ObjectList ***
-		m.put("x", new ObjectList("[123]"));
+		// *** OList ***
+		m.put("x", OList.ofJson("[123]"));
 		assertEquals(m.getString("x"), "[123]");
 		assertEquals(m.getList("x").size(), 1);
-		assertEquals(m.getObjectList("x").size(), 1);
 
 		// *** Array ***
 		m.put("x", new Integer[]{123});
 		assertEquals(m.getString("x"), "[123]");
 		assertEquals(m.getList("x").size(), 1);
-		assertEquals(m.getObjectList("x").size(), 1);
 
 		// *** Enum ***
 		m.put("x", TestEnum.ENUM2);
@@ -91,11 +88,7 @@ public class DataConversionTest {
 		assertFalse(m.getBoolean("x"));
 		try {
 			m.getMap("x");
-			fail("Invalid conversion from Enum to Map");
-		} catch (InvalidDataConversionException e) {}
-		try {
-			m.getObjectMap("x");
-			fail("Invalid conversion from Enum to ObjectMap");
+			fail("Invalid conversion from Enum to OMap");
 		} catch (InvalidDataConversionException e) {}
 
 		// *** Not a bean ***
@@ -112,11 +105,7 @@ public class DataConversionTest {
 		assertFalse(m.getBoolean("x"));
 		try {
 			m.getMap("x");
-			fail("Invalid conversion from NotABean to Map");
-		} catch (InvalidDataConversionException e) {}
-		try {
-			m.getObjectMap("x");
-			fail("Invalid conversion from NotABean to ObjectMap");
+			fail("Invalid conversion from NotABean to OMap");
 		} catch (InvalidDataConversionException e) {}
 
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DynaBeanComboTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DynaBeanComboTest.java
index 3812bcd..25aff7f 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DynaBeanComboTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/DynaBeanComboTest.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.testutils.TestUtils.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transforms.*;
@@ -267,7 +268,7 @@ public class DynaBeanComboTest extends ComboRoundTripTest {
 
 		public BeanWithDynaField init() {
 			this.f1 = 1;
-			this.f2 = new ObjectMap().append("f2a", "a").append("f2b", "b");
+			this.f2 = OMap.of("f2a", "a", "f2b", "b");
 			this.f3 = 3;
 			return this;
 		}
@@ -306,7 +307,7 @@ public class DynaBeanComboTest extends ComboRoundTripTest {
 
 		public BeanWithDynaMethods init() {
 			this.f1 = 1;
-			this.f2 = new ObjectMap().append("f2a", "a").append("f2b", "b");
+			this.f2 = OMap.of("f2a", "a", "f2b", "b");
 			this.f3 = 3;
 			return this;
 		}
@@ -350,7 +351,7 @@ public class DynaBeanComboTest extends ComboRoundTripTest {
 
 		public BeanWithDynaMethodsAndExtraKeys init() {
 			this.f1 = 1;
-			this.f2 = new ObjectMap().append("f2a", "a").append("f2b", "b");
+			this.f2 = OMap.of("f2a", "a", "f2b", "b");
 			this.f3 = 3;
 			return this;
 		}
@@ -382,7 +383,7 @@ public class DynaBeanComboTest extends ComboRoundTripTest {
 
 		public BeanWithDynaGetterOnly init() {
 			this.f1 = 1;
-			this.f2 = new ObjectMap().append("f2a", "a").append("f2b", "b");
+			this.f2 = OMap.of("f2a", "a", "f2b", "b");
 			this.f3 = 3;
 			return this;
 		}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ObjectListTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/OListTest.java
similarity index 85%
rename from juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ObjectListTest.java
rename to juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/OListTest.java
index b460a39..2cd166f 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ObjectListTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/OListTest.java
@@ -18,9 +18,10 @@ import static org.junit.Assert.*;
 import java.io.*;
 import java.util.*;
 
+import org.apache.juneau.collections.*;
 import org.junit.*;
 
-public class ObjectListTest {
+public class OListTest {
 
 	//====================================================================================================
 	// testBasic
@@ -30,17 +31,17 @@ public class ObjectListTest {
 
 		assertEquals(
 			"['A','B','C']",
-			new ObjectList((Object[])new String[]{"A","B","C"}).toString()
+			new OList((Object[])new String[]{"A","B","C"}).toString()
 		);
 
 		assertEquals(
 			"['A','B','C']",
-			new ObjectList("A","B","C").toString()
+			new OList("A","B","C").toString()
 		);
 
 		assertEquals(
 			"['A','B','C']",
-			new ObjectList(Arrays.asList(new String[]{"A","B","C"})).toString()
+			new OList(Arrays.asList(new String[]{"A","B","C"})).toString()
 		);
 	}
 
@@ -50,14 +51,14 @@ public class ObjectListTest {
 	@Test
 	public void testIterateAs() throws Exception {
 
-		// Iterate over a list of ObjectMaps.
-		ObjectList l = new ObjectList("[{foo:'bar'},{baz:123}]");
-		Iterator<ObjectMap> i1 = l.elements(ObjectMap.class).iterator();
+		// Iterate over a list of OMaps.
+		OList l = new OList("[{foo:'bar'},{baz:123}]");
+		Iterator<OMap> i1 = l.elements(OMap.class).iterator();
 		assertEquals("bar", i1.next().getString("foo"));
 		assertEquals(123, (int)i1.next().getInt("baz"));
 
 		// Iterate over a list of ints.
-		l = new ObjectList("[1,2,3]");
+		l = new OList("[1,2,3]");
 		Iterator<Integer> i2 = l.elements(Integer.class).iterator();
 		assertEquals(1, (int)i2.next());
 		assertEquals(2, (int)i2.next());
@@ -65,7 +66,7 @@ public class ObjectListTest {
 
 		// Iterate over a list of beans.
 		// Automatically converts to beans.
-		l = new ObjectList("[{name:'John Smith',age:45}]");
+		l = new OList("[{name:'John Smith',age:45}]");
 		Iterator<Person> i3 = l.elements(Person.class).iterator();
 		assertEquals("John Smith", i3.next().name);
 	}
@@ -80,7 +81,7 @@ public class ObjectListTest {
 	//====================================================================================================
 	@Test
 	public void testAtMethods() throws Exception {
-		ObjectList l = new ObjectList("[{foo:'bar'},{baz:123}]");
+		OList l = new OList("[{foo:'bar'},{baz:123}]");
 		String r;
 
 		r = l.getAt("0/foo", String.class);
@@ -90,7 +91,7 @@ public class ObjectListTest {
 		r = l.getAt("0/foo", String.class);
 		assertEquals("bing", r);
 
-		l.postAt("", new ObjectMap("{a:'b'}"));
+		l.postAt("", OMap.ofJson("{a:'b'}"));
 		r = l.getAt("2/a", String.class);
 		assertEquals("b", r);
 
@@ -99,11 +100,11 @@ public class ObjectListTest {
 	}
 
 	//====================================================================================================
-	// ObjectList(Reader)
+	// OList(Reader)
 	//====================================================================================================
 	@Test
 	public void testFromReader() throws Exception {
-		assertObjectEquals("[1,2,3]", new ObjectList(new StringReader("[1,2,3]")));
+		assertObjectEquals("[1,2,3]", new OList(new StringReader("[1,2,3]")));
 	}
 
 	//====================================================================================================
@@ -111,7 +112,7 @@ public class ObjectListTest {
 	//====================================================================================================
 	@Test
 	public void testGetMap() throws Exception {
-		ObjectList l = new ObjectList("[{1:'true',2:'false'}]");
+		OList l = new OList("[{1:'true',2:'false'}]");
 		Map<Integer,Boolean> m2 = l.getMap(0, Integer.class, Boolean.class);
 		assertObjectEquals("{'1':true,'2':false}", m2);
 		assertEquals(Integer.class, m2.keySet().iterator().next().getClass());
@@ -128,7 +129,7 @@ public class ObjectListTest {
 	//====================================================================================================
 	@Test
 	public void testGetList() throws Exception {
-		ObjectList l = new ObjectList("[['123','456']]");
+		OList l = new OList("[['123','456']]");
 		List<Integer> l2 = l.getList(0, Integer.class);
 		assertObjectEquals("[123,456]", l2);
 		assertEquals(Integer.class, l2.iterator().next().getClass());
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ObjectMapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/OMapTest.java
similarity index 57%
rename from juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ObjectMapTest.java
rename to juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/OMapTest.java
index 2da832f..da937b3 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ObjectMapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/OMapTest.java
@@ -18,10 +18,11 @@ import static org.junit.Assert.*;
 import java.io.*;
 import java.util.*;
 
+import org.apache.juneau.collections.*;
 import org.apache.juneau.utils.*;
 import org.junit.*;
 
-public class ObjectMapTest {
+public class OMapTest {
 
 	//====================================================================================================
 	// testBasic
@@ -31,215 +32,215 @@ public class ObjectMapTest {
 		String in;
 
 		in = "{A:'asdf'}";
-		checkStep(1, in, new ObjectMap(in).getString("A"), "asdf");
+		checkStep(1, in, OMap.ofJson(in).getString("A"), "asdf");
 
 		in = "{A:{B:'asdf'}}";
-		checkStep(2, in, getDeepString(new ObjectMap(in), "A/B"), "asdf");
-		checkStep(3, in, new ObjectMap(in).getString("A"), "{B:'asdf'}");
+		checkStep(2, in, getDeepString(OMap.ofJson(in), "A/B"), "asdf");
+		checkStep(3, in, OMap.ofJson(in).getString("A"), "{B:'asdf'}");
 
 		in = "{A:{B:'asdf'+\"asdf\"}}";
-		checkStep(4, in, getDeepString(new ObjectMap(in), "A/B"), "asdfasdf");
-		checkStep(5, in, new ObjectMap(in).getString("A"), "{B:'asdfasdf'}");
+		checkStep(4, in, getDeepString(OMap.ofJson(in), "A/B"), "asdfasdf");
+		checkStep(5, in, OMap.ofJson(in).getString("A"), "{B:'asdfasdf'}");
 
 		in = "{A:{B:'asdf' + \n\t \"asdf\"}}";
-		checkStep(6, in, getDeepString(new ObjectMap(in), "A/B"), "asdfasdf");
-		checkStep(7, in, new ObjectMap(in).getString("A"), "{B:'asdfasdf'}");
+		checkStep(6, in, getDeepString(OMap.ofJson(in), "A/B"), "asdfasdf");
+		checkStep(7, in, OMap.ofJson(in).getString("A"), "{B:'asdfasdf'}");
 
 		in = "{A:{B:'asdf\"asdf', C:\"asdf'asdf\", D : \"asdf\\\"asdf\", E: 'asdf\\\'asdf', F:\"asdf\\\'asdf\", G:'asdf\\\"asdf'}}";
-		checkStep(8, in, getDeepString(new ObjectMap(in), "A/B"), "asdf\"asdf");
-		checkStep(9, in, getDeepString(new ObjectMap(in), "A/C"), "asdf'asdf");
-		checkStep(10, in, getDeepString(new ObjectMap(in), "A/D"), "asdf\"asdf");
-		checkStep(11, in, getDeepString(new ObjectMap(in), "A/E"), "asdf'asdf");
-		checkStep(12, in, getDeepString(new ObjectMap(in), "A/F"), "asdf'asdf");
-		checkStep(13, in, getDeepString(new ObjectMap(in), "A/G"), "asdf\"asdf");
+		checkStep(8, in, getDeepString(OMap.ofJson(in), "A/B"), "asdf\"asdf");
+		checkStep(9, in, getDeepString(OMap.ofJson(in), "A/C"), "asdf'asdf");
+		checkStep(10, in, getDeepString(OMap.ofJson(in), "A/D"), "asdf\"asdf");
+		checkStep(11, in, getDeepString(OMap.ofJson(in), "A/E"), "asdf'asdf");
+		checkStep(12, in, getDeepString(OMap.ofJson(in), "A/F"), "asdf'asdf");
+		checkStep(13, in, getDeepString(OMap.ofJson(in), "A/G"), "asdf\"asdf");
 
 		in = "{A:123, B: 123}";
-		checkStep(16, in, new Integer(new ObjectMap(in).getInt("A")).toString(), "123");
-		checkStep(17, in, new Integer(new ObjectMap(in).getInt("B")).toString(), "123");
+		checkStep(16, in, new Integer(OMap.ofJson(in).getInt("A")).toString(), "123");
+		checkStep(17, in, new Integer(OMap.ofJson(in).getInt("B")).toString(), "123");
 
 		in = "{A:true, B: true, C:false, D: false}";
-		checkStep(18, in, new Boolean(new ObjectMap(in).getBoolean("A")).toString(), "true");
-		checkStep(19, in, new Boolean(new ObjectMap(in).getBoolean("B")).toString(), "true");
-		checkStep(20, in, new Boolean(new ObjectMap(in).getBoolean("C")).toString(), "false");
-		checkStep(21, in, new Boolean(new ObjectMap(in).getBoolean("D")).toString(), "false");
+		checkStep(18, in, new Boolean(OMap.ofJson(in).getBoolean("A")).toString(), "true");
+		checkStep(19, in, new Boolean(OMap.ofJson(in).getBoolean("B")).toString(), "true");
+		checkStep(20, in, new Boolean(OMap.ofJson(in).getBoolean("C")).toString(), "false");
+		checkStep(21, in, new Boolean(OMap.ofJson(in).getBoolean("D")).toString(), "false");
 
 		in = "{'AAA':{\"BBB\":\"CCC\",'DDD':false}}";
-		checkStep(31, in, getDeepString(new ObjectMap(in), "AAA/BBB"), "CCC");
-		checkStep(32, in, getDeepBoolean(new ObjectMap(in), "AAA/DDD").toString(), "false");
+		checkStep(31, in, getDeepString(OMap.ofJson(in), "AAA/BBB"), "CCC");
+		checkStep(32, in, getDeepBoolean(OMap.ofJson(in), "AAA/DDD").toString(), "false");
 
 		in = " \n\n\t {  'AAA' : { \"BBB\" : \"CCC\" , 'DDD' : false } } \n\t";
-		checkStep(33, in, getDeepString(new ObjectMap(in), "AAA/BBB"), "CCC");
-		checkStep(34, in, getDeepBoolean(new ObjectMap(in), "AAA/DDD").toString(), "false");
+		checkStep(33, in, getDeepString(OMap.ofJson(in), "AAA/BBB"), "CCC");
+		checkStep(34, in, getDeepBoolean(OMap.ofJson(in), "AAA/DDD").toString(), "false");
 
 		in = "/*x*/{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(100, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(100, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{/*x*/A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(101, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(101, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A/*x*/:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(102, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(102, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A:/*x*/'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(103, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(103, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A:'/*x*/B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(104, in, new ObjectMap(in).getString("A"), "/*x*/B");
+		checkStep(104, in, OMap.ofJson(in).getString("A"), "/*x*/B");
 		in = "{A:'B/*x*/','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(105, in, new ObjectMap(in).getString("A"), "B/*x*/");
+		checkStep(105, in, OMap.ofJson(in).getString("A"), "B/*x*/");
 		in = "{A:'B'/*x*/,'C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(106, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(106, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A:'B',/*x*/'C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(107, in, new ObjectMap(in).getString("C"), "1");
+		checkStep(107, in, OMap.ofJson(in).getString("C"), "1");
 		in = "{A:'B','C':/*x*/1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(108, in, new ObjectMap(in).getString("C"), "1");
+		checkStep(108, in, OMap.ofJson(in).getString("C"), "1");
 		in = "{A:'B','C':1/*x*/,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(109, in, new ObjectMap(in).getString("C"), "1");
+		checkStep(109, in, OMap.ofJson(in).getString("C"), "1");
 		in = "{A:'B','C':1,/*x*/\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(110, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(110, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"/*x*/E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(111, in, new ObjectMap(in).getObjectList("/*x*/E").getString(0), "1");
+		checkStep(111, in, OMap.ofJson(in).getList("/*x*/E").getString(0), "1");
 		in = "{A:'B','C':1,\"E/*x*/\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(112, in, new ObjectMap(in).getObjectList("E/*x*/").getString(0), "1");
+		checkStep(112, in, OMap.ofJson(in).getList("E/*x*/").getString(0), "1");
 		in = "{A:'B','C':1,\"E\"/*x*/:[1,2,3],G:['g1','g2','g3']}";
-		checkStep(113, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(113, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":/*x*/[1,2,3],G:['g1','g2','g3']}";
-		checkStep(114, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(114, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":[/*x*/1,2,3],G:['g1','g2','g3']}";
-		checkStep(115, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(115, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":[1/*x*/,2,3],G:['g1','g2','g3']}";
-		checkStep(116, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(116, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":[1,/*x*/2,3],G:['g1','g2','g3']}";
-		checkStep(117, in, new ObjectMap(in).getObjectList("E").getString(1), "2");
+		checkStep(117, in, OMap.ofJson(in).getList("E").getString(1), "2");
 		in = "{A:'B','C':1,\"E\":[1,2/*x*/,3],G:['g1','g2','g3']}";
-		checkStep(118, in, new ObjectMap(in).getObjectList("E").getString(1), "2");
+		checkStep(118, in, OMap.ofJson(in).getList("E").getString(1), "2");
 		in = "{A:'B','C':1,\"E\":[1,2,/*x*/3],G:['g1','g2','g3']}";
-		checkStep(119, in, new ObjectMap(in).getObjectList("E").getString(2), "3");
+		checkStep(119, in, OMap.ofJson(in).getList("E").getString(2), "3");
 		in = "{A:'B','C':1,\"E\":[1,2,3]/*x*/,G:['g1','g2','g3']}";
-		checkStep(120, in, new ObjectMap(in).getObjectList("E").getString(2), "3");
+		checkStep(120, in, OMap.ofJson(in).getList("E").getString(2), "3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],/*x*/G:['g1','g2','g3']}";
-		checkStep(121, in, new ObjectMap(in).getObjectList("G").getString(0), "g1");
+		checkStep(121, in, OMap.ofJson(in).getList("G").getString(0), "g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:[/*x*/'g1','g2','g3']}";
-		checkStep(122, in, new ObjectMap(in).getObjectList("G").getString(0), "g1");
+		checkStep(122, in, OMap.ofJson(in).getList("G").getString(0), "g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['/*x*/g1','g2','g3']}";
-		checkStep(123, in, new ObjectMap(in).getObjectList("G").getString(0), "/*x*/g1");
+		checkStep(123, in, OMap.ofJson(in).getList("G").getString(0), "/*x*/g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1'/*x*/,'g2','g3']}";
-		checkStep(124, in, new ObjectMap(in).getObjectList("G").getString(0), "g1");
+		checkStep(124, in, OMap.ofJson(in).getList("G").getString(0), "g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1',/*x*/'g2','g3']}";
-		checkStep(125, in, new ObjectMap(in).getObjectList("G").getString(1), "g2");
+		checkStep(125, in, OMap.ofJson(in).getList("G").getString(1), "g2");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2'/*x*/,'g3']}";
-		checkStep(126, in, new ObjectMap(in).getObjectList("G").getString(1), "g2");
+		checkStep(126, in, OMap.ofJson(in).getList("G").getString(1), "g2");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2',/*x*/'g3']}";
-		checkStep(127, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(127, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3'/*x*/]}";
-		checkStep(128, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(128, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']/*x*/}";
-		checkStep(129, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(129, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}/*x*/";
-		checkStep(130, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(130, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 
 		in = "/*\tx\t*///\tx\t\n\t/*\tx\t*/{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(201, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(201, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{/*\tx\t*///\tx\t\n\t/*\tx\t*/A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(202, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(202, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A/*\tx\t*///\tx\t\n\t/*\tx\t*/:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(203, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(203, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A:/*\tx\t*///\tx\t\n\t/*\tx\t*/'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(204, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(204, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A:'/*\tx\t*///\tx\t\n\t/*\tx\t*/B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(205, in, new ObjectMap(in).getString("A"), "/*\tx\t*///\tx\t\n\t/*\tx\t*/B");
+		checkStep(205, in, OMap.ofJson(in).getString("A"), "/*\tx\t*///\tx\t\n\t/*\tx\t*/B");
 		in = "{A:'B/*\tx\t*///\tx\t\n\t/*\tx\t*/','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(206, in, new ObjectMap(in).getString("A"), "B/*\tx\t*///\tx\t\n\t/*\tx\t*/");
+		checkStep(206, in, OMap.ofJson(in).getString("A"), "B/*\tx\t*///\tx\t\n\t/*\tx\t*/");
 		in = "{A:'B'/*\tx\t*///\tx\t\n\t/*\tx\t*/,'C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(207, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(207, in, OMap.ofJson(in).getString("A"), "B");
 		in = "{A:'B',/*\tx\t*///\tx\t\n\t/*\tx\t*/'C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(208, in, new ObjectMap(in).getString("C"), "1");
+		checkStep(208, in, OMap.ofJson(in).getString("C"), "1");
 		in = "{A:'B','C':/*\tx\t*///\tx\t\n\t/*\tx\t*/1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(209, in, new ObjectMap(in).getString("C"), "1");
+		checkStep(209, in, OMap.ofJson(in).getString("C"), "1");
 		in = "{A:'B','C':1/*\tx\t*///\tx\t\n\t/*\tx\t*/,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(210, in, new ObjectMap(in).getString("C"), "1");
+		checkStep(210, in, OMap.ofJson(in).getString("C"), "1");
 		in = "{A:'B','C':1,/*\tx\t*///\tx\t\n\t/*\tx\t*/\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(211, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(211, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"/*\tx\t*///\tx\t\n\t/*\tx\t*/E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(212, in, new ObjectMap(in).getObjectList("/*\tx\t*///\tx\t\n\t/*\tx\t*/E").getString(0), "1");
+		checkStep(212, in, OMap.ofJson(in).getList("/*\tx\t*///\tx\t\n\t/*\tx\t*/E").getString(0), "1");
 		in = "{A:'B','C':1,\"E/*\tx\t*///\tx\t\n\t/*\tx\t*/\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(213, in, new ObjectMap(in).getObjectList("E/*\tx\t*///\tx\t\n\t/*\tx\t*/").getString(0), "1");
+		checkStep(213, in, OMap.ofJson(in).getList("E/*\tx\t*///\tx\t\n\t/*\tx\t*/").getString(0), "1");
 		in = "{A:'B','C':1,\"E\"/*\tx\t*///\tx\t\n\t/*\tx\t*/:[1,2,3],G:['g1','g2','g3']}";
-		checkStep(214, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(214, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":/*\tx\t*///\tx\t\n\t/*\tx\t*/[1,2,3],G:['g1','g2','g3']}";
-		checkStep(215, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(215, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":[/*\tx\t*///\tx\t\n\t/*\tx\t*/1,2,3],G:['g1','g2','g3']}";
-		checkStep(216, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(216, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":[1/*\tx\t*///\tx\t\n\t/*\tx\t*/,2,3],G:['g1','g2','g3']}";
-		checkStep(217, in, new ObjectMap(in).getObjectList("E").getString(0), "1");
+		checkStep(217, in, OMap.ofJson(in).getList("E").getString(0), "1");
 		in = "{A:'B','C':1,\"E\":[1,/*\tx\t*///\tx\t\n\t/*\tx\t*/2,3],G:['g1','g2','g3']}";
-		checkStep(218, in, new ObjectMap(in).getObjectList("E").getString(1), "2");
+		checkStep(218, in, OMap.ofJson(in).getList("E").getString(1), "2");
 		in = "{A:'B','C':1,\"E\":[1,2/*\tx\t*///\tx\t\n\t/*\tx\t*/,3],G:['g1','g2','g3']}";
-		checkStep(219, in, new ObjectMap(in).getObjectList("E").getString(1), "2");
+		checkStep(219, in, OMap.ofJson(in).getList("E").getString(1), "2");
 		in = "{A:'B','C':1,\"E\":[1,2,/*\tx\t*///\tx\t\n\t/*\tx\t*/3],G:['g1','g2','g3']}";
-		checkStep(220, in, new ObjectMap(in).getObjectList("E").getString(2), "3");
+		checkStep(220, in, OMap.ofJson(in).getList("E").getString(2), "3");
 		in = "{A:'B','C':1,\"E\":[1,2,3]/*\tx\t*///\tx\t\n\t/*\tx\t*/,G:['g1','g2','g3']}";
-		checkStep(221, in, new ObjectMap(in).getObjectList("E").getString(2), "3");
+		checkStep(221, in, OMap.ofJson(in).getList("E").getString(2), "3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],/*\tx\t*///\tx\t\n\t/*\tx\t*/G:['g1','g2','g3']}";
-		checkStep(222, in, new ObjectMap(in).getObjectList("G").getString(0), "g1");
+		checkStep(222, in, OMap.ofJson(in).getList("G").getString(0), "g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:[/*\tx\t*///\tx\t\n\t/*\tx\t*/'g1','g2','g3']}";
-		checkStep(223, in, new ObjectMap(in).getObjectList("G").getString(0), "g1");
+		checkStep(223, in, OMap.ofJson(in).getList("G").getString(0), "g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['/*\tx\t*///\tx\t\n\t/*\tx\t*/g1','g2','g3']}";
-		checkStep(224, in, new ObjectMap(in).getObjectList("G").getString(0), "/*\tx\t*///\tx\t\n\t/*\tx\t*/g1");
+		checkStep(224, in, OMap.ofJson(in).getList("G").getString(0), "/*\tx\t*///\tx\t\n\t/*\tx\t*/g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1'/*\tx\t*///\tx\t\n\t/*\tx\t*/,'g2','g3']}";
-		checkStep(225, in, new ObjectMap(in).getObjectList("G").getString(0), "g1");
+		checkStep(225, in, OMap.ofJson(in).getList("G").getString(0), "g1");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1',/*\tx\t*///\tx\t\n\t/*\tx\t*/'g2','g3']}";
-		checkStep(226, in, new ObjectMap(in).getObjectList("G").getString(1), "g2");
+		checkStep(226, in, OMap.ofJson(in).getList("G").getString(1), "g2");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2'/*\tx\t*///\tx\t\n\t/*\tx\t*/,'g3']}";
-		checkStep(227, in, new ObjectMap(in).getObjectList("G").getString(1), "g2");
+		checkStep(227, in, OMap.ofJson(in).getList("G").getString(1), "g2");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2',/*\tx\t*///\tx\t\n\t/*\tx\t*/'g3']}";
-		checkStep(228, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(228, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3'/*\tx\t*///\tx\t\n\t/*\tx\t*/]}";
-		checkStep(229, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(229, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']/*\tx\t*///\tx\t\n\t/*\tx\t*/}";
-		checkStep(230, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(230, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}/*\tx\t*///\tx\t\n\t/*\tx\t*/";
-		checkStep(231, in, new ObjectMap(in).getObjectList("G").getString(2), "g3");
+		checkStep(231, in, OMap.ofJson(in).getList("G").getString(2), "g3");
 
 		in = "{  /*  x  */  //  x  \n  /*  x  */  A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(240, in, new ObjectMap(in).getString("A"), "B");
+		checkStep(240, in, OMap.ofJson(in).getString("A"), "B");
 
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(301, in, new ObjectMap(in).getString("A", "default"), "B");
+		checkStep(301, in, OMap.ofJson(in).getString("A", "default"), "B");
 		in = "{/*A:'B',*/'C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(302, in, new ObjectMap(in).getString("A", "default"), "default");
+		checkStep(302, in, OMap.ofJson(in).getString("A", "default"), "default");
 		in = "{A:'B',/*'C':1,*/\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(303, in, new ObjectMap(in).getString("C", "default"), "default");
+		checkStep(303, in, OMap.ofJson(in).getString("C", "default"), "default");
 		in = "{A:'B','C':1,/*\"E\":[1,2,3],*/G:['g1','g2','g3']}";
-		checkStep(304, in, new ObjectMap(in).getString("E", "default"), "default");
+		checkStep(304, in, OMap.ofJson(in).getString("E", "default"), "default");
 		in = "{A:'B','C':1,\"E\":[/*1,*/2,3],G:['g1','g2','g3']}";
-		checkStep(305, in, new ObjectMap(in).getObjectList("E").getString(0), "2");
+		checkStep(305, in, OMap.ofJson(in).getList("E").getString(0), "2");
 		in = "{A:'B','C':1,\"E\":[1,/*2,*/3],G:['g1','g2','g3']}";
-		checkStep(306, in, new ObjectMap(in).getObjectList("E").getString(1), "3");
+		checkStep(306, in, OMap.ofJson(in).getList("E").getString(1), "3");
 		in = "{A:'B','C':1,\"E\":[1,2/*,3*/],G:['g1','g2','g3']}";
-		checkStep(307, in, new ObjectMap(in).getObjectList("E").getString(1), "2");
+		checkStep(307, in, OMap.ofJson(in).getList("E").getString(1), "2");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:[/*'g1',*/'g2','g3']}";
-		checkStep(308, in, new ObjectMap(in).getObjectList("G").getString(0), "g2");
+		checkStep(308, in, OMap.ofJson(in).getList("G").getString(0), "g2");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1'/*,'g2'*/,'g3']}";
-		checkStep(309, in, new ObjectMap(in).getObjectList("G").getString(1), "g3");
+		checkStep(309, in, OMap.ofJson(in).getList("G").getString(1), "g3");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2'/*,'g3'*/]}";
-		checkStep(310, in, new ObjectMap(in).getObjectList("G").getString(1), "g2");
+		checkStep(310, in, OMap.ofJson(in).getList("G").getString(1), "g2");
 		in = "{A:'B','C':1,\"E\":[1,2,3],G:['g1','g2','g3']}";
-		checkStep(310, in, new ObjectMap(in).getObjectList("G").getString(1), "g2");
+		checkStep(310, in, OMap.ofJson(in).getList("G").getString(1), "g2");
 
 		// Check keys that contain array indexes
 		in = "{A:{B:[{C:'c0'},{C:'c1'},{C:'c2'}]}}";
-		checkStep(401, in, getDeepString(new ObjectMap(in), "A/B/0/C"), "c0");
-		checkStep(402, in, getDeepString(new ObjectMap(in), "A/B/1/C"), "c1");
-		checkStep(403, in, getDeepString(new ObjectMap(in), "A/B/2/C"), "c2");
+		checkStep(401, in, getDeepString(OMap.ofJson(in), "A/B/0/C"), "c0");
+		checkStep(402, in, getDeepString(OMap.ofJson(in), "A/B/1/C"), "c1");
+		checkStep(403, in, getDeepString(OMap.ofJson(in), "A/B/2/C"), "c2");
 
 		// Check extended unicode characters.
 		in = "{'𤭢𤭢':'𤭢𤭢'}";
-		checkStep(1, in, new ObjectMap(in).getString("𤭢𤭢"), "𤭢𤭢");
+		checkStep(1, in, OMap.ofJson(in).getString("𤭢𤭢"), "𤭢𤭢");
 	}
 
-	private String getDeepString(ObjectMap m, String url) {
+	private String getDeepString(OMap m, String url) {
 		PojoRest r = new PojoRest(m);
 		return (String)r.get(url);
 	}
 
-	private Boolean getDeepBoolean(ObjectMap m, String url) {
+	private Boolean getDeepBoolean(OMap m, String url) {
 		PojoRest r = new PojoRest(m);
 		return (Boolean)r.get(url);
 	}
@@ -256,8 +257,8 @@ public class ObjectMapTest {
 	//====================================================================================================
 	@Test
 	public void testComparison() throws Exception {
-		ObjectMap m1 = new ObjectMap("{ firstName:'John', lastName:'Smith', age:123, isDeceased:false }");
-		ObjectMap m2 = new ObjectMap("{ age:123, isDeceased:false, lastName:'Smith', firstName:'John' }");
+		OMap m1 = OMap.ofJson("{ firstName:'John', lastName:'Smith', age:123, isDeceased:false }");
+		OMap m2 = OMap.ofJson("{ age:123, isDeceased:false, lastName:'Smith', firstName:'John' }");
 
 		assertTrue(m1.equals(m2));
 	}
@@ -267,8 +268,8 @@ public class ObjectMapTest {
 	//====================================================================================================
 	@Test
 	public void testParent() throws Exception {
-		ObjectMap m1 = new ObjectMap("{a:1}");
-		ObjectMap m2 = new ObjectMap("{b:2}").setInner(m1);
+		OMap m1 = OMap.ofJson("{a:1}");
+		OMap m2 = OMap.ofJson("{b:2}").inner(m1);
 
 		assertEquals(new Integer(1), m2.getInt("a"));
 	}
@@ -278,14 +279,14 @@ public class ObjectMapTest {
 	//====================================================================================================
 	@Test
 	public void testUpdatability() throws Exception {
-		ObjectMap m = new ObjectMap("{a:[{b:'c'}]}");
-		ObjectList l = m.getObjectList("a");
-		ObjectMap m2 = l.getObjectMap(0);
+		OMap m = OMap.ofJson("{a:[{b:'c'}]}");
+		OList l = m.getList("a");
+		OMap m2 = l.getMap(0);
 		m2.put("b", "x");
 		assertObjectEquals("{a:[{b:'x'}]}", m);
 
-		m = new ObjectMap("{a:[{b:'c'}]}");
-		for (ObjectMap m3 : m.getObjectList("a").elements(ObjectMap.class))
+		m = OMap.ofJson("{a:[{b:'c'}]}");
+		for (OMap m3 : m.getList("a").elements(OMap.class))
 			m3.put("b", "y");
 
 		assertObjectEquals("{a:[{b:'y'}]}", m);
@@ -296,7 +297,7 @@ public class ObjectMapTest {
 	//====================================================================================================
 	@Test
 	public void testAtMethods() throws Exception {
-		ObjectMap m = new ObjectMap("{a:[{b:'c'}]}");
+		OMap m = OMap.ofJson("{a:[{b:'c'}]}");
 		String r;
 
 		r = m.getAt("a/0/b", String.class);
@@ -315,11 +316,11 @@ public class ObjectMapTest {
 	}
 
 	//====================================================================================================
-	// ObjectMap(Reader)
+	// OMap(Reader)
 	//====================================================================================================
 	@Test
 	public void testFromReader() throws Exception {
-		assertObjectEquals("{foo:'bar'}", new ObjectMap(new StringReader("{foo:'bar'}")));
+		assertObjectEquals("{foo:'bar'}", OMap.ofJson(new StringReader("{foo:'bar'}")));
 	}
 
 	//====================================================================================================
@@ -327,7 +328,7 @@ public class ObjectMapTest {
 	//====================================================================================================
 	@Test
 	public void testGetMap() throws Exception {
-		ObjectMap m = new ObjectMap("{a:{1:'true',2:'false'}}");
+		OMap m = OMap.ofJson("{a:{1:'true',2:'false'}}");
 		Map<Integer,Boolean> m2 = m.getMap("a", Integer.class, Boolean.class, null);
 		assertObjectEquals("{'1':true,'2':false}", m2);
 		assertEquals(Integer.class, m2.keySet().iterator().next().getClass());
@@ -350,7 +351,7 @@ public class ObjectMapTest {
 	//====================================================================================================
 	@Test
 	public void testGetList() throws Exception {
-		ObjectMap m = new ObjectMap("{a:['123','456']}");
+		OMap m = OMap.ofJson("{a:['123','456']}");
 		List<Integer> l2 = m.getList("a", Integer.class, null);
 		assertObjectEquals("[123,456]", l2);
 		assertEquals(Integer.class, l2.iterator().next().getClass());
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PojoSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PojoSwapTest.java
index f2c4ff0..b4ef17d 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PojoSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PojoSwapTest.java
@@ -14,6 +14,7 @@ package org.apache.juneau;
 
 import static org.junit.Assert.*;
 
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
@@ -37,7 +38,7 @@ public class PojoSwapTest {
 		r = p.parse(r, String.class);
 		assertEquals("foobar", r);
 
-		ObjectMap m = new ObjectMap("{foo:'bar'}");
+		OMap m = OMap.ofJson("{foo:'bar'}");
 		r = s.serialize(m);
 		assertEquals("{xfoox:'xbarx'}", r);
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
index 6b80363..0d9ad2a 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
@@ -71,8 +71,8 @@ public class PropertyStoreTest {
 		b.set("A.f1.s", "1");
 		b.set("A.f2.s", 2);
 		b.set("A.f3.s", true);
-		b.set("A.f4.s", new ObjectMap("{foo:'bar'}"));
-		b.set("A.f5.s", new ObjectList("[1,2]"));
+		b.set("A.f4.s", OMap.ofJson("{foo:'bar'}"));
+		b.set("A.f5.s", OList.ofJson("[1,2]"));
 		b.set("A.f6.s", null);
 		ps = b.build();
 		assertObjectEquals("{A:{'f1.s':'1','f2.s':'2','f3.s':'true','f4.s':'{foo:\\'bar\\'}','f5.s':'[1,2]'}}", ps);
@@ -86,8 +86,8 @@ public class PropertyStoreTest {
 		b.set("A.f1", "1");
 		b.set("A.f2", 2);
 		b.set("A.f3", true);
-		b.set("A.f4", new ObjectMap("{foo:'bar'}"));
-		b.set("A.f5", new ObjectList("[1,2]"));
+		b.set("A.f4", OMap.ofJson("{foo:'bar'}"));
+		b.set("A.f5", OList.ofJson("[1,2]"));
 		b.set("A.f6", null);
 		ps = b.build();
 		assertObjectEquals("{A:{f1:'1',f2:'2',f3:'true',f4:'{foo:\\'bar\\'}',f5:'[1,2]'}}", ps);
@@ -1598,8 +1598,8 @@ public class PropertyStoreTest {
 	@Test
 	public void testSet() {
 		PropertyStoreBuilder b = PropertyStore.create();
-		b.set(new ObjectMap().append("A.foo", "bar"));
-		b.set(new ObjectMap().append("A.baz", "qux"));
+		b.set(OMap.of("A.foo", "bar"));
+		b.set(OMap.of("A.baz", "qux"));
 		b.add(null);
 		assertObjectEquals("{A:{baz:'qux'}}", b.build());
 	}
@@ -1607,9 +1607,9 @@ public class PropertyStoreTest {
 	@Test
 	public void testAdd() {
 		PropertyStoreBuilder b = PropertyStore.create();
-		b.add(new ObjectMap().append("A.foo", "bar"));
-		b.add(new ObjectMap().append("A.baz", "qux"));
-		b.add(new ObjectMap().append("A.quux", null));
+		b.add(OMap.of("A.foo", "bar"));
+		b.add(OMap.of("A.baz", "qux"));
+		b.add(OMap.of("A.quux", null));
 		b.add(null);
 		assertObjectEquals("{A:{baz:'qux',foo:'bar'}}", b.build());
 	}
@@ -1639,7 +1639,7 @@ public class PropertyStoreTest {
 	}
 
 	@Test
-	public void testRemoveFromInvalidObjectList() {
+	public void testRemoveFromInvalidListOfObjects() {
 		PropertyStoreBuilder b = PropertyStore.create();
 		try {
 			b.removeFrom("A.foo.ss", "[xxx]");
@@ -1656,7 +1656,7 @@ public class PropertyStoreTest {
 	}
 
 	@Test
-	public void testAddToInvalidObjectMap() {
+	public void testAddToInvalidMapOfObjects() {
 		PropertyStoreBuilder b = PropertyStore.create();
 		try {
 			b.putAllTo("A.foo.sms", "{xxx}");
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
index f1ea7f1..41ee534 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
@@ -41,12 +41,12 @@ public class RoundTripGenericsTest extends RoundTripTest {
 			return;
 
 		// Unbound type variables should be interpreted as Object.
-		// During parsing, these become ObjectMaps.
+		// During parsing, these become OMaps.
 		Pair pair = new Pair<>(new Source().init(), new Target().init());
 		pair = roundTrip(pair);
 		assertSortedObjectEquals("{s:{s1:'a1'},t:{t1:'b1'}}", pair);
-		assertEquals("ObjectMap", pair.getS().getClass().getSimpleName());
-		assertEquals("ObjectMap", pair.getT().getClass().getSimpleName());
+		assertEquals("OMap", pair.getS().getClass().getSimpleName());
+		assertEquals("OMap", pair.getT().getClass().getSimpleName());
 
 		// If you specify a concrete class, the type variables become bound and
 		// the property types correctly resolve.
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
index 0257626..58d3b27 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -599,11 +599,11 @@ public class RoundTripSimpleObjectsTest extends RoundTripTest {
 	}
 
 	//====================================================================================================
-	// testObjectMap
+	// testOMap
 	//====================================================================================================
 	@Test
-	public void testObjectMap() throws Exception {
-		ObjectMap t = new ObjectMap("{a:'b',c:123,d:false,e:null,f:[123,'abc',true,false,null]}");
+	public void testOMap() throws Exception {
+		OMap t = OMap.ofJson("{a:'b',c:123,d:false,e:null,f:[123,'abc',true,false,null]}");
 		t = roundTrip(t);
 		assertEquals("b", t.get("a"));
 		assertEquals(123, t.get("c"));
@@ -618,11 +618,11 @@ public class RoundTripSimpleObjectsTest extends RoundTripTest {
 	}
 
 	//====================================================================================================
-	// testObjectList
+	// testOList
 	//====================================================================================================
 	@Test
-	public void testObjectList() throws Exception {
-		ObjectList t = new ObjectList("['abc',123,true,false,null,{a:'b'}]");
+	public void testOList() throws Exception {
+		OList t = new OList("['abc',123,true,false,null,{a:'b'}]");
 		t = roundTrip(t);
 		assertEquals("abc", t.get(0));
 		assertEquals(123, t.get(1));
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 8ae7a46..0974ec4 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -18,7 +18,7 @@ import java.lang.reflect.*;
 import java.util.*;
 import java.util.Map.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.html.*;
 import org.apache.juneau.jena.*;
 import org.apache.juneau.json.*;
@@ -218,8 +218,8 @@ public abstract class RoundTripTest {
 		return new Class<?>[0];
 	}
 
-	public ObjectMap getProperties() {
-		return ObjectMap.EMPTY_MAP;
+	public OMap getProperties() {
+		return OMap.EMPTY_MAP;
 	}
 
 	public <T> Map<Class<T>,Class<? extends T>> getImplClasses() {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripToOMapsTest.java
similarity index 81%
rename from juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
rename to juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripToOMapsTest.java
index 1b70290..70750ab 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripToOMapsTest.java
@@ -26,18 +26,18 @@ import org.junit.*;
  * Tests designed to serialize and parse objects to make sure we end up
  * with the same objects for all serializers and parsers.
  */
-public class RoundTripToObjectMapsTest extends RoundTripTest {
+public class RoundTripToOMapsTest extends RoundTripTest {
 
-	public RoundTripToObjectMapsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
+	public RoundTripToOMapsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 
 	//====================================================================================================
-	// Class with X(ObjectMap) constructor and toObjectMap() method.
+	// Class with X(OMap) constructor and toOMap() method.
 	//====================================================================================================
 	@Test
 	public void test() throws Exception {
-		A a = new A(new ObjectMap("{f1:'a',f2:2}"));
+		A a = new A(OMap.ofJson("{f1:'a',f2:2}"));
 		a = roundTrip(a, A.class);
 		assertEquals("a", a.f1);
 		assertEquals(2, a.f2);
@@ -48,13 +48,13 @@ public class RoundTripToObjectMapsTest extends RoundTripTest {
 		assertEquals("a", aa[0].f1);
 		assertEquals(2, aa[0].f2);
 
-		List<A> a2 = AList.of(new A(new ObjectMap("{f1:'a',f2:2}")));
+		List<A> a2 = AList.of(new A(OMap.ofJson("{f1:'a',f2:2}")));
 		a2 = roundTrip(a2, List.class, A.class);
 		assertEquals(1, a2.size());
 		assertEquals("a", a2.get(0).f1);
 		assertEquals(2, a2.get(0).f2);
 
-		Map<String,A> a3 = AMap.of("a",new A(new ObjectMap("{f1:'a',f2:2}")));
+		Map<String,A> a3 = AMap.of("a",new A(OMap.ofJson("{f1:'a',f2:2}")));
 		a3 = roundTrip(a3, Map.class, String.class, A.class);
 		assertEquals(1, a3.size());
 		assertEquals("a", a3.get("a").f1);
@@ -64,12 +64,12 @@ public class RoundTripToObjectMapsTest extends RoundTripTest {
 	public static class A {
 		private String f1;
 		private int f2;
-		public A(ObjectMap m) {
+		public A(OMap m) {
 			this.f1 = m.getString("f1");
 			this.f2 = m.getInt("f2");
 		}
-		public ObjectMap swap(BeanSession session) {
-			return new ObjectMap().append("f1",f1).append("f2",f2);
+		public OMap swap(BeanSession session) {
+			return OMap.of("f1",f1,"f2",f2);
 		}
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
index 2bc9d28..bd2183e 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.a.rttests;
 
 import static org.apache.juneau.testutils.TestUtils.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -49,18 +49,18 @@ public class RoundTripTrimStringsTest extends RoundTripTest {
 		a = p2.parse(s.serialize(in), String.class);
 		assertEqualObjects(e, a);
 
-		in = new ObjectMap("{' foo ': ' bar '}");
-		e = new ObjectMap("{foo:'bar'}");
-		a = p.parse(s2.serialize(in), ObjectMap.class);
+		in = OMap.ofJson("{' foo ': ' bar '}");
+		e = OMap.ofJson("{foo:'bar'}");
+		a = p.parse(s2.serialize(in), OMap.class);
 		assertEqualObjects(e, a);
-		a = p2.parse(s.serialize(in), ObjectMap.class);
+		a = p2.parse(s.serialize(in), OMap.class);
 		assertEqualObjects(e, a);
 
-		in = new ObjectList("[' foo ', {' foo ': ' bar '}]");
-		e = new ObjectList("['foo',{foo:'bar'}]");
-		a = p.parse(s2.serialize(in), ObjectList.class);
+		in = new OList("[' foo ', {' foo ': ' bar '}]");
+		e = new OList("['foo',{foo:'bar'}]");
+		a = p.parse(s2.serialize(in), OList.class);
 		assertEqualObjects(e, a);
-		a = p2.parse(s.serialize(in), ObjectList.class);
+		a = p2.parse(s.serialize(in), OList.class);
 		assertEqualObjects(e, a);
 
 		in = new A().init1();
@@ -74,22 +74,22 @@ public class RoundTripTrimStringsTest extends RoundTripTest {
 	public static class A {
 		public String f1;
 		public String[] f2;
-		public ObjectList f3;
-		public ObjectMap f4;
+		public OList f3;
+		public OMap f4;
 
 		public A init1() throws Exception {
 			f1 = " f1 ";
 			f2 = new String[]{" f2a ", " f2b "};
-			f3 = new ObjectList("[' f3a ',' f3b ']");
-			f4 = new ObjectMap("{' foo ':' bar '}");
+			f3 = OList.ofJson("[' f3a ',' f3b ']");
+			f4 = OMap.ofJson("{' foo ':' bar '}");
 			return this;
 		}
 
 		public A init2() throws Exception {
 			f1 = "f1";
 			f2 = new String[]{"f2a", "f2b"};
-			f3 = new ObjectList("['f3a','f3b']");
-			f4 = new ObjectMap("{'foo':'bar'}");
+			f3 = OList.ofJson("['f3a','f3b']");
+			f4 = OMap.ofJson("{'foo':'bar'}");
 			return this;
 		}
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
index b269fad..731acf8 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
@@ -686,31 +686,31 @@ public class ConfigTest {
 			"\t}"
 		);
 
-		Map a1 = c.getObjectWithDefault("a1", new ObjectMap(), Map.class);
+		Map a1 = c.getObjectWithDefault("a1", new OMap(), Map.class);
 		assertObjectEquals("{foo:123}", a1);
 		assertInstanceOf(String.class, a1.keySet().iterator().next());
 		assertInstanceOf(Integer.class, a1.values().iterator().next());
 
-		Map a1b = c.getObjectWithDefault("a1b", new ObjectMap(), Map.class);
+		Map a1b = c.getObjectWithDefault("a1b", new OMap(), Map.class);
 		assertObjectEquals("{}", a1b);
 
-		List a2a = c.getObjectWithDefault("a2", new ObjectList(), List.class);
+		List a2a = c.getObjectWithDefault("a2", new OList(), List.class);
 		assertObjectEquals("[{foo:123}]", a2a);
 		assertInstanceOf(String.class, ((Map)a2a.get(0)).keySet().iterator().next());
 		assertInstanceOf(Integer.class, ((Map)a2a.get(0)).values().iterator().next());
 
-		List a2b = c.getObjectWithDefault("a2b", new ObjectList(), List.class);
+		List a2b = c.getObjectWithDefault("a2b", new OList(), List.class);
 		assertObjectEquals("[]", a2b);
 
-		Map a3 = c.getObjectWithDefault("a3", new ObjectMap(), Map.class);
+		Map a3 = c.getObjectWithDefault("a3", new OMap(), Map.class);
 		assertObjectEquals("{}", a3);
 
-		Map a4a = c.getObjectWithDefault("a4", new ObjectMap(), Map.class);
+		Map a4a = c.getObjectWithDefault("a4", new OMap(), Map.class);
 		assertObjectEquals("{foo:123}", a4a);
 		assertInstanceOf(String.class, a4a.keySet().iterator().next());
 		assertInstanceOf(Integer.class, a4a.values().iterator().next());
 
-		Map a4b = c.getObjectWithDefault("a4b", new ObjectMap(), Map.class);
+		Map a4b = c.getObjectWithDefault("a4b", new OMap(), Map.class);
 		assertObjectEquals("{}", a4b);
 
 		ABean a4c = c.getObjectWithDefault("a4c", new ABean().init(), ABean.class);
@@ -733,31 +733,31 @@ public class ConfigTest {
 			"\t)"
 		);
 
-		Map a1 = c.getObjectWithDefault("a1", UonParser.DEFAULT, new ObjectMap(), Map.class);
+		Map a1 = c.getObjectWithDefault("a1", UonParser.DEFAULT, new OMap(), Map.class);
 		assertObjectEquals("{foo:123}", a1);
 		assertInstanceOf(String.class, a1.keySet().iterator().next());
 		assertInstanceOf(Integer.class, a1.values().iterator().next());
 
-		Map a1b = c.getObjectWithDefault("a1b", UonParser.DEFAULT, new ObjectMap(), Map.class);
+		Map a1b = c.getObjectWithDefault("a1b", UonParser.DEFAULT, new OMap(), Map.class);
 		assertObjectEquals("{}", a1b);
 
-		List a2a = c.getObjectWithDefault("a2", UonParser.DEFAULT, new ObjectList(), List.class);
+		List a2a = c.getObjectWithDefault("a2", UonParser.DEFAULT, new OList(), List.class);
 		assertObjectEquals("[{foo:123}]", a2a);
 		assertInstanceOf(String.class, ((Map)a2a.get(0)).keySet().iterator().next());
 		assertInstanceOf(Integer.class, ((Map)a2a.get(0)).values().iterator().next());
 
-		List a2b = c.getObjectWithDefault("a2b", UonParser.DEFAULT, new ObjectList(), List.class);
+		List a2b = c.getObjectWithDefault("a2b", UonParser.DEFAULT, new OList(), List.class);
 		assertObjectEquals("[]", a2b);
 
-		Map a3 = c.getObjectWithDefault("a3", UonParser.DEFAULT, new ObjectMap(), Map.class);
+		Map a3 = c.getObjectWithDefault("a3", UonParser.DEFAULT, new OMap(), Map.class);
 		assertObjectEquals("{}", a3);
 
-		Map a4a = c.getObjectWithDefault("a4", UonParser.DEFAULT, new ObjectMap(), Map.class);
+		Map a4a = c.getObjectWithDefault("a4", UonParser.DEFAULT, new OMap(), Map.class);
 		assertObjectEquals("{foo:123}", a4a);
 		assertInstanceOf(String.class, a4a.keySet().iterator().next());
 		assertInstanceOf(Integer.class, a4a.values().iterator().next());
 
-		Map a4b = c.getObjectWithDefault("a4b", UonParser.DEFAULT, new ObjectMap(), Map.class);
+		Map a4b = c.getObjectWithDefault("a4b", UonParser.DEFAULT, new OMap(), Map.class);
 		assertObjectEquals("{}", a4b);
 
 		ABean a4c = c.getObjectWithDefault("a4c", UonParser.DEFAULT, new ABean().init(), ABean.class);
@@ -795,7 +795,7 @@ public class ConfigTest {
 		List<ABean> a2b = c.getObjectWithDefault("a2b", new ArrayList<ABean>(), List.class, ABean.class);
 		assertObjectEquals("[]", a2b);
 
-		Map<String,Object> a3 = c.getObjectWithDefault("a3", new ObjectMap(), Map.class, String.class, Object.class);
+		Map<String,Object> a3 = c.getObjectWithDefault("a3", new OMap(), Map.class, String.class, Object.class);
 		assertObjectEquals("{}", a3);
 
 		Map<String,Integer> a4a = c.getObjectWithDefault("a4", new HashMap<String,Integer>(), Map.class, String.class, Integer.class);
@@ -841,7 +841,7 @@ public class ConfigTest {
 		List<ABean> a2b = c.getObjectWithDefault("a2b", UonParser.DEFAULT, new ArrayList<ABean>(), List.class, ABean.class);
 		assertObjectEquals("[]", a2b);
 
-		Map<String,Object> a3 = c.getObjectWithDefault("a3", UonParser.DEFAULT, new ObjectMap(), Map.class, String.class, Object.class);
+		Map<String,Object> a3 = c.getObjectWithDefault("a3", UonParser.DEFAULT, new OMap(), Map.class, String.class, Object.class);
 		assertObjectEquals("{}", a3);
 
 		Map<String,Integer> a4a = c.getObjectWithDefault("a4", UonParser.DEFAULT, new HashMap<String,Integer>(), Map.class, String.class, Integer.class);
@@ -1018,7 +1018,7 @@ public class ConfigTest {
 	}
 
 	//====================================================================================================
-	//	public ObjectMap getSectionAsMap(String section) throws ParseException {
+	//	public OMap getSectionAsMap(String section) throws ParseException {
 	//====================================================================================================
 	@Test
 	public void getSectionAsMap() throws Exception {
@@ -1126,7 +1126,7 @@ public class ConfigTest {
 	@Test
 	public void setSection2() throws Exception {
 		Config c = init();
-		ObjectMap m = new ObjectMap().append("a", "b");
+		OMap m = OMap.of("a", "b");
 
 		c.setSection("", Arrays.asList("#C1", "#C2"), m);
 		assertTextEquals("#C1|#C2||a = b|", c);
@@ -1595,7 +1595,7 @@ public class ConfigTest {
 		assertNull(cf.getSectionAsMap("B"));
 		assertObjectEquals("null", cf.getSectionAsMap("C"));
 
-		ObjectMap m = cf.getSectionAsMap("A");
+		OMap m = cf.getSectionAsMap("A");
 		assertObjectEquals("{a1:'1'}", m);
 
 		System.setProperty("X", "x");
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
index b759b75..2e43eb0 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
 
@@ -59,7 +60,7 @@ public class CognosXmlTest {
 			+ "</dataset>\n";
 
 		List<Object> rows = new LinkedList<>();
-		rows.add(new ObjectMap("{asOfDate:'Apr 26, 2002',rateOfReturn:0.21006642,famAcctIndex:'JA1',rowID:'F',brM:'B',productLineCode:1}"));
+		rows.add(OMap.ofJson("{asOfDate:'Apr 26, 2002',rateOfReturn:0.21006642,famAcctIndex:'JA1',rowID:'F',brM:'B',productLineCode:1}"));
 		rows.add(new Item("Apr 27, 2002", 0.1111111, "BBB", "G", "B", 2));
 
 		Column[] c = {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/swagger/SwaggerTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/swagger/SwaggerTest.java
index e46648e..0678aa2 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/swagger/SwaggerTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/dto/swagger/SwaggerTest.java
@@ -18,7 +18,6 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.json.*;
@@ -361,7 +360,7 @@ public class SwaggerTest {
 	public void testSetDefinitions() {
 		Swagger t = new Swagger();
 
-		t.setDefinitions(AMap.of("foo",new ObjectMap().append("type","bar")));
+		t.setDefinitions(AMap.of("foo",OMap.of("type","bar")));
 		assertObjectEquals("{foo:{type:'bar'}}", t.getDefinitions());
 		assertInstanceOf(Map.class, t.getDefinitions());
 
@@ -380,7 +379,7 @@ public class SwaggerTest {
 	public void testAddDefinitions() {
 		Swagger t = new Swagger();
 
-		t.addDefinitions(AMap.of("foo",new ObjectMap().append("type", "bar")));
+		t.addDefinitions(AMap.of("foo",OMap.of("type", "bar")));
 		assertObjectEquals("{foo:{type:'bar'}}", t.getDefinitions());
 		assertInstanceOf(Map.class, t.getDefinitions());
 
@@ -400,9 +399,9 @@ public class SwaggerTest {
 	public void testDefinition() {
 		Swagger t = new Swagger();
 
-		t.definition("a", new ObjectMap().append("type","a1"));
-		t.definition("b", (ObjectMap)null);
-		t.definition(null, new ObjectMap().append("type", "c1"));
+		t.definition("a", OMap.of("type","a1"));
+		t.definition("b", (OMap)null);
+		t.definition(null, OMap.of("type", "c1"));
 
 		assertObjectEquals("{a:{type:'a1'},b:null,null:{type:'c1'}}", t.getDefinitions());
 	}
@@ -875,7 +874,7 @@ public class SwaggerTest {
 		assertInstanceOf(List.class, t.get("consumes", Object.class));
 		assertInstanceOf(MediaType.class, t.get("consumes", List.class).get(0));
 		assertInstanceOf(Map.class, t.get("definitions", Object.class));
-		assertInstanceOf(ObjectMap.class, t.get("definitions", Map.class).values().iterator().next());
+		assertInstanceOf(OMap.class, t.get("definitions", Map.class).values().iterator().next());
 		assertInstanceOf(ExternalDocumentation.class, t.get("externalDocs", Object.class));
 		assertInstanceOf(String.class, t.get("host", Object.class));
 		assertInstanceOf(Info.class, t.get("info", Object.class));
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonParserTest.java
index b926bb2..945f406 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonParserTest.java
@@ -16,8 +16,8 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -54,9 +54,9 @@ public class CommonParserTest {
 		assertEquals(false, m.get("c"));
 
 		in = "<table _type='array'><tr><th>attribute</th></tr><tr><td><string>value</string></td></tr><tr><td><string>value</string></td></tr></table>";
-		ObjectList jl = (ObjectList)p.parse(in, Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("value", jl.getObjectMap(1).getString("attribute"));
+		OList jl = (OList)p.parse(in, Object.class);
+		assertEquals("value", jl.getMap(0).getString("attribute"));
+		assertEquals("value", jl.getMap(1).getString("attribute"));
 
 		A1 t1 = new A1();
 		A2 t2 = new A2();
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonTest.java
index f98f5a5..345ead1 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/CommonTest.java
@@ -19,7 +19,6 @@ import java.net.*;
 import java.net.URI;
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
@@ -308,8 +307,8 @@ public class CommonTest {
 		@Beanp(properties="f1") public Map<String,Integer> x2 = AMap.of("f1",3,"f2",4);
 		@Beanp(properties="f1") public E2[] x3 = {new E2()};
 		@Beanp(properties="f1") public List<E2> x4 = AList.of(new E2());
-		@Beanp(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",5).append("f2",6)};
-		@Beanp(properties="f1") public List<ObjectMap> x6 = AList.of(new ObjectMap().append("f1",7).append("f2",8));
+		@Beanp(properties="f1") public OMap[] x5 = {OMap.of("f1",5,"f2",6)};
+		@Beanp(properties="f1") public List<OMap> x6 = AList.of(OMap.of("f1",7,"f2",8));
 	}
 
 	public static class E2 {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java
index 0332904..fd78419 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java
@@ -19,6 +19,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.testutils.pojos.*;
 import org.junit.*;
@@ -331,7 +332,7 @@ public class HtmlTest {
 
 		Map m = new MyMap();
 		m.put("foo", "bar");
-		o = new ObjectList().append(m);
+		o = OList.of(m);
 		r = s.serialize(o);
 		assertEquals("<ul><li><table><tr><td>foo</td><td>bar</td></tr></table></li></ul>", r);
 	}
@@ -347,7 +348,7 @@ public class HtmlTest {
 
 		Map m = new MyMap2();
 		m.put("foo", "bar");
-		o = new ObjectList().append(m);
+		o = OList.of(m);
 		r = s.serialize(o);
 		assertEquals("<ul><li><table><tr><td>foo</td><td>bar</td></tr></table></li></ul>", r);
 	}
@@ -365,7 +366,7 @@ public class HtmlTest {
 		String r;
 
 		MyBean b = new MyBean();
-		o = new ObjectList().append(b,b);
+		o = OList.of(b,b);
 		r = s.serialize(o);
 		assertEquals("<table _type='array'><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>", r);
 	}
@@ -382,7 +383,7 @@ public class HtmlTest {
 		String r;
 
 		MyBean b = new MyBean();
-		o = new ObjectList().append(b,b);
+		o = OList.of(b,b);
 		r = s.serialize(o);
 		assertEquals("<table _type='array'><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>", r);
 	}
@@ -399,7 +400,7 @@ public class HtmlTest {
 		String r;
 
 		MyBean b = new MyBean();
-		o = new ObjectList().append(b,b);
+		o = OList.of(b,b);
 		r = s.serialize(o);
 		assertEquals("<table _type='array'><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>1</td><td>2</td><td>3</td></tr></table>", r);
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
index 64fe094..5974b2f 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartParserTest.java
@@ -19,7 +19,7 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.io.*;
 import java.util.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.oapi.*;
@@ -362,7 +362,7 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo,bar", List.class, Object.class));
 		Object o = p.parse(s, "foo,bar", Object.class);
 		assertObjectEquals("['foo','bar']", o);
-		assertClass(ObjectList.class, o);
+		assertClass(OList.class, o);
 		assertObjectEquals("['C2-foo','C2-bar']", p.parse(s, "foo,bar", C2[].class));
 		assertObjectEquals("['C2-foo','C2-bar']", p.parse(s, "foo,bar", List.class, C2.class));
 		assertEquals("C3-['foo','bar']", p.parse(s, "foo,bar", C3.class).toString());
@@ -379,7 +379,7 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("[['foo','bar'],['baz']]", p.parse(s, "foo,bar|baz", List.class, List.class, Object.class));
 		Object o = p.parse(s, "foo,bar|baz", Object.class);
 		assertObjectEquals("[['foo','bar'],['baz']]", o);
-		assertClass(ObjectList.class, o);
+		assertClass(OList.class, o);
 		assertObjectEquals("[['C2-foo','C2-bar'],['C2-baz']]", p.parse(s, "foo,bar|baz", C2[][].class));
 		assertObjectEquals("[['C2-foo','C2-bar'],['C2-baz']]", p.parse(s, "foo,bar|baz", List.class, C2[].class));
 		assertObjectEquals("[['C2-foo','C2-bar'],['C2-baz']]", p.parse(s, "foo,bar|baz", List.class, List.class, C2.class));
@@ -442,7 +442,7 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo,bar", List.class, Object.class));
 		assertObjectEquals("['D-foo','D-bar']", p.parse(s, "foo,bar", List.class, D.class));
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo,bar", Object.class));
-		assertObjectEquals("['foo','bar']", p.parse(s, "foo,bar", ObjectList.class));
+		assertObjectEquals("['foo','bar']", p.parse(s, "foo,bar", OList.class));
 	}
 
 	@Test
@@ -455,7 +455,7 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo|bar", List.class, Object.class));
 		assertObjectEquals("['D-foo','D-bar']", p.parse(s, "foo|bar", List.class, D.class));
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo|bar", Object.class));
-		assertObjectEquals("['foo','bar']", p.parse(s, "foo|bar", ObjectList.class));
+		assertObjectEquals("['foo','bar']", p.parse(s, "foo|bar", OList.class));
 	}
 
 	@Test
@@ -468,7 +468,7 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo bar", List.class, Object.class));
 		assertObjectEquals("['D-foo','D-bar']", p.parse(s, "foo bar", List.class, D.class));
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo bar", Object.class));
-		assertObjectEquals("['foo','bar']", p.parse(s, "foo bar", ObjectList.class));
+		assertObjectEquals("['foo','bar']", p.parse(s, "foo bar", OList.class));
 	}
 
 	@Test
@@ -481,7 +481,7 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo\tbar", List.class, Object.class));
 		assertObjectEquals("['D-foo','D-bar']", p.parse(s, "foo\tbar", List.class, D.class));
 		assertObjectEquals("['foo','bar']", p.parse(s, "foo\tbar", Object.class));
-		assertObjectEquals("['foo','bar']", p.parse(s, "foo\tbar", ObjectList.class));
+		assertObjectEquals("['foo','bar']", p.parse(s, "foo\tbar", OList.class));
 	}
 
 	@Test
@@ -494,7 +494,7 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("['foo','bar']", p.parse(s, "@(foo,bar)", List.class, Object.class));
 		assertObjectEquals("['D-foo','D-bar']", p.parse(s, "@(foo,bar)", List.class, D.class));
 		assertObjectEquals("['foo','bar']", p.parse(s, "@(foo,bar)", Object.class));
-		assertObjectEquals("['foo','bar']", p.parse(s, "@(foo,bar)", ObjectList.class));
+		assertObjectEquals("['foo','bar']", p.parse(s, "@(foo,bar)", OList.class));
 	}
 
 	@Test
@@ -1022,10 +1022,10 @@ public class OpenApiPartParserTest {
 	public void h01_objectType() throws Exception {
 		HttpPartSchema s = HttpPartSchema.create().type("object").build();
 		assertObjectEquals("{f:1}", p.parse(s, "(f=1)", H1.class));
-		assertObjectEquals("{f:1}", p.parse(s, "(f=1)", ObjectMap.class));
+		assertObjectEquals("{f:1}", p.parse(s, "(f=1)", OMap.class));
 		Object o = p.parse(s, "(f=1)", Object.class);
 		assertObjectEquals("{f:1}", o);
-		assertClass(ObjectMap.class, o);
+		assertClass(OMap.class, o);
 	}
 
 	@Test
@@ -1033,13 +1033,13 @@ public class OpenApiPartParserTest {
 		HttpPartSchema s = schema("array").format("uon").items(schema("object")).build();
 		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", H1[].class));
 		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", List.class, H1.class));
-		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", ObjectMap[].class));
-		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", List.class, ObjectMap.class));
+		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", OMap[].class));
+		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", List.class, OMap.class));
 		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", Object[].class));
 		assertObjectEquals("[{f:1},{f:2}]", p.parse(s, "@((f=1),(f=2))", List.class, Object.class));
 		Object o = p.parse(s, "@((f=1),(f=2))", Object.class);
 		assertObjectEquals("[{f:1},{f:2}]", o);
-		assertClass(ObjectList.class, o);
+		assertClass(OList.class, o);
 	}
 
 	@Test
@@ -1048,15 +1048,15 @@ public class OpenApiPartParserTest {
 		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", H1[][].class));
 		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, H1[].class));
 		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, List.class, H1.class));
-		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", ObjectMap[][].class));
-		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, ObjectMap[].class));
-		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, List.class, ObjectMap.class));
+		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", OMap[][].class));
+		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, OMap[].class));
+		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, List.class, OMap.class));
 		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", Object[][].class));
 		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, Object[].class));
 		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", List.class, List.class, Object.class));
 		Object o =  p.parse(s, "@(@((f=1),(f=2)),@((f=3)))", Object.class);
 		assertObjectEquals("[[{f:1},{f:2}],[{f:3}]]", o);
-		assertClass(ObjectList.class, o);
+		assertClass(OList.class, o);
 	}
 
 	public static class H2 {
@@ -1098,7 +1098,7 @@ public class OpenApiPartParserTest {
 		assertClass(Boolean.class, h2.f12);
 		assertClass(Integer.class, h2.f99);
 
-		ObjectMap om = p.parse(s, in, ObjectMap.class);
+		OMap om = p.parse(s, in, OMap.class);
 		assertObjectEquals("{f01:'foo',f02:[102,111,111],f04:'2012-12-21T12:34:56Z',f05:[102,111,111],f06:[102,111,111],f07:'foo',f08:1,f09:1,f10:1.0,f11:1.0,f12:true,f99:1}", om);
 		assertClass(String.class, om.get("f01"));
 		assertClass(byte[].class, om.get("f02"));
@@ -1113,7 +1113,7 @@ public class OpenApiPartParserTest {
 		assertClass(Boolean.class, om.get("f12"));
 		assertClass(Integer.class, om.get("f99"));
 
-		om = (ObjectMap)p.parse(s, in, Object.class);
+		om = (OMap)p.parse(s, in, Object.class);
 		assertObjectEquals("{f01:'foo',f02:[102,111,111],f04:'2012-12-21T12:34:56Z',f05:[102,111,111],f06:[102,111,111],f07:'foo',f08:1,f09:1,f10:1.0,f11:1.0,f12:true,f99:1}", om);
 		assertClass(String.class, om.get("f01"));
 		assertClass(byte[].class, om.get("f02"));
@@ -1152,10 +1152,10 @@ public class OpenApiPartParserTest {
 		H2 h2 = p.parse(s, in, H2.class);
 		assertObjectEquals("{f01:['foo'],f02:[[102,111,111]],f04:['2012-12-21T12:34:56Z'],f05:[[102,111,111]],f06:[[102,111,111]],f07:['foo'],f08:[1],f09:[1],f10:[1.0],f11:[1.0],f12:[true],f99:[1]}", h2);
 
-		ObjectMap om = p.parse(s, in, ObjectMap.class);
+		OMap om = p.parse(s, in, OMap.class);
 		assertObjectEquals("{f01:['foo'],f02:[[102,111,111]],f04:['2012-12-21T12:34:56Z'],f05:[[102,111,111]],f06:[[102,111,111]],f07:['foo'],f08:[1],f09:[1],f10:[1.0],f11:[1.0],f12:[true],f99:[1]}", om);
 
-		om = (ObjectMap)p.parse(s, in, Object.class);
+		om = (OMap)p.parse(s, in, Object.class);
 		assertObjectEquals("{f01:['foo'],f02:[[102,111,111]],f04:['2012-12-21T12:34:56Z'],f05:[[102,111,111]],f06:[[102,111,111]],f07:['foo'],f08:[1],f09:[1],f10:[1.0],f11:[1.0],f12:[true],f99:[1]}", om);
 	}
 
@@ -1182,10 +1182,10 @@ public class OpenApiPartParserTest {
 		H2 h2 = p.parse(s, in, H2.class);
 		assertObjectEquals("{f01:['foo','bar'],f02:[[102,111,111],[98,97,114]],f04:['2012-12-21T12:34:56Z','2012-12-21T12:34:56Z'],f05:[[102,111,111],[98,97,114]],f06:[[102,111,111],[98,97,114]],f07:['foo','bar'],f08:[1,2],f09:[1,2],f10:[1.0,2.0],f11:[1.0,2.0],f12:[true,true],f99:[1,2]}", h2);
 
-		ObjectMap om = p.parse(s, in, ObjectMap.class);
+		OMap om = p.parse(s, in, OMap.class);
 		assertObjectEquals("{f01:['foo','bar'],f02:[[102,111,111],[98,97,114]],f04:['2012-12-21T12:34:56Z','2012-12-21T12:34:56Z'],f05:[[102,111,111],[98,97,114]],f06:[[102,111,111],[98,97,114]],f07:['foo','bar'],f08:[1,2],f09:[1,2],f10:[1.0,2.0],f11:[1.0,2.0],f12:[true,true],f99:[1,2]}", om);
 
-		om = (ObjectMap)p.parse(s, in, Object.class);
+		om = (OMap)p.parse(s, in, Object.class);
 		assertObjectEquals("{f01:['foo','bar'],f02:[[102,111,111],[98,97,114]],f04:['2012-12-21T12:34:56Z','2012-12-21T12:34:56Z'],f05:[[102,111,111],[98,97,114]],f06:[[102,111,111],[98,97,114]],f07:['foo','bar'],f08:[1,2],f09:[1,2],f10:[1.0,2.0],f11:[1.0,2.0],f12:[true,true],f99:[1,2]}", om);
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java
index b479ba8..599c69e 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/OpenApiPartSerializerTest.java
@@ -18,7 +18,6 @@ import static org.apache.juneau.internal.StringUtils.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.oapi.*;
@@ -365,7 +364,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("foo,bar,null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo,bar,null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo,bar,null,null", s.serialize(ps, AList.of(new D("foo"),new D("bar"),new D(null),null)));
-		assertEquals("foo,bar,null", s.serialize(ps, new ObjectList().append("foo","bar",null)));
+		assertEquals("foo,bar,null", s.serialize(ps, OList.of("foo","bar",null)));
 
 		assertEquals("foo\\,bar,null", s.serialize(ps, new String[]{"foo,bar",null}));
 	}
@@ -379,7 +378,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("foo|bar|null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo|bar|null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo|bar|null|null", s.serialize(ps, AList.of(new D("foo"),new D("bar"),new D(null),null)));
-		assertEquals("foo|bar|null", s.serialize(ps, new ObjectList().append("foo","bar",null)));
+		assertEquals("foo|bar|null", s.serialize(ps, OList.of("foo","bar",null)));
 	}
 
 	@Test
@@ -391,7 +390,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("foo bar null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo bar null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo bar null null", s.serialize(ps, AList.of(new D("foo"),new D("bar"),new D(null),null)));
-		assertEquals("foo bar null", s.serialize(ps, new ObjectList().append("foo","bar",null)));
+		assertEquals("foo bar null", s.serialize(ps, OList.of("foo","bar",null)));
 	}
 
 	@Test
@@ -403,7 +402,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("foo\tbar\tnull", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo\tbar\tnull", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo\tbar\tnull\tnull", s.serialize(ps, AList.of(new D("foo"),new D("bar"),new D(null),null)));
-		assertEquals("foo\tbar\tnull", s.serialize(ps, new ObjectList().append("foo","bar",null)));
+		assertEquals("foo\tbar\tnull", s.serialize(ps, OList.of("foo","bar",null)));
 	}
 
 	@Test
@@ -415,7 +414,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("@(foo,bar,'null',null)", s.serialize(ps, AList.of("foo","bar","null",null)));
 		assertEquals("@(foo,bar,'null',null)", s.serialize(ps, AList.of("foo","bar","null",null)));
 		assertEquals("@(foo,bar,'null',null)", s.serialize(ps, AList.of(new D("foo"),new D("bar"),new D("null"),null)));
-		assertEquals("@(foo,bar,'null',null)", s.serialize(ps, new ObjectList().append("foo","bar","null",null)));
+		assertEquals("@(foo,bar,'null',null)", s.serialize(ps, OList.of("foo","bar","null",null)));
 	}
 
 	@Test
@@ -427,7 +426,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("foo,bar,null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo,bar,null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo,bar,null,null", s.serialize(ps, AList.of(new D("foo"),new D("bar"),new D(null),null)));
-		assertEquals("foo,bar,null", s.serialize(ps, new ObjectList().append("foo","bar",null)));
+		assertEquals("foo,bar,null", s.serialize(ps, OList.of("foo","bar",null)));
 	}
 
 	@Test
@@ -440,7 +439,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("foo,bar,null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo,bar,null", s.serialize(ps, AList.of("foo","bar",null)));
 		assertEquals("foo,bar,null,null", s.serialize(ps, AList.of(new D("foo"),new D("bar"),new D(null),null)));
-		assertEquals("foo,bar,null", s.serialize(ps, new ObjectList().append("foo","bar",null)));
+		assertEquals("foo,bar,null", s.serialize(ps, OList.of("foo","bar",null)));
 	}
 
 	@Test
@@ -919,8 +918,8 @@ public class OpenApiPartSerializerTest {
 		HttpPartSchema ps = schema("object").build();
 		assertEquals("(f1='1',f2=2,f3=true)", s.serialize(ps, new H1("1",2,true)));
 		assertEquals("()", s.serialize(ps, new H1(null,null,null)));
-		assertEquals("(f1='1',f2=2,f3=true)", s.serialize(ps, new ObjectMap("{f1:'1',f2:2,f3:true}")));
-		assertEquals("(f1=null,f2=null,f3=null)", s.serialize(ps, new ObjectMap("{f1:null,f2:null,f3:null}")));
+		assertEquals("(f1='1',f2=2,f3=true)", s.serialize(ps, OMap.ofJson("{f1:'1',f2:2,f3:true}")));
+		assertEquals("(f1=null,f2=null,f3=null)", s.serialize(ps, OMap.ofJson("{f1:null,f2:null,f3:null}")));
 		assertEquals("null", s.serialize(ps, null));
 	}
 
@@ -929,8 +928,8 @@ public class OpenApiPartSerializerTest {
 		HttpPartSchema ps = schema("object","uon").build();
 		assertEquals("(f1='1',f2=2,f3=true)", s.serialize(ps, new H1("1",2,true)));
 		assertEquals("()", s.serialize(ps, new H1(null,null,null)));
-		assertEquals("(f1='1',f2=2,f3=true)", s.serialize(ps, new ObjectMap("{f1:'1',f2:2,f3:true}")));
-		assertEquals("(f1=null,f2=null,f3=null)", s.serialize(ps, new ObjectMap("{f1:null,f2:null,f3:null}")));
+		assertEquals("(f1='1',f2=2,f3=true)", s.serialize(ps, OMap.ofJson("{f1:'1',f2:2,f3:true}")));
+		assertEquals("(f1=null,f2=null,f3=null)", s.serialize(ps, OMap.ofJson("{f1:null,f2:null,f3:null}")));
 		assertEquals("null", s.serialize(ps, null));
 	}
 
@@ -939,10 +938,10 @@ public class OpenApiPartSerializerTest {
 		HttpPartSchema ps = schema("array").items(schema("object")).build();
 		assertEquals("(f1='1'\\,f2=2\\,f3=true),(),null", s.serialize(ps, new H1[]{new H1("1",2,true),new H1(null,null,null),null}));
 		assertEquals("(f1='1'\\,f2=2\\,f3=true),(),null", s.serialize(ps, AList.of(new H1("1",2,true),new H1(null,null,null),null)));
-		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1=null\\,f2=null\\,f3=null),null", s.serialize(ps, new ObjectMap[]{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:null,f2:null,f3:null}"),null}));
-		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1=null\\,f2=null\\,f3=null),null", s.serialize(ps, AList.of(new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:null,f2:null,f3:null}"),null)));
-		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1='1'\\,f2=2\\,f3=true),null", s.serialize(ps, new Object[]{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}"),null}));
-		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1='1'\\,f2=2\\,f3=true),null", s.serialize(ps, AList.of(new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}"),null)));
+		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1=null\\,f2=null\\,f3=null),null", s.serialize(ps, new OMap[]{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:null,f2:null,f3:null}"),null}));
+		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1=null\\,f2=null\\,f3=null),null", s.serialize(ps, AList.of(OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:null,f2:null,f3:null}"),null)));
+		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1='1'\\,f2=2\\,f3=true),null", s.serialize(ps, new Object[]{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}"),null}));
+		assertEquals("(f1='1'\\,f2=2\\,f3=true),(f1='1'\\,f2=2\\,f3=true),null", s.serialize(ps, AList.of(new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}"),null)));
 	}
 
 	@Test
@@ -950,10 +949,10 @@ public class OpenApiPartSerializerTest {
 		HttpPartSchema ps = schema("array").collectionFormat("pipes").items(schema("object")).build();
 		assertEquals("(f1='1',f2=2,f3=true)|()|null", s.serialize(ps, new H1[]{new H1("1",2,true),new H1(null,null,null),null}));
 		assertEquals("(f1='1',f2=2,f3=true)|()|null", s.serialize(ps, AList.of(new H1("1",2,true),new H1(null,null,null),null)));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1=null,f2=null,f3=null)|null", s.serialize(ps, new ObjectMap[]{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:null,f2:null,f3:null}"),null}));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1=null,f2=null,f3=null)|null", s.serialize(ps, AList.of(new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:null,f2:null,f3:null}"),null)));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true)|null", s.serialize(ps, new Object[]{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}"),null}));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true)|null", s.serialize(ps, AList.of(new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}"),null)));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1=null,f2=null,f3=null)|null", s.serialize(ps, new OMap[]{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:null,f2:null,f3:null}"),null}));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1=null,f2=null,f3=null)|null", s.serialize(ps, AList.of(OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:null,f2:null,f3:null}"),null)));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true)|null", s.serialize(ps, new Object[]{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}"),null}));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true)|null", s.serialize(ps, AList.of(new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}"),null)));
 	}
 
 	@Test
@@ -961,10 +960,10 @@ public class OpenApiPartSerializerTest {
 		HttpPartSchema ps = schema("array").collectionFormat("uon").items(schema("object")).build();
 		assertEquals("@((f1='1',f2=2,f3=true),(),null)", s.serialize(ps, new H1[]{new H1("1",2,true),new H1(null,null,null),null}));
 		assertEquals("@((f1='1',f2=2,f3=true),(),null)", s.serialize(ps, AList.of(new H1("1",2,true),new H1(null,null,null),null)));
-		assertEquals("@((f1='1',f2=2,f3=true),(f1=null,f2=null,f3=null),null)", s.serialize(ps, new ObjectMap[]{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:null,f2:null,f3:null}"),null}));
-		assertEquals("@((f1='1',f2=2,f3=true),(f1=null,f2=null,f3=null),null)", s.serialize(ps, AList.of(new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:null,f2:null,f3:null}"),null)));
-		assertEquals("@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true),null)", s.serialize(ps, new Object[]{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}"),null}));
-		assertEquals("@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true),null)", s.serialize(ps, AList.of(new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}"),null)));
+		assertEquals("@((f1='1',f2=2,f3=true),(f1=null,f2=null,f3=null),null)", s.serialize(ps, new OMap[]{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:null,f2:null,f3:null}"),null}));
+		assertEquals("@((f1='1',f2=2,f3=true),(f1=null,f2=null,f3=null),null)", s.serialize(ps, AList.of(OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:null,f2:null,f3:null}"),null)));
+		assertEquals("@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true),null)", s.serialize(ps, new Object[]{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}"),null}));
+		assertEquals("@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true),null)", s.serialize(ps, AList.of(new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}"),null)));
 	}
 
 	@Test
@@ -973,12 +972,12 @@ public class OpenApiPartSerializerTest {
 		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=3\\\\\\,f3=false),()\\,null,null", s.serialize(ps, new H1[][]{{new H1("1",2,true),new H1("x",3,false)},{new H1(null,null,null),null},null}));
 		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=3\\\\\\,f3=false),()\\,null,null", s.serialize(ps, AList.of(new H1[]{new H1("1",2,true),new H1("x",3,false)},new H1[]{new H1(null,null,null),null},null)));
 		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=3\\\\\\,f3=false),()\\,null,null", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),new H1("x",3,false)),AList.of(new H1(null,null,null),null),null)));
-		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=4\\\\\\,f3=false),(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, new ObjectMap[][]{{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")},{new ObjectMap("{f1:null,f2:null,f3:null}"),null},null}));
-		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=4\\\\\\,f3=false),(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(new ObjectMap[]{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")},new ObjectMap[]{new ObjectMap("{f1:null,f2:null,f3:null}"),null},null)));
-		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=4\\\\\\,f3=false),(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(AList.of(new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")),AList.of(new ObjectMap("{f1:null,f2:null,f3:null}"),null),null)));
-		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1='1'\\\\\\,f2=2\\\\\\,f3=true),()\\,(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, new Object[][]{{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")},{new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null},null}));
-		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1='1'\\\\\\,f2=2\\\\\\,f3=true),()\\,(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(new Object[]{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")},new Object[]{new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null},null)));
-		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1='1'\\\\\\,f2=2\\\\\\,f3=true),()\\,(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")),AList.of(new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null),null)));
+		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=4\\\\\\,f3=false),(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, new OMap[][]{{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")},{OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null}));
+		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=4\\\\\\,f3=false),(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(new OMap[]{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")},new OMap[]{OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null)));
+		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1=x\\\\\\,f2=4\\\\\\,f3=false),(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(AList.of(OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")),AList.of(OMap.ofJson("{f1:null,f2:null,f3:null}"),null),null)));
+		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1='1'\\\\\\,f2=2\\\\\\,f3=true),()\\,(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, new Object[][]{{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")},{new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null}));
+		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1='1'\\\\\\,f2=2\\\\\\,f3=true),()\\,(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(new Object[]{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")},new Object[]{new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null)));
+		assertEquals("(f1='1'\\\\\\,f2=2\\\\\\,f3=true)\\,(f1='1'\\\\\\,f2=2\\\\\\,f3=true),()\\,(f1=null\\\\\\,f2=null\\\\\\,f3=null)\\,null,null", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")),AList.of(new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null),null)));
 	}
 
 	@Test
@@ -987,12 +986,12 @@ public class OpenApiPartSerializerTest {
 		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=3,f3=false) ()|null null", s.serialize(ps, new H1[][]{{new H1("1",2,true),new H1("x",3,false)},{new H1(null,null,null),null},null}));
 		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=3,f3=false) ()|null null", s.serialize(ps, AList.of(new H1[]{new H1("1",2,true),new H1("x",3,false)},new H1[]{new H1(null,null,null),null},null)));
 		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=3,f3=false) ()|null null", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),new H1("x",3,false)),AList.of(new H1(null,null,null),null),null)));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=4,f3=false) (f1=null,f2=null,f3=null)|null null", s.serialize(ps, new ObjectMap[][]{{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")},{new ObjectMap("{f1:null,f2:null,f3:null}"),null},null}));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=4,f3=false) (f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(new ObjectMap[]{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")},new ObjectMap[]{new ObjectMap("{f1:null,f2:null,f3:null}"),null},null)));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=4,f3=false) (f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(AList.of(new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")),AList.of(new ObjectMap("{f1:null,f2:null,f3:null}"),null),null)));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true) ()|(f1=null,f2=null,f3=null)|null null", s.serialize(ps, new Object[][]{{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")},{new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null},null}));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true) ()|(f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(new Object[]{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")},new Object[]{new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null},null)));
-		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true) ()|(f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")),AList.of(new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null),null)));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=4,f3=false) (f1=null,f2=null,f3=null)|null null", s.serialize(ps, new OMap[][]{{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")},{OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null}));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=4,f3=false) (f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(new OMap[]{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")},new OMap[]{OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null)));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1=x,f2=4,f3=false) (f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(AList.of(OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")),AList.of(OMap.ofJson("{f1:null,f2:null,f3:null}"),null),null)));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true) ()|(f1=null,f2=null,f3=null)|null null", s.serialize(ps, new Object[][]{{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")},{new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null}));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true) ()|(f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(new Object[]{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")},new Object[]{new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null)));
+		assertEquals("(f1='1',f2=2,f3=true)|(f1='1',f2=2,f3=true) ()|(f1=null,f2=null,f3=null)|null null", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")),AList.of(new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null),null)));
 	}
 
 	@Test
@@ -1001,12 +1000,12 @@ public class OpenApiPartSerializerTest {
 		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=3,f3=false)),@((),null),null)", s.serialize(ps, new H1[][]{{new H1("1",2,true),new H1("x",3,false)},{new H1(null,null,null),null},null}));
 		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=3,f3=false)),@((),null),null)", s.serialize(ps, AList.of(new H1[]{new H1("1",2,true),new H1("x",3,false)},new H1[]{new H1(null,null,null),null},null)));
 		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=3,f3=false)),@((),null),null)", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),new H1("x",3,false)),AList.of(new H1(null,null,null),null),null)));
-		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=4,f3=false)),@((f1=null,f2=null,f3=null),null),null)", s.serialize(ps, new ObjectMap[][]{{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")},{new ObjectMap("{f1:null,f2:null,f3:null}"),null},null}));
-		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=4,f3=false)),@((f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(new ObjectMap[]{new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")},new ObjectMap[]{new ObjectMap("{f1:null,f2:null,f3:null}"),null},null)));
-		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=4,f3=false)),@((f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(AList.of(new ObjectMap("{f1:'1',f2:2,f3:true}"),new ObjectMap("{f1:'x',f2:4,f3:false}")),AList.of(new ObjectMap("{f1:null,f2:null,f3:null}"),null),null)));
-		assertEquals("@(@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true)),@((),(f1=null,f2=null,f3=null),null),null)", s.serialize(ps, new Object[][]{{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")},{new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null},null}));
-		assertEquals("@(@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true)),@((),(f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(new Object[]{new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")},new Object[]{new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null},null)));
-		assertEquals("@(@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true)),@((),(f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),new ObjectMap("{f1:'1',f2:2,f3:true}")),AList.of(new H1(null,null,null),new ObjectMap("{f1:null,f2:null,f3:null}"),null),null)));
+		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=4,f3=false)),@((f1=null,f2=null,f3=null),null),null)", s.serialize(ps, new OMap[][]{{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")},{OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null}));
+		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=4,f3=false)),@((f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(new OMap[]{OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")},new OMap[]{OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null)));
+		assertEquals("@(@((f1='1',f2=2,f3=true),(f1=x,f2=4,f3=false)),@((f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(AList.of(OMap.ofJson("{f1:'1',f2:2,f3:true}"),OMap.ofJson("{f1:'x',f2:4,f3:false}")),AList.of(OMap.ofJson("{f1:null,f2:null,f3:null}"),null),null)));
+		assertEquals("@(@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true)),@((),(f1=null,f2=null,f3=null),null),null)", s.serialize(ps, new Object[][]{{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")},{new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null}));
+		assertEquals("@(@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true)),@((),(f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(new Object[]{new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")},new Object[]{new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null},null)));
+		assertEquals("@(@((f1='1',f2=2,f3=true),(f1='1',f2=2,f3=true)),@((),(f1=null,f2=null,f3=null),null),null)", s.serialize(ps, AList.of(AList.of(new H1("1",2,true),OMap.ofJson("{f1:'1',f2:2,f3:true}")),AList.of(new H1(null,null,null),OMap.ofJson("{f1:null,f2:null,f3:null}"),null),null)));
 	}
 
 	public static class H2 {
@@ -1054,7 +1053,7 @@ public class OpenApiPartSerializerTest {
 		assertEquals("null", s.serialize(ps, null));
 		assertEquals(
 			"(f01=foo,f02=Zm9v,f04=2012-12-21T12:34:56Z,f05=666F6F,f06='66 6F 6F',f07=foo,f08=1,f09=2,f10=1.0,f11=1.0,f12=true,f99=1)",
-			s.serialize(ps, new ObjectMap().append("f01","foo").append("f02",foob).append("f04",parseIsoCalendar("2012-12-21T12:34:56Z")).append("f05",foob).append("f06",foob).append("f07","foo").append("f08",1).append("f09",2).append("f10",1.0).append("f11",1.0).append("f12",true).append("f99",1))
+			s.serialize(ps, OMap.of("f01","foo","f02",foob,"f04",parseIsoCalendar("2012-12-21T12:34:56Z"),"f05",foob,"f06",foob,"f07","foo","f08",1,"f09",2,"f10",1.0,"f11",1.0,"f12",true,"f99",1))
 		);
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/UonPartParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/UonPartParserTest.java
index 5f5d169..e9de492 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/UonPartParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/httppart/UonPartParserTest.java
@@ -17,6 +17,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.uon.*;
 import org.junit.*;
@@ -272,10 +273,10 @@ public class UonPartParserTest {
 	}
 
 	@Test
-	public void testParseParameterObjectMap() throws Exception {
+	public void testParseParameterOMap() throws Exception {
 		String in = "(name='foo bar')";
 
-		ObjectMap r =  UonParser.DEFAULT.createSession().parse(null, in, BeanContext.DEFAULT.createSession().getClassMeta(ObjectMap.class));
+		OMap r =  UonParser.DEFAULT.createSession().parse(null, in, BeanContext.DEFAULT.createSession().getClassMeta(OMap.class));
 
 		assertEquals("{name:'foo bar'}", SimpleJsonSerializer.DEFAULT.toString(r));
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonParserTest.java
index 0299854..7a3f2d7 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonParserTest.java
@@ -17,8 +17,8 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -89,9 +89,9 @@ public class CommonParserTest {
 		assertEquals(12345, m.get("zip"));
 
 		in = wrap("<rdf:Seq><rdf:li rdf:parseType='Resource'><jp:attribute>value</jp:attribute></rdf:li><rdf:li rdf:parseType='Resource'><jp:attribute>value</jp:attribute></rdf:li></rdf:Seq>");
-		ObjectList jl = (ObjectList)p.parse(in, Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("value", jl.getObjectMap(1).getString("attribute"));
+		OList jl = (OList)p.parse(in, Object.class);
+		assertEquals("value", jl.getMap(0).getString("attribute"));
+		assertEquals("value", jl.getMap(1).getString("attribute"));
 
 		// Verify that all the following return null.
 		assertNull(p.parse((CharSequence)null, Object.class));
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonTest.java
index dd1ca0c..16a2477 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/CommonTest.java
@@ -20,7 +20,6 @@ import java.net.*;
 import java.net.URI;
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.jena.annotation.*;
@@ -217,8 +216,8 @@ public class CommonTest {
 		@Beanp(properties="f1") public Map<String,Integer> x2;
 		@Beanp(properties="f1") public E2[] x3;
 		@Beanp(properties="f1") public List<E2> x4;
-		@Beanp(properties="f1") public ObjectMap[] x5;
-		@Beanp(properties="f1") public List<ObjectMap> x6;
+		@Beanp(properties="f1") public OMap[] x5;
+		@Beanp(properties="f1") public List<OMap> x6;
 
 		public static E1 create() {
 			E1 t = new E1();
@@ -226,8 +225,8 @@ public class CommonTest {
 			t.x2 = AMap.of("f1",1,"f2",2);
 			t.x3 = new E2[] {new E2()};
 			t.x4 = AList.of(new E2());
-			t.x5 = new ObjectMap[] {new ObjectMap().append("f1","1").append("f2","2")};
-			t.x6 = AList.of(new ObjectMap().append("f1","1").append("f2","2"));
+			t.x5 = new OMap[] {OMap.of("f1","1","f2","2")};
+			t.x6 = AList.of(OMap.of("f1","1","f2","2"));
 			return t;
 		}
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfParserTest.java
index bc23d8d..5e15028 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jena/RdfParserTest.java
@@ -21,7 +21,7 @@ import java.time.*;
 import java.time.format.*;
 import java.util.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jena.annotation.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.testutils.*;
@@ -82,7 +82,7 @@ public class RdfParserTest {
 
 		assertEqualObjects(a, a2);
 
-		ObjectMap m = RdfXmlParser.DEFAULT.parse(rdfXml, ObjectMap.class);
+		OMap m = RdfXmlParser.DEFAULT.parse(rdfXml, OMap.class);
 		String json = SimpleJsonSerializer.DEFAULT_READABLE.serialize(m);
 
 		String e = ""
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java
index 04c7923..f170019 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonParserTest.java
@@ -16,8 +16,8 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -57,9 +57,9 @@ public class CommonParserTest {
 		assertEquals("street A", m.get("street"));
 		assertEquals(12345, m.get("zip"));
 
-		ObjectList jl = (ObjectList)p.parse("[{attribute:'value'},{attribute:'value'}]", Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("value", jl.getObjectMap(1).getString("attribute"));
+		OList jl = (OList)p.parse("[{attribute:'value'},{attribute:'value'}]", Object.class);
+		assertEquals("value", jl.getMap(0).getString("attribute"));
+		assertEquals("value", jl.getMap(1).getString("attribute"));
 
 		// Verify that all the following return null.
 		assertNull(p.parse((CharSequence)null, Object.class));
@@ -71,9 +71,9 @@ public class CommonParserTest {
 		assertNull(p.parse("   //foo   ", Object.class));
 
 		try {
-			jl = (ObjectList)p.parse("[{attribute:'value'},{attribute:'value'}]", Object.class);
-			assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-			assertEquals("value", jl.getObjectMap(1).getString("attribute"));
+			jl = (OList)p.parse("[{attribute:'value'},{attribute:'value'}]", Object.class);
+			assertEquals("value", jl.getMap(0).getString("attribute"));
+			assertEquals("value", jl.getMap(1).getString("attribute"));
 		} catch (Exception e) {
 			fail(e.getLocalizedMessage());
 		}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonTest.java
index fbdd7ee..1843a81 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/CommonTest.java
@@ -19,7 +19,6 @@ import java.net.*;
 import java.net.URI;
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.junit.*;
@@ -199,8 +198,8 @@ public class CommonTest {
 		@Beanp(properties="f1") public Map<String,Integer> x2 = AMap.of("f1",1,"f2",2);
 		@Beanp(properties="f1") public E2[] x3 = {new E2()};
 		@Beanp(properties="f1") public List<E2> x4 = AList.of(new E2());
-		@Beanp(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f2",2)};
-		@Beanp(properties="f1") public List<ObjectMap> x6 = AList.of(new ObjectMap().append("f1",1).append("f2",2));
+		@Beanp(properties="f1") public OMap[] x5 = {OMap.of("f1",1,"f2",2)};
+		@Beanp(properties="f1") public List<OMap> x6 = AList.of(OMap.of("f1",1,"f2",2));
 	}
 
 	public static class E2 {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonParserTest.java
index b7ee759..3c13525 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonParserTest.java
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 import java.io.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -43,7 +44,7 @@ public class JsonParserTest {
 	@Test
 	public void testNonExistentAttribute() throws Exception {
 		String json = "{foo:,bar:}";
-		ObjectMap m = p.parse(json, ObjectMap.class);
+		OMap m = p.parse(json, OMap.class);
 		assertEquals("{foo:null,bar:null}", m.toString());
 	}
 
@@ -117,7 +118,7 @@ public class JsonParserTest {
 		// Missing attribute values.
 		String json = "{\"foo\":,\"bar\":}";
 		try {
-			p.parse(json, ObjectMap.class);
+			p.parse(json, OMap.class);
 			fail("Exception expected");
 		} catch (ParseException e) {
 			assertTrue(e.getRootCause().getMessage().contains("Missing value detected."));
@@ -126,7 +127,7 @@ public class JsonParserTest {
 		// Single quoted values.
 		json = "{\"foo\":'bar'}";
 		try {
-			p.parse(json, ObjectMap.class);
+			p.parse(json, OMap.class);
 			fail("Exception expected");
 		} catch (ParseException e) {
 			assertTrue(e.getRootCause().getMessage().contains("Invalid quote character"));
@@ -135,7 +136,7 @@ public class JsonParserTest {
 		// Single quoted attribute name.
 		json = "{'foo':\"bar\"}";
 		try {
-			p.parse(json, ObjectMap.class);
+			p.parse(json, OMap.class);
 			fail("Exception expected");
 		} catch (ParseException e) {
 			assertTrue(e.getRootCause().getMessage().contains("Invalid quote character"));
@@ -144,7 +145,7 @@ public class JsonParserTest {
 		// Unquoted attribute name.
 		json = "{foo:\"bar\"}";
 		try {
-			p.parse(json, ObjectMap.class);
+			p.parse(json, OMap.class);
 			fail("Exception expected");
 		} catch (ParseException e) {
 			assertTrue(e.getRootCause().getMessage().contains("Unquoted attribute detected."));
@@ -153,7 +154,7 @@ public class JsonParserTest {
 		// Concatenated string
 		json = "{\"foo\":\"bar\"+\"baz\"}";
 		try {
-			p.parse(json, ObjectMap.class);
+			p.parse(json, OMap.class);
 			fail("Exception expected");
 		} catch (ParseException e) {
 			assertTrue(e.getRootCause().getMessage().contains("String concatenation detected."));
@@ -162,7 +163,7 @@ public class JsonParserTest {
 		// Concatenated string 2
 		json = "{\"foo\":\"bar\" + \"baz\"}";
 		try {
-			p.parse(json, ObjectMap.class);
+			p.parse(json, OMap.class);
 			fail("Exception expected");
 		} catch (ParseException e) {
 			assertTrue(e.getRootCause().getMessage().contains("String concatenation detected."));
@@ -170,7 +171,7 @@ public class JsonParserTest {
 
 		json = "{\"foo\":/*comment*/\"bar\"}";
 		try {
-			p.parse(json, ObjectMap.class);
+			p.parse(json, OMap.class);
 			fail("Exception expected");
 		} catch (ParseException e) {
 			assertTrue(e.getRootCause().getMessage().contains("Javascript comment detected."));
@@ -337,10 +338,10 @@ public class JsonParserTest {
 		Reader r;
 
 		r = reader("{foo:'bar'}{baz:'qux'}");
-		x = p.parse(r, ObjectMap.class);
+		x = p.parse(r, OMap.class);
 		assertObjectEquals("{foo:'bar'}", x);
 		try {
-			x = p.parse(r, ObjectMap.class);
+			x = p.parse(r, OMap.class);
 			fail("Exception expected");
 		} catch (Exception e) {
 			assertTrue(e.getMessage().contains("Reader is closed"));
@@ -358,15 +359,15 @@ public class JsonParserTest {
 		Reader r;
 
 		r = reader("{foo:'bar'}{baz:'qux'}");
-		x = p.parse(r, ObjectMap.class);
+		x = p.parse(r, OMap.class);
 		assertObjectEquals("{foo:'bar'}", x);
-		x = p.parse(r, ObjectMap.class);
+		x = p.parse(r, OMap.class);
 		assertObjectEquals("{baz:'qux'}", x);
 
 		r = reader("[123][456]");
-		x = p.parse(r, ObjectList.class);
+		x = p.parse(r, OList.class);
 		assertObjectEquals("[123]", x);
-		x = p.parse(r, ObjectList.class);
+		x = p.parse(r, OList.class);
 		assertObjectEquals("[456]", x);
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java
index f50d0a7..8da607a 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.annotation.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -60,7 +60,7 @@ public class JsonTest {
 		r = "\\w[\\w\\-\\.]{3,}\\w";
 		m.put("x", r);
 		assertEquals("{x:\"\\\\w[\\\\w\\\\-\\\\.]{3,}\\\\w\"}", s2.serialize(m));
-		assertEquals(r, new ObjectMap(s2.serialize(m)).getString("x"));
+		assertEquals(r, OMap.ofJson(s2.serialize(m)).getString("x"));
 
 		// String = [foo\bar]
 		// JSON = {x:"foo\\bar"}
@@ -141,7 +141,7 @@ public class JsonTest {
 	//====================================================================================================
 	@Test
 	public void testIndentation() throws Exception {
-		ObjectMap m = new ObjectMap("{J:{B:['c',{D:'e'},['f',{G:'h'},1,false]]},I:'j'}");
+		OMap m = OMap.ofJson("{J:{B:['c',{D:'e'},['f',{G:'h'},1,false]]},I:'j'}");
 		String e = ""
 			+ "{"
 			+ "\n	J: {"
@@ -171,10 +171,10 @@ public class JsonTest {
 	@Test
 	public void testEscapingDoubleQuotes() throws Exception {
 		JsonSerializer s = JsonSerializer.DEFAULT;
-		String r = s.serialize(new ObjectMap().append("f1", "x'x\"x"));
+		String r = s.serialize(OMap.of("f1", "x'x\"x"));
 		assertEquals("{\"f1\":\"x'x\\\"x\"}", r);
 		JsonParser p = JsonParser.DEFAULT;
-		assertEquals("x'x\"x", p.parse(r, ObjectMap.class).getString("f1"));
+		assertEquals("x'x\"x", p.parse(r, OMap.class).getString("f1"));
 	}
 
 	//====================================================================================================
@@ -183,10 +183,10 @@ public class JsonTest {
 	@Test
 	public void testEscapingSingleQuotes() throws Exception {
 		JsonSerializer s = SimpleJsonSerializer.DEFAULT;
-		String r = s.serialize(new ObjectMap().append("f1", "x'x\"x"));
+		String r = s.serialize(OMap.of("f1", "x'x\"x"));
 		assertEquals("{f1:'x\\'x\"x'}", r);
 		JsonParser p = JsonParser.DEFAULT;
-		assertEquals("x'x\"x", p.parse(r, ObjectMap.class).getString("f1"));
+		assertEquals("x'x\"x", p.parse(r, OMap.class).getString("f1"));
 	}
 
 	//====================================================================================================
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
index d3505ef..f6bdca8 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
@@ -18,6 +18,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.annotation.*;
 import org.apache.juneau.testutils.pojos.*;
 import org.apache.juneau.transform.*;
@@ -215,7 +216,7 @@ public class JsonSchemaGeneratorTest {
 	@Test
 	public void beanDefsPreloaded() throws Exception {
 		JsonSchemaGeneratorSession s = JsonSchemaGenerator.DEFAULT.builder().useBeanDefs().build().createSession();
-		s.addBeanDef("SimpleBean", new ObjectMap().append("test", 123));
+		s.addBeanDef("SimpleBean", new OMap().a("test", 123));
 		assertObjectEquals("{'$ref':'#/definitions/SimpleBean'}", s.getSchema(SimpleBean.class));
 		assertObjectEquals("{SimpleBean:{test:123}}", s.getBeanDefs());
 	}
@@ -223,7 +224,7 @@ public class JsonSchemaGeneratorTest {
 	@Test
 	public void useBeanDefsPreloaded_beanList() throws Exception {
 		JsonSchemaGeneratorSession s = JsonSchemaGenerator.DEFAULT.builder().useBeanDefs().build().createSession();
-		s.addBeanDef("SimpleBean", new ObjectMap().append("test", 123));
+		s.addBeanDef("SimpleBean", new OMap().a("test", 123));
 		assertObjectEquals("{type:'array',items:{'$ref':'#/definitions/SimpleBean'}}", s.getSchema(BeanList.class));
 		assertObjectEquals("{SimpleBean:{test:123}}", s.getBeanDefs());
 	}
@@ -231,7 +232,7 @@ public class JsonSchemaGeneratorTest {
 	@Test
 	public void useBeanDefsPreloaded_beanList2d() throws Exception {
 		JsonSchemaGeneratorSession s = JsonSchemaGenerator.DEFAULT.builder().useBeanDefs().build().createSession();
-		s.addBeanDef("SimpleBean", new ObjectMap().append("test", 123));
+		s.addBeanDef("SimpleBean", new OMap().a("test", 123));
 		assertObjectEquals("{type:'array',items:{type:'array',items:{'$ref':'#/definitions/SimpleBean'}}}", s.getSchema(BeanList2d.class));
 		assertObjectEquals("{SimpleBean:{test:123}}", s.getBeanDefs());
 	}
@@ -239,7 +240,7 @@ public class JsonSchemaGeneratorTest {
 	@Test
 	public void useBeanDefsPreloaded_beanArray2d() throws Exception {
 		JsonSchemaGeneratorSession s = JsonSchemaGenerator.DEFAULT.builder().useBeanDefs().build().createSession();
-		s.addBeanDef("SimpleBean", new ObjectMap().append("test", 123));
+		s.addBeanDef("SimpleBean", new OMap().a("test", 123));
 		assertObjectEquals("{type:'array',items:{type:'array',items:{'$ref':'#/definitions/SimpleBean'}}}", s.getSchema(SimpleBean[][].class));
 		assertObjectEquals("{SimpleBean:{test:123}}", s.getBeanDefs());
 	}
@@ -1194,27 +1195,27 @@ public class JsonSchemaGeneratorTest {
 	@Test
 	public void defaultSchemas() throws Exception {
 		JsonSchemaGeneratorSession s = JsonSchemaGenerator.DEFAULT.builder()
-			.defaultSchema(SimpleBean.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(BeanMap.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(BeanList.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(BeanList[][].class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(boolean.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(Boolean.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(short.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(Short.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(int.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(Integer.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(long.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(Long.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(float.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(Float.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(double.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(Double.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(String.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(StringBuilder.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(Character.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(char.class, new ObjectMap().append("type", "bar"))
-			.defaultSchema(TestEnumToString.class, new ObjectMap().append("type", "bar"))
+			.defaultSchema(SimpleBean.class, OMap.of("type", "bar"))
+			.defaultSchema(BeanMap.class, OMap.of("type", "bar"))
+			.defaultSchema(BeanList.class, OMap.of("type", "bar"))
+			.defaultSchema(BeanList[][].class, OMap.of("type", "bar"))
+			.defaultSchema(boolean.class, OMap.of("type", "bar"))
+			.defaultSchema(Boolean.class, OMap.of("type", "bar"))
+			.defaultSchema(short.class, OMap.of("type", "bar"))
+			.defaultSchema(Short.class, OMap.of("type", "bar"))
+			.defaultSchema(int.class, OMap.of("type", "bar"))
+			.defaultSchema(Integer.class, OMap.of("type", "bar"))
+			.defaultSchema(long.class, OMap.of("type", "bar"))
+			.defaultSchema(Long.class, OMap.of("type", "bar"))
+			.defaultSchema(float.class, OMap.of("type", "bar"))
+			.defaultSchema(Float.class, OMap.of("type", "bar"))
+			.defaultSchema(double.class, OMap.of("type", "bar"))
+			.defaultSchema(Double.class, OMap.of("type", "bar"))
+			.defaultSchema(String.class, OMap.of("type", "bar"))
+			.defaultSchema(StringBuilder.class, OMap.of("type", "bar"))
+			.defaultSchema(Character.class, OMap.of("type", "bar"))
+			.defaultSchema(char.class, OMap.of("type", "bar"))
+			.defaultSchema(TestEnumToString.class, OMap.of("type", "bar"))
 			.build().createSession();
 		assertObjectEquals("{type:'bar'}", s.getSchema(SimpleBean.class));
 		assertObjectEquals("{type:'bar'}", s.getSchema(BeanMap.class));
@@ -1243,27 +1244,27 @@ public class JsonSchemaGeneratorTest {
 	@Test
 	public void defaultSchemasNoType() throws Exception {
 		JsonSchemaGeneratorSession s = JsonSchemaGenerator.DEFAULT.builder()
-			.defaultSchema(SimpleBean.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(BeanMap.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(BeanList.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(BeanList[][].class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(boolean.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(Boolean.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(short.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(Short.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(int.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(Integer.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(long.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(Long.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(float.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(Float.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(double.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(Double.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(String.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(StringBuilder.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(Character.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(char.class, new ObjectMap().append("foo", "bar"))
-			.defaultSchema(TestEnumToString.class, new ObjectMap().append("foo", "bar"))
+			.defaultSchema(SimpleBean.class, OMap.of("foo", "bar"))
+			.defaultSchema(BeanMap.class, OMap.of("foo", "bar"))
+			.defaultSchema(BeanList.class, OMap.of("foo", "bar"))
+			.defaultSchema(BeanList[][].class, OMap.of("foo", "bar"))
+			.defaultSchema(boolean.class, OMap.of("foo", "bar"))
+			.defaultSchema(Boolean.class, OMap.of("foo", "bar"))
+			.defaultSchema(short.class, OMap.of("foo", "bar"))
+			.defaultSchema(Short.class, OMap.of("foo", "bar"))
+			.defaultSchema(int.class, OMap.of("foo", "bar"))
+			.defaultSchema(Integer.class, OMap.of("foo", "bar"))
+			.defaultSchema(long.class, OMap.of("foo", "bar"))
+			.defaultSchema(Long.class, OMap.of("foo", "bar"))
+			.defaultSchema(float.class, OMap.of("foo", "bar"))
+			.defaultSchema(Float.class, OMap.of("foo", "bar"))
+			.defaultSchema(double.class, OMap.of("foo", "bar"))
+			.defaultSchema(Double.class, OMap.of("foo", "bar"))
+			.defaultSchema(String.class, OMap.of("foo", "bar"))
+			.defaultSchema(StringBuilder.class, OMap.of("foo", "bar"))
+			.defaultSchema(Character.class, OMap.of("foo", "bar"))
+			.defaultSchema(char.class, OMap.of("foo", "bar"))
+			.defaultSchema(TestEnumToString.class, OMap.of("foo", "bar"))
 			.build().createSession();
 		assertObjectEquals("{type:'object',properties:{f1:{type:'string',foo:'bar'}},foo:'bar'}", s.getSchema(SimpleBean.class));
 		assertObjectEquals("{type:'object',additionalProperties:{type:'object',properties:{f1:{type:'string',foo:'bar'}},foo:'bar'},foo:'bar'}", s.getSchema(BeanMap.class));
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/msgpack/MsgPackSerializerTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/msgpack/MsgPackSerializerTest.java
index 12af680..fc9c2f3 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/msgpack/MsgPackSerializerTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/msgpack/MsgPackSerializerTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.msgpack;
 
 import static org.junit.Assert.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.junit.*;
 
@@ -198,10 +198,10 @@ public class MsgPackSerializerTest {
 		//		* odd elements in objects are keys of a map
 		//		* the next element of a key is its associated value
 
-		test(new ObjectMap("{}"), "80");
-		test(new ObjectMap("{1:1}"), "81 A1 31 01");
-		test(new ObjectMap("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1}"), "8F A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01");
-		test(new ObjectMap("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1,g:1}"), "DE 00 10 A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01 A1 67 01");
+		test(OMap.ofJson("{}"), "80");
+		test(OMap.ofJson("{1:1}"), "81 A1 31 01");
+		test(OMap.ofJson("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1}"), "8F A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01");
+		test(OMap.ofJson("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1,g:1}"), "DE 00 10 A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01 A1 67 01");
 	}
 
 	public static class Person {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/svl/ResolvingObjectMapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/svl/ResolvingOMapTest.java
similarity index 90%
rename from juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/svl/ResolvingObjectMapTest.java
rename to juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/svl/ResolvingOMapTest.java
index 2519bb6..ba1180b 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/svl/ResolvingObjectMapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/svl/ResolvingOMapTest.java
@@ -15,11 +15,10 @@ package org.apache.juneau.svl;
 import static org.apache.juneau.testutils.TestUtils.*;
 import static org.junit.Assert.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.junit.*;
 
-public class ResolvingObjectMapTest {
+public class ResolvingOMapTest {
 
 	//====================================================================================================
 	// test - Basic tests
@@ -27,7 +26,7 @@ public class ResolvingObjectMapTest {
 	@Test
 	public void testBasic() throws Exception {
 		VarResolver vr = new VarResolverBuilder().defaultVars().vars(XVar.class).build();
-		ObjectMap m = new ResolvingObjectMap(vr.createSession());
+		OMap m = new ResolvingOMap(vr.createSession());
 
 		m.put("foo", "$X{a}");
 		assertEquals(m.get("foo"), "1");
@@ -44,7 +43,7 @@ public class ResolvingObjectMapTest {
 
 	public static class XVar extends MapVar {
 		public XVar() {
-			super("X", new ObjectMap().append("a", 1).append("b", 2).append("c", 3));
+			super("X", OMap.of("a", 1, "b", 2, "c", 3));
 		}
 	}
 
@@ -54,7 +53,7 @@ public class ResolvingObjectMapTest {
 	@Test
 	public void testNulls() throws Exception {
 		VarResolver vr = new VarResolverBuilder().defaultVars().vars(XVar.class).build();
-		ObjectMap m = new ResolvingObjectMap(vr.createSession());
+		OMap m = new ResolvingOMap(vr.createSession());
 
 		m.put("foo", null);
 		assertNull(m.get("foo"));
@@ -75,7 +74,7 @@ public class ResolvingObjectMapTest {
 	@Test
 	public void testNonStrings() throws Exception {
 		VarResolver vr = new VarResolverBuilder().defaultVars().vars(XVar.class).build();
-		ObjectMap m = new ResolvingObjectMap(vr.createSession());
+		OMap m = new ResolvingOMap(vr.createSession());
 
 		m.put("foo", FooEnum.ONE);
 		assertObjectEquals("'ONE'", m.get("foo"));
@@ -100,11 +99,11 @@ public class ResolvingObjectMapTest {
 	@Test
 	public void testInner() throws Exception {
 		VarResolver vr = new VarResolverBuilder().defaultVars().vars(XVar.class).build();
-		ObjectMap m = new ResolvingObjectMap(vr.createSession());
-		ObjectMap m2 = new ObjectMap();
-		ObjectMap m3 = new ObjectMap();
-		m.setInner(m2);
-		m2.setInner(m3);
+		OMap m = new ResolvingOMap(vr.createSession());
+		OMap m2 = new OMap();
+		OMap m3 = new OMap();
+		m.inner(m2);
+		m2.inner(m3);
 
 		m3.put("foo", "$X{a}");
 		assertEquals(m.get("foo"), "1");
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java
index 324519a..c00df1a 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java
@@ -31,7 +31,7 @@ import org.junit.runners.*;
 public class AutoListSwapTest {
 
 	private static final List<String> STRINGLIST = AList.of("foo");
-	private static final ObjectList OBJECTLIST = new ObjectList().append("foo");
+	private static final OList OLIST = OList.of("foo");
 
 	private static PojoSwap find(Class<?> c) {
 		return AutoListSwap.find(BeanContext.DEFAULT, ClassInfo.of(c));
@@ -55,17 +55,17 @@ public class AutoListSwapTest {
 		}
 	}
 	public static class A02 {
-		public ObjectList toObjectList() {
-			return OBJECTLIST;
+		public OList toOList() {
+			return OLIST;
 		}
 	}
 	public static class A03 {
-		public ObjectList toObjectList() throws SerializeException {
+		public OList toOList() throws SerializeException {
 			throw new SerializeException("foo");
 		}
 	}
 	public static class A04 {
-		public ObjectList toObjectList() {
+		public OList toOList() {
 			throw new RuntimeException("foo");
 		}
 	}
@@ -76,7 +76,7 @@ public class AutoListSwapTest {
 	}
 
 	@Test
-	public void a02_swap_toObjectList() throws Exception {
+	public void a02_swap_toOList() throws Exception {
 		assertObjectEquals("['foo']", find(A02.class).swap(null, new A02()));
 	}
 
@@ -104,10 +104,10 @@ public class AutoListSwapTest {
 		}
 	}
 	public static class B02 {
-		public ObjectList toObjectList() {
-			return OBJECTLIST;
+		public OList toOList() {
+			return OLIST;
 		}
-		public static B02 fromObjectList(ObjectList o) {
+		public static B02 fromOList(OList o) {
 			assertObjectEquals("['foo']", o);
 			return new B02();
 		}
@@ -133,8 +133,8 @@ public class AutoListSwapTest {
 	}
 
 	@Test
-	public void b02_unswap_fromObjectList() throws Exception {
-		assertNotNull(find(B02.class).unswap(null, OBJECTLIST, null));
+	public void b02_unswap_fromOList() throws Exception {
+		assertNotNull(find(B02.class).unswap(null, OLIST, null));
 	}
 
 	@Test
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java
index 56eed2a..130afa9 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java
@@ -31,7 +31,7 @@ import org.junit.runners.*;
 public class AutoMapSwapTest {
 
 	private static final Map<String,String> STRINGMAP = AMap.of("foo","bar");
-	private static final ObjectMap OBJECTMAP = new ObjectMap().append("foo","bar");
+	private static final OMap OMAP = OMap.of("foo","bar");
 
 	private static PojoSwap find(Class<?> c) {
 		return AutoMapSwap.find(BeanContext.DEFAULT, ClassInfo.of(c));
@@ -55,17 +55,17 @@ public class AutoMapSwapTest {
 		}
 	}
 	public static class A02 {
-		public ObjectMap toObjectMap() {
-			return OBJECTMAP;
+		public OMap toOMap() {
+			return OMAP;
 		}
 	}
 	public static class A03 {
-		public ObjectMap toObjectMap() throws SerializeException {
+		public OMap toOMap() throws SerializeException {
 			throw new SerializeException("foo");
 		}
 	}
 	public static class A04 {
-		public ObjectMap toObjectMap() {
+		public OMap toOMap() {
 			throw new RuntimeException("foo");
 		}
 	}
@@ -76,7 +76,7 @@ public class AutoMapSwapTest {
 	}
 
 	@Test
-	public void a02_swap_toObjectMap() throws Exception {
+	public void a02_swap_toOMap() throws Exception {
 		assertObjectEquals("{foo:'bar'}", find(A02.class).swap(null, new A02()));
 	}
 
@@ -104,10 +104,10 @@ public class AutoMapSwapTest {
 		}
 	}
 	public static class B02 {
-		public ObjectMap toObjectMap() {
-			return OBJECTMAP;
+		public OMap toOMap() {
+			return OMAP;
 		}
-		public static B02 fromObjectMap(ObjectMap o) {
+		public static B02 fromOMap(OMap o) {
 			assertObjectEquals("{foo:'bar'}", o);
 			return new B02();
 		}
@@ -133,8 +133,8 @@ public class AutoMapSwapTest {
 	}
 
 	@Test
-	public void b02_unswap_fromObjectMap() throws Exception {
-		assertNotNull(find(B02.class).unswap(null, OBJECTMAP, null));
+	public void b02_unswap_fromOMap() throws Exception {
+		assertNotNull(find(B02.class).unswap(null, OMAP, null));
 	}
 
 	@Test
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java
index fe9827f..ef6e147 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java
@@ -32,7 +32,7 @@ public class AutoObjectSwapTest {
 
 
 	private static final Map<String,String> STRINGMAP = AMap.of("foo","bar");
-	private static final ObjectMap OBJECTMAP = new ObjectMap().append("foo","bar");
+	private static final OMap OMAP = OMap.of("foo","bar");
 
 	private static PojoSwap find(Class<?> c) {
 		return AutoObjectSwap.find(BeanContext.DEFAULT, ClassInfo.of(c));
@@ -57,17 +57,17 @@ public class AutoObjectSwapTest {
 		}
 	}
 	public static class A02 {
-		public ObjectMap toObject() {
-			return OBJECTMAP;
+		public OMap toObject() {
+			return OMAP;
 		}
 	}
 	public static class A03 {
-		public ObjectMap toObject() throws SerializeException {
+		public OMap toObject() throws SerializeException {
 			throw new SerializeException("foo");
 		}
 	}
 	public static class A04 {
-		public ObjectMap toObject() {
+		public OMap toObject() {
 			throw new RuntimeException("foo");
 		}
 	}
@@ -107,10 +107,10 @@ public class AutoObjectSwapTest {
 		}
 	}
 	public static class B02 {
-		public ObjectMap swap() {
-			return OBJECTMAP;
+		public OMap swap() {
+			return OMAP;
 		}
-		public static B02 create(ObjectMap o) {
+		public static B02 create(OMap o) {
 			assertObjectEquals("{foo:'bar'}", o);
 			return new B02();
 		}
@@ -137,7 +137,7 @@ public class AutoObjectSwapTest {
 
 	@Test
 	public void b02_unswap_create() throws Exception {
-		assertNotNull(find(B02.class).unswap(null, OBJECTMAP, null));
+		assertNotNull(find(B02.class).unswap(null, OMAP, null));
 	}
 
 	@Test
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanMapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
index 3937383..58b5726 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.transforms;
 import static org.junit.Assert.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.transform.*;
 import org.junit.*;
 
@@ -49,12 +50,12 @@ public class BeanMapTest {
 	public void testFilteredEntryWithMultipleMatchingFilters() throws Exception {
 		BeanSession session = BeanContext.create().pojoSwaps(B2Swap.class, B1Swap.class).build().createSession();
 		BeanMap<B> bm = session.toBeanMap(B.create());
-		ObjectMap om = (ObjectMap)bm.get("b1");
+		OMap om = (OMap)bm.get("b1");
 		assertEquals("b2", om.getString("type"));
 
 		session = BeanContext.create().pojoSwaps(B1Swap.class, B2Swap.class).build().createSession();
 		bm = session.toBeanMap(B.create());
-		om = (ObjectMap)bm.get("b1");
+		om = (OMap)bm.get("b1");
 		assertEquals("b1", om.getString("type"));
 	}
 
@@ -82,15 +83,15 @@ public class BeanMapTest {
 
 	public static class B1Swap extends MapSwap<B1> {
 		@Override /* PojoSwap */
-		public ObjectMap swap(BeanSession session, B1 b1) {
-			return new ObjectMap().append("type", "b1").append("f1", b1.f1);
+		public OMap swap(BeanSession session, B1 b1) {
+			return OMap.of("type", "b1", "f1", b1.f1);
 		}
 	}
 
 	public static class B2Swap extends MapSwap<B2> {
 		@Override /* PojoSwap */
-		public ObjectMap swap(BeanSession session, B2 b2) {
-			return new ObjectMap().append("type", "b2").append("f1", b2.f1);
+		public OMap swap(BeanSession session, B2 b2) {
+			return OMap.of("type", "b2", "f1", b2.f1);
 		}
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java
index d99f6c4..3cda33c 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java
@@ -18,6 +18,7 @@ import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.testutils.*;
@@ -40,7 +41,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 
 	private static Calendar[] dateArray = new Calendar[]{singleDate};
 
-	private static ObjectMap dateMap = new ObjectMap().append("foo", singleDate);
+	private static OMap dateMap = OMap.of("foo", singleDate);
 
 
 	@Parameterized.Parameters
@@ -117,7 +118,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 2 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"CalendarSwap.ToString",
 					getType(Map.class,String.class,Calendar.class),
 					dateMap,
@@ -146,7 +147,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Calendar.class, o.get("foo"));
 					}
 				}
@@ -222,7 +223,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 5 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"CalendarSwap.ISO8601DT/dateMap",
 					getType(Map.class,String.class,Calendar.class),
 					dateMap,
@@ -251,7 +252,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Calendar.class, o.get("foo"));
 					}
 				}
@@ -327,7 +328,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 8 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"CalendarSwap.RFC2822DTZ/dateMap",
 					getType(Map.class,String.class,Calendar.class),
 					dateMap,
@@ -356,7 +357,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Calendar.class, o.get("foo"));
 					}
 				}
@@ -432,7 +433,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 11 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"CalendarLongSwap/dateMap",
 					getType(Map.class,String.class,Calendar.class),
 					dateMap,
@@ -461,7 +462,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Calendar.class, o.get("foo"));
 					}
 				}
@@ -537,7 +538,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 14 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"CalendarMapSwap/dateMap",
 					getType(Map.class,String.class,Calendar.class),
 					dateMap,
@@ -566,7 +567,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Calendar.class, o.get("foo"));
 					}
 				}
@@ -642,7 +643,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 17 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"CalendarSwap.DateMedium/dateMap",
 					getType(Map.class,String.class,Calendar.class),
 					dateMap,
@@ -671,7 +672,7 @@ public class CalendarSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Calendar.class, o.get("foo"));
 					}
 				}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java
index 389a890..ba86515 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java
@@ -18,6 +18,7 @@ import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.testutils.*;
@@ -36,7 +37,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 
 	private static Date[] dateArray = new Date[]{singleDate};
 
-	private static ObjectMap dateMap = new ObjectMap().append("foo", singleDate);
+	private static OMap dateMap = OMap.of("foo", singleDate);
 
 
 	@Parameterized.Parameters
@@ -113,7 +114,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 2 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"DateSwap.ToString",
 					getType(Map.class,String.class,Date.class),
 					dateMap,
@@ -142,7 +143,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Date.class, o.get("foo"));
 					}
 				}
@@ -218,7 +219,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 5 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"DateSwap.ISO8601DT/dateMap",
 					getType(Map.class,String.class,Date.class),
 					dateMap,
@@ -247,7 +248,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Date.class, o.get("foo"));
 					}
 				}
@@ -323,7 +324,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 8 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"DateSwap.RFC2822DTZ/dateMap",
 					getType(Map.class,String.class,Date.class),
 					dateMap,
@@ -352,7 +353,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Date.class, o.get("foo"));
 					}
 				}
@@ -428,7 +429,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 11 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"DateLongSwap/dateMap",
 					getType(Map.class,String.class,Date.class),
 					dateMap,
@@ -457,7 +458,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Date.class, o.get("foo"));
 					}
 				}
@@ -533,7 +534,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 14 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"DateMapSwap/dateMap",
 					getType(Map.class,String.class,Date.class),
 					dateMap,
@@ -562,7 +563,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Date.class, o.get("foo"));
 					}
 				}
@@ -638,7 +639,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				}
 			},
 			{	/* 17 */
-				new ComboInput2<ObjectMap>(
+				new ComboInput2<OMap>(
 					"DateSwap.DateMedium/dateMap",
 					getType(Map.class,String.class,Date.class),
 					dateMap,
@@ -667,7 +668,7 @@ public class DateSwapComboTest extends ComboRoundTripTest {
 				)
 				{
 					@Override
-					public void verify(ObjectMap o) {
+					public void verify(OMap o) {
 						assertInstanceOf(Date.class, o.get("foo"));
 					}
 				}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapTest.java
index 25d0696..be75885 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/DateSwapTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.transforms;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.testutils.*;
 import org.junit.*;
@@ -42,10 +43,10 @@ public class DateSwapTest {
 			.pojoSwaps(DateSwap.ISO8601DT.class)
 			.build()
 			.serialize(testBeanA);
-		final ObjectMap data = JsonParser.create()
+		final OMap data = JsonParser.create()
 			.pojoSwaps(DateSwap.ISO8601DT.class)
 			.build()
-			.parse(jsonData, ObjectMap.class);
+			.parse(jsonData, OMap.class);
 
 		final DateSwap.ISO8601DT dateSwap = new DateSwap.ISO8601DT();
 		// this works
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java
index ee7e068..4056024 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/CommonParser_UonTest.java
@@ -16,8 +16,8 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -59,9 +59,9 @@ public class CommonParser_UonTest {
 		assertEquals("foo bar", m.get("b"));
 		assertEquals(false, m.get("c"));
 
-		ObjectList jl = (ObjectList)p.parse("@((attribute=value),(attribute=~'value~'))", Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("'value'", jl.getObjectMap(1).getString("attribute"));
+		OList jl = (OList)p.parse("@((attribute=value),(attribute=~'value~'))", Object.class);
+		assertEquals("value", jl.getMap(0).getString("attribute"));
+		assertEquals("'value'", jl.getMap(1).getString("attribute"));
 
 		A1 b = new A1();
 		A2 tl = new A2();
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/Common_UonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/Common_UonTest.java
index 42059de..cb76fe0 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/Common_UonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/Common_UonTest.java
@@ -19,7 +19,6 @@ import java.net.*;
 import java.net.URI;
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.junit.*;
@@ -192,8 +191,8 @@ public class Common_UonTest {
 		@Beanp(properties="f1") public Map<String,Integer> x2 = AMap.of("f1",1,"f2",2);
 		@Beanp(properties="f1") public E2[] x3 = {new E2()};
 		@Beanp(properties="f1") public List<E2> x4 = AList.of(new E2());
-		@Beanp(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f2",2)};
-		@Beanp(properties="f1") public List<ObjectMap> x6 = AList.of(new ObjectMap().append("f1",1).append("f2",2));
+		@Beanp(properties="f1") public OMap[] x5 = {OMap.of("f1",1,"f2",2)};
+		@Beanp(properties="f1") public List<OMap> x6 = AList.of(OMap.of("f1",1,"f2",2));
 	}
 
 	public static class E2 {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonParserTest.java
index 87c7046..363bcd3 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonParserTest.java
@@ -19,6 +19,7 @@ import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -525,10 +526,10 @@ public class UonParserTest {
 		Reader r;
 
 		r = reader("(foo=bar)(foo=bar)");
-		x = p.parse(r, ObjectMap.class);
+		x = p.parse(r, OMap.class);
 		assertObjectEquals("{foo:'bar'}", x);
 		try {
-			x = p.parse(r, ObjectMap.class);
+			x = p.parse(r, OMap.class);
 			fail("Exception expected");
 		} catch (Exception e) {
 			assertTrue(e.getMessage().contains("Reader is closed"));
@@ -546,15 +547,15 @@ public class UonParserTest {
 		Reader r;
 
 		r = reader("(foo=bar)(baz=qux)");
-		x = p.parse(r, ObjectMap.class);
+		x = p.parse(r, OMap.class);
 		assertObjectEquals("{foo:'bar'}", x);
-		x = p.parse(r, ObjectMap.class);
+		x = p.parse(r, OMap.class);
 		assertObjectEquals("{baz:'qux'}", x);
 
 		r = reader("@(123)@(456)");
-		x = p.parse(r, ObjectList.class);
+		x = p.parse(r, OList.class);
 		assertObjectEquals("[123]", x);
-		x = p.parse(r, ObjectList.class);
+		x = p.parse(r, OList.class);
 		assertObjectEquals("[456]", x);
 	}
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonSerializerTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonSerializerTest.java
index 19fe943..d320ac5 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonSerializerTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/uon/UonSerializerTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.uon;
 
 import static org.junit.Assert.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.junit.*;
 
 public class UonSerializerTest {
@@ -40,26 +40,26 @@ public class UonSerializerTest {
 		assertEquals("a", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{a:'a'}");
+		t = OMap.ofJson("{a:'a'}");
 		assertEquals("(a=a)", s.serialize(t));
 		assertEquals("(a=a)", su.serialize(t));
 		assertEquals("(\n\ta=a\n)", sr.serialize(t));
 
 		// Simple map
 		// Top level
-		t = new ObjectMap("{a:'b',c:123,d:false,e:true,f:null}");
+		t = OMap.ofJson("{a:'b',c:123,d:false,e:true,f:null}");
 		assertEquals("(a=b,c=123,d=false,e=true,f=null)", s.serialize(t));
 		assertEquals("(a=b,c=123,d=false,e=true,f=null)", su.serialize(t));
 		assertEquals("(\n\ta=b,\n\tc=123,\n\td=false,\n\te=true,\n\tf=null\n)", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{a:{a:'b',c:123,d:false,e:true,f:null}}");
+		t = OMap.ofJson("{a:{a:'b',c:123,d:false,e:true,f:null}}");
 		assertEquals("(a=(a=b,c=123,d=false,e=true,f=null))", s.serialize(t));
 		assertEquals("(a=(a=b,c=123,d=false,e=true,f=null))", su.serialize(t));
 		assertEquals("(\n\ta=(\n\t\ta=b,\n\t\tc=123,\n\t\td=false,\n\t\te=true,\n\t\tf=null\n\t)\n)", sr.serialize(t));
 
 		// Simple map with primitives as literals
-		t = new ObjectMap("{a:'b',c:'123',d:'false',e:'true',f:'null'}");
+		t = OMap.ofJson("{a:'b',c:'123',d:'false',e:'true',f:'null'}");
 		assertEquals("(a=b,c='123',d='false',e='true',f='null')", s.serialize(t));
 		assertEquals("(a=b,c='123',d='false',e='true',f='null')", su.serialize(t));
 		assertEquals("(\n\ta=b,\n\tc='123',\n\td='false',\n\te='true',\n\tf='null'\n)", sr.serialize(t));
@@ -73,13 +73,13 @@ public class UonSerializerTest {
 		assertEquals("null", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{null:null}");
+		t = OMap.ofJson("{null:null}");
 		assertEquals("(null=null)", s.serialize(t));
 		assertEquals("(null=null)", su.serialize(t));
 		assertEquals("(\n\tnull=null\n)", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{null:{null:null}}");
+		t = OMap.ofJson("{null:{null:null}}");
 		assertEquals("(null=(null=null))", s.serialize(t));
 		assertEquals("(null=(null=null))", su.serialize(t));
 		assertEquals("(\n\tnull=(\n\t\tnull=null\n\t)\n)", sr.serialize(t));
@@ -92,7 +92,7 @@ public class UonSerializerTest {
 		assertEquals("@()", sr.serialize(t));
 
 		// 2nd level in map
-		t = new ObjectMap("{x:[]}");
+		t = OMap.ofJson("{x:[]}");
 		assertEquals("(x=@())", s.serialize(t));
 		assertEquals("(x=@())", su.serialize(t));
 		assertEquals("(\n\tx=@()\n)", sr.serialize(t));
@@ -111,7 +111,7 @@ public class UonSerializerTest {
 		assertEquals("@(\n\t''\n)", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:['']}");
+		t = OMap.ofJson("{x:['']}");
 		assertEquals("(x=@(''))", s.serialize(t));
 		assertEquals("(x=@(''))", su.serialize(t));
 		assertEquals("(\n\tx=@(\n\t\t''\n\t)\n)", sr.serialize(t));
@@ -130,7 +130,7 @@ public class UonSerializerTest {
 		assertEquals("\u0000", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'\u0000':'\u0000'}");
+		t = OMap.ofJson("{'\u0000':'\u0000'}");
 		assertEquals("(%00=%00)", s.serialize(t));
 		assertEquals("(\u0000=\u0000)", su.serialize(t));
 		assertEquals("(\n\t\u0000=\u0000\n)", sr.serialize(t));
@@ -143,7 +143,7 @@ public class UonSerializerTest {
 		assertEquals("false", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:false}");
+		t = OMap.ofJson("{x:false}");
 		assertEquals("(x=false)", s.serialize(t));
 		assertEquals("(x=false)", su.serialize(t));
 		assertEquals("(\n\tx=false\n)", sr.serialize(t));
@@ -156,7 +156,7 @@ public class UonSerializerTest {
 		assertEquals("123", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:123}");
+		t = OMap.ofJson("{x:123}");
 		assertEquals("(x=123)", s.serialize(t));
 		assertEquals("(x=123)", su.serialize(t));
 		assertEquals("(\n\tx=123\n)", sr.serialize(t));
@@ -169,7 +169,7 @@ public class UonSerializerTest {
 		assertEquals("x;/?:@-_.!*~'", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:'x;/?:@-_.!*\\''}");
+		t = OMap.ofJson("{x:'x;/?:@-_.!*\\''}");
 		assertEquals("(x=x;/?:@-_.!*~')", s.serialize(t));
 		assertEquals("(x=x;/?:@-_.!*~')", su.serialize(t));
 		assertEquals("(\n\tx=x;/?:@-_.!*~'\n)", sr.serialize(t));
@@ -182,7 +182,7 @@ public class UonSerializerTest {
 		assertEquals("x{}|\\^[]`<>#%\"&+", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'x{}|\\\\^[]`<>#%\"&+':'x{}|\\\\^[]`<>#%\"&+'}");
+		t = OMap.ofJson("{'x{}|\\\\^[]`<>#%\"&+':'x{}|\\\\^[]`<>#%\"&+'}");
 		assertEquals("(x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B=x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B)", s.serialize(t));
 		assertEquals("(x{}|\\^[]`<>#%\"&+=x{}|\\^[]`<>#%\"&+)", su.serialize(t));
 		assertEquals("(\n\tx{}|\\^[]`<>#%\"&+=x{}|\\^[]`<>#%\"&+\n)", sr.serialize(t));
@@ -196,14 +196,14 @@ public class UonSerializerTest {
 
 		// 2nd level
 		// Note behavior on serializeParams() is different since 2nd-level is top level.
-		t = new ObjectMap("{'x$,()~':'x$,()~'}");
+		t = OMap.ofJson("{'x$,()~':'x$,()~'}");
 		assertEquals("('x$,()~~'='x$,()~~')", s.serialize(t));
 		assertEquals("('x$,()~~'='x$,()~~')", su.serialize(t));
 		assertEquals("(\n\t'x$,()~~'='x$,()~~'\n)", sr.serialize(t));
 
 		// 3rd level
 		// Note behavior on serializeParams().
-		t = new ObjectMap("{'x$,()~':{'x$,()~':'x$,()~'}}");
+		t = OMap.ofJson("{'x$,()~':{'x$,()~':'x$,()~'}}");
 		assertEquals("('x$,()~~'=('x$,()~~'='x$,()~~'))", s.serialize(t));
 		assertEquals("('x$,()~~'=('x$,()~~'='x$,()~~'))", su.serialize(t));
 		assertEquals("(\n\t'x$,()~~'=(\n\t\t'x$,()~~'='x$,()~~'\n\t)\n)", sr.serialize(t));
@@ -217,13 +217,13 @@ public class UonSerializerTest {
 		assertEquals("'x='", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'x=':'x='}");
+		t = OMap.ofJson("{'x=':'x='}");
 		assertEquals("('x='='x=')", s.serialize(t));
 		assertEquals("('x='='x=')", su.serialize(t));
 		assertEquals("(\n\t'x='='x='\n)", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'x=':{'x=':'x='}}");
+		t = OMap.ofJson("{'x=':{'x=':'x='}}");
 		assertEquals("('x='=('x='='x='))", s.serialize(t));
 		assertEquals("('x='=('x='='x='))", su.serialize(t));
 		assertEquals("(\n\t'x='=(\n\t\t'x='='x='\n\t)\n)", sr.serialize(t));
@@ -236,7 +236,7 @@ public class UonSerializerTest {
 		assertEquals("'()'", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'()':'()'}");
+		t = OMap.ofJson("{'()':'()'}");
 		assertEquals("('()'='()')", s.serialize(t));
 		assertEquals("('()'='()')", su.serialize(t));
 		assertEquals("(\n\t'()'='()'\n)", sr.serialize(t));
@@ -249,7 +249,7 @@ public class UonSerializerTest {
 		assertEquals("$a", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{$a:'$a'}");
+		t = OMap.ofJson("{$a:'$a'}");
 		assertEquals("($a=$a)", s.serialize(t));
 		assertEquals("($a=$a)", su.serialize(t));
 		assertEquals("(\n\t$a=$a\n)", sr.serialize(t));
@@ -262,13 +262,13 @@ public class UonSerializerTest {
 		assertEquals("''", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'':''}");
+		t = OMap.ofJson("{'':''}");
 		assertEquals("(''='')", s.serialize(t));
 		assertEquals("(''='')", su.serialize(t));
 		assertEquals("(\n\t''=''\n)", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'':{'':''}}");
+		t = OMap.ofJson("{'':{'':''}}");
 		assertEquals("(''=(''=''))", s.serialize(t));
 		assertEquals("(''=(''=''))", su.serialize(t));
 		assertEquals("(\n\t''=(\n\t\t''=''\n\t)\n)", sr.serialize(t));
@@ -281,13 +281,13 @@ public class UonSerializerTest {
 		assertEquals("'\n'", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'\n':'\n'}");
+		t = OMap.ofJson("{'\n':'\n'}");
 		assertEquals("('%0A'='%0A')", s.serialize(t));
 		assertEquals("('\n'='\n')", su.serialize(t));
 		assertEquals("(\n\t'\n'='\n'\n)", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'\n':{'\n':'\n'}}");
+		t = OMap.ofJson("{'\n':{'\n':'\n'}}");
 		assertEquals("('%0A'=('%0A'='%0A'))", s.serialize(t));
 		assertEquals("('\n'=('\n'='\n'))", su.serialize(t));
 		assertEquals("(\n\t'\n'=(\n\t\t'\n'='\n'\n\t)\n)", sr.serialize(t));
@@ -308,13 +308,13 @@ public class UonSerializerTest {
 		assertEquals("¢", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'¢':'¢'}");
+		t = OMap.ofJson("{'¢':'¢'}");
 		assertEquals("(%C2%A2=%C2%A2)", s.serialize(t));
 		assertEquals("(¢=¢)", su.serialize(t));
 		assertEquals("(\n\t¢=¢\n)", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'¢':{'¢':'¢'}}");
+		t = OMap.ofJson("{'¢':{'¢':'¢'}}");
 		assertEquals("(%C2%A2=(%C2%A2=%C2%A2))", s.serialize(t));
 		assertEquals("(¢=(¢=¢))", su.serialize(t));
 		assertEquals("(\n\t¢=(\n\t\t¢=¢\n\t)\n)", sr.serialize(t));
@@ -327,13 +327,13 @@ public class UonSerializerTest {
 		assertEquals("€", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'€':'€'}");
+		t = OMap.ofJson("{'€':'€'}");
 		assertEquals("(%E2%82%AC=%E2%82%AC)", s.serialize(t));
 		assertEquals("(€=€)", su.serialize(t));
 		assertEquals("(\n\t€=€\n)", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'€':{'€':'€'}}");
+		t = OMap.ofJson("{'€':{'€':'€'}}");
 		assertEquals("(%E2%82%AC=(%E2%82%AC=%E2%82%AC))", s.serialize(t));
 		assertEquals("(€=(€=€))", su.serialize(t));
 		assertEquals("(\n\t€=(\n\t\t€=€\n\t)\n)", sr.serialize(t));
@@ -346,13 +346,13 @@ public class UonSerializerTest {
 		assertEquals("𤭢", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'𤭢':'𤭢'}");
+		t = OMap.ofJson("{'𤭢':'𤭢'}");
 		assertEquals("(%F0%A4%AD%A2=%F0%A4%AD%A2)", s.serialize(t));
 		assertEquals("(𤭢=𤭢)", su.serialize(t));
 		assertEquals("(\n\t𤭢=𤭢\n)", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'𤭢':{'𤭢':'𤭢'}}");
+		t = OMap.ofJson("{'𤭢':{'𤭢':'𤭢'}}");
 		assertEquals("(%F0%A4%AD%A2=(%F0%A4%AD%A2=%F0%A4%AD%A2))", s.serialize(t));
 		assertEquals("(𤭢=(𤭢=𤭢))", su.serialize(t));
 		assertEquals("(\n\t𤭢=(\n\t\t𤭢=𤭢\n\t)\n)", sr.serialize(t));
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
index bf4773e..9612c09 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
@@ -17,8 +17,8 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.uon.*;
@@ -58,13 +58,13 @@ public class CommonParser_UrlEncodingTest {
 		assertEquals("foo bar", m.get("b"));
 		assertEquals(false, m.get("c"));
 
-		ObjectMap jm = (ObjectMap)p.parse("x=@((attribute=value),(attribute=~'value~'))", Object.class);
-		assertEquals("value", jm.getObjectList("x").getObjectMap(0).getString("attribute"));
-		assertEquals("'value'", jm.getObjectList("x").getObjectMap(1).getString("attribute"));
+		OMap jm = (OMap)p.parse("x=@((attribute=value),(attribute=~'value~'))", Object.class);
+		assertEquals("value", jm.getList("x").getMap(0).getString("attribute"));
+		assertEquals("'value'", jm.getList("x").getMap(1).getString("attribute"));
 
-		ObjectList jl = (ObjectList)p.parse("_value=@((attribute=value),(attribute=~'value~'))", Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("'value'", jl.getObjectMap(1).getString("attribute"));
+		OList jl = (OList)p.parse("_value=@((attribute=value),(attribute=~'value~'))", Object.class);
+		assertEquals("value", jl.getMap(0).getString("attribute"));
+		assertEquals("'value'", jl.getMap(1).getString("attribute"));
 
 		A1 b = new A1();
 		A2 tl = new A2();
@@ -174,7 +174,7 @@ public class CommonParser_UrlEncodingTest {
 		WriterSerializer s = UrlEncodingSerializer.DEFAULT;
 		ReaderParser p = UrlEncodingParser.DEFAULT;
 
-		List l = new ObjectList("foo","bar");
+		List l = OList.of("foo","bar");
 		assertEquals("0=foo&1=bar", s.serialize(l));
 
 		String in =  "0=foo&1=bar";
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/Common_UrlEncodingTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/Common_UrlEncodingTest.java
index 653a46d..3b48477 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/Common_UrlEncodingTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/Common_UrlEncodingTest.java
@@ -19,7 +19,6 @@ import java.net.*;
 import java.net.URI;
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.junit.*;
@@ -191,8 +190,8 @@ public class Common_UrlEncodingTest {
 		@Beanp(properties="f1") public Map<String,Integer> x2 = AMap.of("f1",1,"f2",2);
 		@Beanp(properties="f1") public E2[] x3 = {new E2()};
 		@Beanp(properties="f1") public List<E2> x4 = AList.of(new E2());
-		@Beanp(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f2",2)};
-		@Beanp(properties="f1") public List<ObjectMap> x6 = AList.of(new ObjectMap().append("f1",1).append("f2",2));
+		@Beanp(properties="f1") public OMap[] x5 = {OMap.of("f1",1,"f2",2)};
+		@Beanp(properties="f1") public List<OMap> x6 = AList.of(OMap.of("f1",1,"f2",2));
 	}
 
 	public static class E2 {
@@ -210,7 +209,7 @@ public class Common_UrlEncodingTest {
 		F t = new F();
 		t.x1.add(new F());
 		l.add(t);
-		ObjectMap m = new ObjectMap().append("t", l);
+		OMap m = OMap.of("t", l);
 		String xml = s.serialize(m);
 		assertEquals("t=@((x1=@((x2=2)),x2=2))", xml);
 		xml = s.serialize(l);
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java
index 65d107a..1c01947 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingParserTest.java
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -440,14 +441,14 @@ public class UrlEncodingParserTest {
 	@Test
 	public void testNoValues() throws Exception {
 		UrlEncodingParser p = UrlEncodingParser.DEFAULT;
-		ObjectMap m;
+		OMap m;
 
 		String s = "?f1";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertTrue(m.containsKey("f1"));
 		assertNull(m.get("f1"));
 		s = "?f1=f2&f3";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("f2", m.get("f1"));
 		assertTrue(m.containsKey("f3"));
 		assertNull(m.get("f3"));
@@ -533,27 +534,27 @@ public class UrlEncodingParserTest {
 		assertObjectEquals("{f1:['\\'~','\\'~']}", c);
 
 		s = "?a~b=a~b";
-		ObjectMap m = p.parse(s, ObjectMap.class);
+		OMap m = p.parse(s, OMap.class);
 		assertEquals("{'a~b':'a~b'}", m.toString());
 
 		s = "?'a~b'='a~b'";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{'a~b':'a~b'}", m.toString());
 
 		s = "?~~=~~";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{'~':'~'}", m.toString());
 
 		s = "?'~~'='~~'";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{'~':'~'}", m.toString());
 
 		s = "?~~~~~~=~~~~~~";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{'~~~':'~~~'}", m.toString());
 
 		s = "?'~~~~~~'='~~~~~~'";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{'~~~':'~~~'}", m.toString());
 	}
 
@@ -568,43 +569,43 @@ public class UrlEncodingParserTest {
 	public void testWhitespace() throws Exception {
 		UrlEncodingParser p = UrlEncodingParser.DEFAULT;
 		String s;
-		ObjectMap m;
+		OMap m;
 
 		s = "?f1=foo\n\t&f2=bar\n\t";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{f1:'foo',f2:'bar'}", m.toString());
 
 		s = "?f1='\n\t'&f2='\n\t'";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("\n\t", m.getString("f1"));
 		assertEquals("\n\t", m.getString("f2"));
 
 		s = "?f1='\n\t'\n\t&f2='\n\t'\n\t";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("\n\t", m.getString("f1"));
 		assertEquals("\n\t", m.getString("f2"));
 		assertEquals("{f1:'\\n\\t',f2:'\\n\\t'}", m.toString());  // Note that JsonSerializer escapes newlines and tabs.
 
 		s = "?f1='\n\t'\n\t&f2='\n\t'\n\t";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("\n\t", m.getString("f1"));
 		assertEquals("\n\t", m.getString("f2"));
 		assertEquals("{f1:'\\n\\t',f2:'\\n\\t'}", m.toString());  // Note that JsonSerializer escapes newlines and tabs.
 
 		s = "?f1=(\n\tf1a=a,\n\tf1b=b\n\t)\n\t&f2=(\n\tf2a=a,\n\tf2b=b\n\t)\n\t";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{f1:{f1a:'a',f1b:'b'},f2:{f2a:'a',f2b:'b'}}", m.toString());  // Note that JsonSerializer escapes newlines and tabs.
 		D d = p.parse(s, D.class);
 		assertObjectEquals("{f1:{f1a:'a',f1b:'b'},f2:{f2a:'a',f2b:'b'}}", d);  // Note that JsonSerializer escapes newlines and tabs.
 
 		s = "?f1=(\n\tf1a='\n\t',\n\tf1b='\n\t'\n\t)\n\t&f2=(\n\tf2a='\n\t',\n\tf2b='\n\t'\n\t)\n\t";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{f1:{f1a:'\\n\\t',f1b:'\\n\\t'},f2:{f2a:'\\n\\t',f2b:'\\n\\t'}}", m.toString());  // Note that JsonSerializer escapes newlines and tabs.
 		d = p.parse(s, D.class);
 		assertObjectEquals("{f1:{f1a:'\\n\\t',f1b:'\\n\\t'},f2:{f2a:'\\n\\t',f2b:'\\n\\t'}}", d);  // Note that JsonSerializer escapes newlines and tabs.
 
 		s = "?f1=@(\n\tfoo,\n\tbar\n\t)\n\t&f2=@(\n\tfoo,\n\tbar\n\t)\n\t";
-		m = p.parse(s, ObjectMap.class);
+		m = p.parse(s, OMap.class);
 		assertEquals("{f1:['foo','bar'],f2:['foo','bar']}", m.toString());  // Note that JsonSerializer escapes newlines and tabs.
 
 		s = "f1=a,\n\tb,\n\tc\n\t&f2=1,\n\t2,\n\t3\n\t&f3=true,\n\tfalse\n\t";
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java
index cb894f4..293fade 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/UrlEncodingSerializerTest.java
@@ -16,7 +16,6 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
@@ -42,23 +41,23 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=a", s.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{a:'a'}");
+		t = OMap.ofJson("{a:'a'}");
 		assertEquals("a=a", s.serialize(t));
 		assertEquals("a=a", sr.serialize(t));
 
 		// Simple map
 		// Top level
-		t = new ObjectMap("{a:'b',c:123,d:false,e:true,f:null}");
+		t = OMap.ofJson("{a:'b',c:123,d:false,e:true,f:null}");
 		assertEquals("a=b&c=123&d=false&e=true&f=null", s.serialize(t));
 		assertEquals("a=b\n&c=123\n&d=false\n&e=true\n&f=null", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{a:{a:'b',c:123,d:false,e:true,f:null}}");
+		t = OMap.ofJson("{a:{a:'b',c:123,d:false,e:true,f:null}}");
 		assertEquals("a=(a=b,c=123,d=false,e=true,f=null)", s.serialize(t));
 		assertEquals("a=(\n\ta=b,\n\tc=123,\n\td=false,\n\te=true,\n\tf=null\n)", sr.serialize(t));
 
 		// Simple map with primitives as literals
-		t = new ObjectMap("{a:'b',c:'123',d:'false',e:'true',f:'null'}");
+		t = OMap.ofJson("{a:'b',c:'123',d:'false',e:'true',f:'null'}");
 		assertEquals("a=b&c='123'&d='false'&e='true'&f='null'", s.serialize(t));
 		assertEquals("a=b\n&c='123'\n&d='false'\n&e='true'\n&f='null'", sr.serialize(t));
 
@@ -70,12 +69,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=null", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{null:null}");
+		t = OMap.ofJson("{null:null}");
 		assertEquals("null=null", s.serialize(t));
 		assertEquals("null=null", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{null:{null:null}}");
+		t = OMap.ofJson("{null:{null:null}}");
 		assertEquals("null=(null=null)", s.serialize(t));
 		assertEquals("null=(\n\tnull=null\n)", sr.serialize(t));
 
@@ -86,7 +85,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("", sr.serialize(t));
 
 		// 2nd level in map
-		t = new ObjectMap("{x:[]}");
+		t = OMap.ofJson("{x:[]}");
 		assertEquals("x=@()", s.serialize(t));
 		assertEquals("x=@()", sr.serialize(t));
 
@@ -102,7 +101,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("0=''", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:['']}");
+		t = OMap.ofJson("{x:['']}");
 		assertEquals("x=@('')", s.serialize(t));
 		assertEquals("x=@(\n\t''\n)", sr.serialize(t));
 
@@ -118,7 +117,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=%00", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'\u0000':'\u0000'}");
+		t = OMap.ofJson("{'\u0000':'\u0000'}");
 		assertEquals("%00=%00", s.serialize(t));
 		assertEquals("%00=%00", sr.serialize(t));
 
@@ -129,7 +128,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=false", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:false}");
+		t = OMap.ofJson("{x:false}");
 		assertEquals("x=false", s.serialize(t));
 		assertEquals("x=false", sr.serialize(t));
 
@@ -140,7 +139,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=123", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:123}");
+		t = OMap.ofJson("{x:123}");
 		assertEquals("x=123", s.serialize(t));
 		assertEquals("x=123", sr.serialize(t));
 
@@ -151,7 +150,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=x;/?:@-_.!*~'", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{x:'x;/?:@-_.!*\\''}");
+		t = OMap.ofJson("{x:'x;/?:@-_.!*\\''}");
 		assertEquals("x=x;/?:@-_.!*~'", s.serialize(t));
 		assertEquals("x=x;/?:@-_.!*~'", sr.serialize(t));
 
@@ -162,7 +161,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'x{}|\\\\^[]`<>#%\"&+':'x{}|\\\\^[]`<>#%\"&+'}");
+		t = OMap.ofJson("{'x{}|\\\\^[]`<>#%\"&+':'x{}|\\\\^[]`<>#%\"&+'}");
 		assertEquals("x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B=x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B", s.serialize(t));
 		assertEquals("x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B=x%7B%7D%7C%5C%5E%5B%5D%60%3C%3E%23%25%22%26%2B", sr.serialize(t));
 
@@ -173,12 +172,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value='x$,()~~'", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'x$,()~':'x$,()~'}");
+		t = OMap.ofJson("{'x$,()~':'x$,()~'}");
 		assertEquals("'x$,()~~'='x$,()~~'", s.serialize(t));
 		assertEquals("'x$,()~~'='x$,()~~'", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'x$,()~':{'x$,()~':'x$,()~'}}");
+		t = OMap.ofJson("{'x$,()~':{'x$,()~':'x$,()~'}}");
 		assertEquals("'x$,()~~'=('x$,()~~'='x$,()~~')", s.serialize(t));
 		assertEquals("'x$,()~~'=(\n\t'x$,()~~'='x$,()~~'\n)", sr.serialize(t));
 
@@ -190,12 +189,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value='x='", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'x=':'x='}");
+		t = OMap.ofJson("{'x=':'x='}");
 		assertEquals("'x%3D'='x='", s.serialize(t));
 		assertEquals("'x%3D'='x='", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'x=':{'x=':'x='}}");
+		t = OMap.ofJson("{'x=':{'x=':'x='}}");
 		assertEquals("'x%3D'=('x='='x=')", s.serialize(t));
 		assertEquals("'x%3D'=(\n\t'x='='x='\n)", sr.serialize(t));
 
@@ -206,7 +205,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value='()'", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'()':'()'}");
+		t = OMap.ofJson("{'()':'()'}");
 		assertEquals("'()'='()'", s.serialize(t));
 		assertEquals("'()'='()'", sr.serialize(t));
 
@@ -217,7 +216,7 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=$a", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{$a:'$a'}");
+		t = OMap.ofJson("{$a:'$a'}");
 		assertEquals("$a=$a", s.serialize(t));
 		assertEquals("$a=$a", sr.serialize(t));
 
@@ -228,12 +227,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=''", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'':''}");
+		t = OMap.ofJson("{'':''}");
 		assertEquals("''=''", s.serialize(t));
 		assertEquals("''=''", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'':{'':''}}");
+		t = OMap.ofJson("{'':{'':''}}");
 		assertEquals("''=(''='')", s.serialize(t));
 		assertEquals("''=(\n\t''=''\n)", sr.serialize(t));
 
@@ -244,12 +243,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value='%0A'", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'\n':'\n'}");
+		t = OMap.ofJson("{'\n':'\n'}");
 		assertEquals("'%0A'='%0A'", s.serialize(t));
 		assertEquals("'%0A'='%0A'", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'\n':{'\n':'\n'}}");
+		t = OMap.ofJson("{'\n':{'\n':'\n'}}");
 		assertEquals("'%0A'=('%0A'='%0A')", s.serialize(t));
 		assertEquals("'%0A'=(\n\t'%0A'='%0A'\n)", sr.serialize(t));
 	}
@@ -268,12 +267,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=%C2%A2", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'¢':'¢'}");
+		t = OMap.ofJson("{'¢':'¢'}");
 		assertEquals("%C2%A2=%C2%A2", s.serialize(t));
 		assertEquals("%C2%A2=%C2%A2", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'¢':{'¢':'¢'}}");
+		t = OMap.ofJson("{'¢':{'¢':'¢'}}");
 		assertEquals("%C2%A2=(%C2%A2=%C2%A2)", s.serialize(t));
 		assertEquals("%C2%A2=(\n\t%C2%A2=%C2%A2\n)", sr.serialize(t));
 
@@ -284,12 +283,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=%E2%82%AC", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'€':'€'}");
+		t = OMap.ofJson("{'€':'€'}");
 		assertEquals("%E2%82%AC=%E2%82%AC", s.serialize(t));
 		assertEquals("%E2%82%AC=%E2%82%AC", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'€':{'€':'€'}}");
+		t = OMap.ofJson("{'€':{'€':'€'}}");
 		assertEquals("%E2%82%AC=(%E2%82%AC=%E2%82%AC)", s.serialize(t));
 		assertEquals("%E2%82%AC=(\n\t%E2%82%AC=%E2%82%AC\n)", sr.serialize(t));
 
@@ -300,12 +299,12 @@ public class UrlEncodingSerializerTest {
 		assertEquals("_value=%F0%A4%AD%A2", sr.serialize(t));
 
 		// 2nd level
-		t = new ObjectMap("{'𤭢':'𤭢'}");
+		t = OMap.ofJson("{'𤭢':'𤭢'}");
 		assertEquals("%F0%A4%AD%A2=%F0%A4%AD%A2", s.serialize(t));
 		assertEquals("%F0%A4%AD%A2=%F0%A4%AD%A2", sr.serialize(t));
 
 		// 3rd level
-		t = new ObjectMap("{'𤭢':{'𤭢':'𤭢'}}");
+		t = OMap.ofJson("{'𤭢':{'𤭢':'𤭢'}}");
 		assertEquals("%F0%A4%AD%A2=(%F0%A4%AD%A2=%F0%A4%AD%A2)", s.serialize(t));
 		assertEquals("%F0%A4%AD%A2=(\n\t%F0%A4%AD%A2=%F0%A4%AD%A2\n)", sr.serialize(t));
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/FilteredMapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/FilteredMapTest.java
index 31eb2fc..b61ead1 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/FilteredMapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/FilteredMapTest.java
@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.junit.*;
 
@@ -30,7 +31,7 @@ public class FilteredMapTest {
 	//====================================================================================================
 	@Test
 	public void testBasic() throws Exception {
-		ObjectMap m = new ObjectMap("{a:'1',b:'2'}");
+		OMap m = OMap.ofJson("{a:'1',b:'2'}");
 
 		ClassMeta<Map<String,Object>> cm = BeanContext.DEFAULT.getClassMeta(Map.class, String.class, Object.class);
 		ClassMeta<Map<String,String>> cm2 = BeanContext.DEFAULT.getClassMeta(Map.class, String.class, String.class);
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MultiIterableTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MultiIterableTest.java
index db55a81..f2d23e1 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MultiIterableTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/MultiIterableTest.java
@@ -17,7 +17,7 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.junit.*;
 
@@ -30,9 +30,9 @@ public class MultiIterableTest {
 	@Test
 	public void test() throws Exception {
 		List
-			l1 = new ObjectList(),
-			l2 = new ObjectList("['a','b']"),
-			l3 = new ObjectList("['c']");
+			l1 = new OList(),
+			l2 = new OList("['a','b']"),
+			l3 = new OList("['c']");
 
 		MultiIterable mi = new MultiIterable(l1.iterator(),l2.iterator());
 		mi.append(l3.iterator());
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
index 722a55b..caa7b55 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
@@ -18,6 +18,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
@@ -33,11 +34,11 @@ public class PojoRestTest {
 
 		// TODO: Need to write some exhaustive tests here. Will open work item
 		// to do that later.
-		PojoRest model = new PojoRest(new ObjectMap()); // An empty model.
+		PojoRest model = new PojoRest(new OMap()); // An empty model.
 
 		// Do a PUT
-		model.put("A", new ObjectMap());
-		model.put("A/B", new ObjectMap());
+		model.put("A", new OMap());
+		model.put("A/B", new OMap());
 		model.put("A/B/C", "A new string");
 		assertEquals("{A:{B:{C:'A new string'}}}", model.toString());
 
@@ -63,7 +64,7 @@ public class PojoRestTest {
 		PojoRest model;
 
 		// Java beans.
-		model = new PojoRest(new ObjectMap());
+		model = new PojoRest(new OMap());
 		Person p = new Person("some name", 123,
 			new Address("street A", "city A", "state A", 12345, true),
 			new Address("street B", "city B", "state B", 12345, false)
@@ -159,7 +160,7 @@ public class PojoRestTest {
 
 		// Make sure we can get non-existent branches without throwing any exceptions.
 		// get() method should just return null.
-		model = new PojoRest(new ObjectMap());
+		model = new PojoRest(new OMap());
 		Object o = model.get("xxx");
 		assertEquals("null", (""+o));
 
@@ -170,17 +171,17 @@ public class PojoRestTest {
 		assertEquals("{}", s);
 
 		// Make sure doing a PUT against "" or "/" replaces the root object.
-		ObjectMap m2 = new ObjectMap("{x:1}");
+		OMap m2 = OMap.ofJson("{x:1}");
 		model.put("", m2);
 		s = model.get("").toString();
 		assertEquals("{x:1}", s);
-		m2 = new ObjectMap("{x:2}");
+		m2 = OMap.ofJson("{x:2}");
 		model.put("/", m2);
 		s = model.get("").toString();
 		assertEquals("{x:2}", s);
 
 		// Make sure doing a POST against "" or "/" adds to the root object.
-		model = new PojoRest(new ObjectList());
+		model = new PojoRest(new OList());
 		model.post("", new Integer(1));
 		model.post("/", new Integer(2));
 		s = model.get("").toString();
@@ -335,16 +336,16 @@ public class PojoRestTest {
 	// getMap(String url, Map<?,?> defVal)
 	// getList(String url)
 	// getList(String url, List<?> defVal)
-	// getObjectMap(String url)
-	// getObjectMap(String url, ObjectMap defVal)
-	// getObjectList(String url)
-	// getObjectList(String url, ObjectList defVal)
+	// getOMap(String url)
+	// getOMap(String url, OMap defVal)
+	// getOList(String url)
+	// getOList(String url, OList defVal)
 	//====================================================================================================
 	@Test
 	public void testGetMethods() throws Exception {
 		PojoRest model = new PojoRest(new A());
-		ObjectList l = new ObjectList("[{a:'b'}]");
-		ObjectMap m = new ObjectMap("{a:'b'}");
+		OList l = OList.ofJson("[{a:'b'}]");
+		OMap m = OMap.ofJson("{a:'b'}");
 
 		assertNull(model.get("f1"));
 		assertEquals(0, model.get("f2"));
@@ -491,28 +492,28 @@ public class PojoRestTest {
 		assertEquals("{a:'b'}", model.getMap("f8", m).toString());
 
 		assertNull(model.getMap("f1"));
-		try { model.getObjectMap("f2"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f3"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f4"); fail(); } catch (InvalidDataConversionException e) {}
-		assertNull(model.getObjectMap("f2a"));
-		assertNull(model.getObjectMap("f3a"));
-		assertNull(model.getObjectMap("f4a"));
-		assertNull(model.getObjectMap("f5"));
-		assertNull(model.getObjectMap("f6"));
-		assertNull(model.getObjectMap("f7"));
-		assertNull(model.getObjectMap("f8"));
-
-		assertEquals("{a:'b'}", model.getObjectMap("f1", m).toString());
-		try { model.getObjectMap("f2", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f3", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f4", m); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("{a:'b'}", model.getObjectMap("f2a", m).toString());
-		assertEquals("{a:'b'}", model.getObjectMap("f3a", m).toString());
-		assertEquals("{a:'b'}", model.getObjectMap("f4a", m).toString());
-		assertEquals("{a:'b'}", model.getObjectMap("f5", m).toString());
-		assertEquals("{a:'b'}", model.getObjectMap("f6", m).toString());
-		assertEquals("{a:'b'}", model.getObjectMap("f7", m).toString());
-		assertEquals("{a:'b'}", model.getObjectMap("f8", m).toString());
+		try { model.getOMap("f2"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f3"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f4"); fail(); } catch (InvalidDataConversionException e) {}
+		assertNull(model.getOMap("f2a"));
+		assertNull(model.getOMap("f3a"));
+		assertNull(model.getOMap("f4a"));
+		assertNull(model.getOMap("f5"));
+		assertNull(model.getOMap("f6"));
+		assertNull(model.getOMap("f7"));
+		assertNull(model.getOMap("f8"));
+
+		assertEquals("{a:'b'}", model.getOMap("f1", m).toString());
+		try { model.getOMap("f2", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f3", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f4", m); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("{a:'b'}", model.getOMap("f2a", m).toString());
+		assertEquals("{a:'b'}", model.getOMap("f3a", m).toString());
+		assertEquals("{a:'b'}", model.getOMap("f4a", m).toString());
+		assertEquals("{a:'b'}", model.getOMap("f5", m).toString());
+		assertEquals("{a:'b'}", model.getOMap("f6", m).toString());
+		assertEquals("{a:'b'}", model.getOMap("f7", m).toString());
+		assertEquals("{a:'b'}", model.getOMap("f8", m).toString());
 
 		assertNull(model.getList("f1"));
 		try { model.getList("f2"); fail(); } catch (InvalidDataConversionException e) {}
@@ -538,29 +539,29 @@ public class PojoRestTest {
 		assertEquals("[{a:'b'}]", model.getList("f7", l).toString());
 		assertEquals("[{a:'b'}]", model.getList("f8", l).toString());
 
-		assertNull(model.getObjectList("f1"));
-		try { model.getObjectList("f2"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f3"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f4"); fail(); } catch (InvalidDataConversionException e) {}
-		assertNull(model.getObjectList("f2a"));
-		assertNull(model.getObjectList("f3a"));
-		assertNull(model.getObjectList("f4a"));
-		assertNull(model.getObjectList("f5"));
-		assertNull(model.getObjectList("f6"));
-		assertNull(model.getObjectList("f7"));
-		assertNull(model.getObjectList("f8"));
-
-		assertEquals("[{a:'b'}]", model.getObjectList("f1", l).toString());
-		try { model.getObjectList("f2", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f3", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f4", l); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("[{a:'b'}]", model.getObjectList("f2a", l).toString());
-		assertEquals("[{a:'b'}]", model.getObjectList("f3a", l).toString());
-		assertEquals("[{a:'b'}]", model.getObjectList("f4a", l).toString());
-		assertEquals("[{a:'b'}]", model.getObjectList("f5", l).toString());
-		assertEquals("[{a:'b'}]", model.getObjectList("f6", l).toString());
-		assertEquals("[{a:'b'}]", model.getObjectList("f7", l).toString());
-		assertEquals("[{a:'b'}]", model.getObjectList("f8", l).toString());
+		assertNull(model.getOList("f1"));
+		try { model.getOList("f2"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f3"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f4"); fail(); } catch (InvalidDataConversionException e) {}
+		assertNull(model.getOList("f2a"));
+		assertNull(model.getOList("f3a"));
+		assertNull(model.getOList("f4a"));
+		assertNull(model.getOList("f5"));
+		assertNull(model.getOList("f6"));
+		assertNull(model.getOList("f7"));
+		assertNull(model.getOList("f8"));
+
+		assertEquals("[{a:'b'}]", model.getOList("f1", l).toString());
+		try { model.getOList("f2", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f3", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f4", l); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("[{a:'b'}]", model.getOList("f2a", l).toString());
+		assertEquals("[{a:'b'}]", model.getOList("f3a", l).toString());
+		assertEquals("[{a:'b'}]", model.getOList("f4a", l).toString());
+		assertEquals("[{a:'b'}]", model.getOList("f5", l).toString());
+		assertEquals("[{a:'b'}]", model.getOList("f6", l).toString());
+		assertEquals("[{a:'b'}]", model.getOList("f7", l).toString());
+		assertEquals("[{a:'b'}]", model.getOList("f8", l).toString());
 
 		((A)model.getRootObject()).init();
 
@@ -708,29 +709,29 @@ public class PojoRestTest {
 		assertEquals("{f5a:'a'}", model.getMap("f7", m).toString());
 		try { model.getMap("f8", m); fail(); } catch (InvalidDataConversionException e) {}
 
-		try { model.getObjectMap("f1"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f2"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f3"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f4"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f2a"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f3a"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f4a"); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("{f5a:'a'}", model.getObjectMap("f5").toString());
-		try { model.getObjectMap("f6"); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("{f5a:'a'}", model.getObjectMap("f7").toString());
-		try { model.getObjectMap("f8"); fail(); } catch (InvalidDataConversionException e) {}
-
-		try { model.getObjectMap("f1", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f2", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f3", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f4", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f2a", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f3a", m); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectMap("f4a", m); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("{f5a:'a'}", model.getObjectMap("f5", m).toString());
-		try { model.getObjectMap("f6", m); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("{f5a:'a'}", model.getObjectMap("f7", m).toString());
-		try { model.getObjectMap("f8", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f1"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f2"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f3"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f4"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f2a"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f3a"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f4a"); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("{f5a:'a'}", model.getOMap("f5").toString());
+		try { model.getOMap("f6"); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("{f5a:'a'}", model.getOMap("f7").toString());
+		try { model.getOMap("f8"); fail(); } catch (InvalidDataConversionException e) {}
+
+		try { model.getOMap("f1", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f2", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f3", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f4", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f2a", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f3a", m); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOMap("f4a", m); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("{f5a:'a'}", model.getOMap("f5", m).toString());
+		try { model.getOMap("f6", m); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("{f5a:'a'}", model.getOMap("f7", m).toString());
+		try { model.getOMap("f8", m); fail(); } catch (InvalidDataConversionException e) {}
 
 		try { model.getList("f1"); fail(); } catch (InvalidDataConversionException e) {}
 		try { model.getList("f2"); fail(); } catch (InvalidDataConversionException e) {}
@@ -756,29 +757,29 @@ public class PojoRestTest {
 		assertEquals("[{f5a:'a'}]", model.getList("f7", l).toString());
 		assertEquals("[{f6a:'a'}]", model.getList("f8", l).toString());
 
-		try { model.getObjectList("f1"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f2"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f3"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f4"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f2a"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f3a"); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f4a"); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("[{f5a:'a'}]", model.getObjectList("f5").toString());
-		assertEquals("[{f6a:'a'}]", model.getObjectList("f6").toString());
-		assertEquals("[{f5a:'a'}]", model.getObjectList("f7").toString());
-		assertEquals("[{f6a:'a'}]", model.getObjectList("f8").toString());
-
-		try { model.getObjectList("f1", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f2", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f3", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f4", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f2a", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f3a", l); fail(); } catch (InvalidDataConversionException e) {}
-		try { model.getObjectList("f4a", l); fail(); } catch (InvalidDataConversionException e) {}
-		assertEquals("[{f5a:'a'}]", model.getObjectList("f5", l).toString());
-		assertEquals("[{f6a:'a'}]", model.getObjectList("f6", l).toString());
-		assertEquals("[{f5a:'a'}]", model.getObjectList("f7", l).toString());
-		assertEquals("[{f6a:'a'}]", model.getObjectList("f8", l).toString());
+		try { model.getOList("f1"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f2"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f3"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f4"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f2a"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f3a"); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f4a"); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("[{f5a:'a'}]", model.getOList("f5").toString());
+		assertEquals("[{f6a:'a'}]", model.getOList("f6").toString());
+		assertEquals("[{f5a:'a'}]", model.getOList("f7").toString());
+		assertEquals("[{f6a:'a'}]", model.getOList("f8").toString());
+
+		try { model.getOList("f1", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f2", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f3", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f4", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f2a", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f3a", l); fail(); } catch (InvalidDataConversionException e) {}
+		try { model.getOList("f4a", l); fail(); } catch (InvalidDataConversionException e) {}
+		assertEquals("[{f5a:'a'}]", model.getOList("f5", l).toString());
+		assertEquals("[{f6a:'a'}]", model.getOList("f6", l).toString());
+		assertEquals("[{f5a:'a'}]", model.getOList("f7", l).toString());
+		assertEquals("[{f6a:'a'}]", model.getOList("f8", l).toString());
 	}
 
 	public static class A {
@@ -791,8 +792,8 @@ public class PojoRestTest {
 		public Boolean f4a;
 		public Map f5;
 		public List f6;
-		public ObjectMap f7;
-		public ObjectList f8;
+		public OMap f7;
+		public OList f8;
 
 		public A init() {
 			f1 = "1";
@@ -803,10 +804,10 @@ public class PojoRestTest {
 			f3a = 3l;
 			f4a = true;
 			try {
-				f5 = new ObjectMap("{f5a:'a'}");
-				f6 = new ObjectList("[{f6a:'a'}]");
-				f7 = new ObjectMap("{f5a:'a'}");
-				f8 = new ObjectList("[{f6a:'a'}]");
+				f5 = OMap.ofJson("{f5a:'a'}");
+				f6 = OList.ofJson("[{f6a:'a'}]");
+				f7 = OMap.ofJson("{f5a:'a'}");
+				f8 = OList.ofJson("[{f6a:'a'}]");
 			} catch (ParseException e) {
 				throw new RuntimeException(e);
 			}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
index 1a985e8..47dc76f 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/StringUtilsTest.java
@@ -20,7 +20,7 @@ import java.math.*;
 import java.util.*;
 import java.util.concurrent.atomic.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
@@ -297,7 +297,7 @@ public class StringUtilsTest {
 	//====================================================================================================
 	@Test
 	public void testReplaceVars() throws Exception {
-		ObjectMap m = new ObjectMap("{a:'A',b:1,c:true,d:'{e}',e:'E{f}E',f:'F',g:'{a}',h:'a',i:null}");
+		OMap m = OMap.ofJson("{a:'A',b:1,c:true,d:'{e}',e:'E{f}E',f:'F',g:'{a}',h:'a',i:null}");
 
 		String s = "xxx";
 		assertEquals("xxx", replaceVars(s, m));
@@ -845,27 +845,27 @@ public class StringUtilsTest {
 	}
 
 	//====================================================================================================
-	// testIsObjectMap(Object)
+	// testIsJsonObject(Object)
 	//====================================================================================================
 	@Test
-	public void testIsObjectMap() {
-		assertTrue(isObjectMap("{foo:'bar'}", true));
-		assertTrue(isObjectMap(" { foo:'bar' } ", true));
-		assertFalse(isObjectMap(" { foo:'bar'  ", true));
-		assertFalse(isObjectMap("  foo:'bar' } ", true));
-		assertTrue(isObjectMap("/*foo*/ { foo:'bar' } /*foo*/", true));
+	public void testIsJsonObject() {
+		assertTrue(isJsonObject("{foo:'bar'}", true));
+		assertTrue(isJsonObject(" { foo:'bar' } ", true));
+		assertFalse(isJsonObject(" { foo:'bar'  ", true));
+		assertFalse(isJsonObject("  foo:'bar' } ", true));
+		assertTrue(isJsonObject("/*foo*/ { foo:'bar' } /*foo*/", true));
 	}
 
 	//====================================================================================================
-	// testIsObjectMap(Object)
+	// isJsonArray(Object)
 	//====================================================================================================
 	@Test
-	public void testIsObjectList() {
-		assertTrue(isObjectList("[123,'bar']", true));
-		assertTrue(isObjectList(" [ 123,'bar' ] ", true));
-		assertFalse(isObjectList(" [ 123,'bar'  ", true));
-		assertFalse(isObjectList("  123,'bar' ] ", true));
-		assertTrue(isObjectList("/*foo*/ [ 123,'bar' ] /*foo*/", true));
+	public void testIsJsonArray() {
+		assertTrue(isJsonArray("[123,'bar']", true));
+		assertTrue(isJsonArray(" [ 123,'bar' ] ", true));
+		assertFalse(isJsonArray(" [ 123,'bar'  ", true));
+		assertFalse(isJsonArray("  123,'bar' ] ", true));
+		assertTrue(isJsonArray("/*foo*/ [ 123,'bar' ] /*foo*/", true));
 	}
 
 	//====================================================================================================
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
index 4acf0e8..b20f2be 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
@@ -16,8 +16,8 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.xml.annotation.*;
 import org.junit.*;
 import org.junit.runner.*;
@@ -1424,7 +1424,7 @@ public class BasicXmlTest {
 		@Xml(format=XmlFormat.ATTR)
 		public int b;
 		BeanWithXmlFormatAttrsProperty init() {
-			a = new ObjectMap().append("k1", "foo").append("k2", 123);
+			a = OMap.of("k1", "foo", "k2", 123);
 			b = 456;
 			return this;
 		}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java
index ea4a7ee..f007ea9 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonParserTest.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -56,14 +56,14 @@ public class CommonParserTest {
 		assertEquals("street A", m.get("street"));
 		assertEquals(12345, m.get("zip"));
 
-		ObjectList jl = (ObjectList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
-		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-		assertEquals("value", jl.getObjectMap(1).getString("attribute"));
+		OList jl = (OList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
+		assertEquals("value", jl.getMap(0).getString("attribute"));
+		assertEquals("value", jl.getMap(1).getString("attribute"));
 
 		try {
-			jl = (ObjectList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
-			assertEquals("value", jl.getObjectMap(0).getString("attribute"));
-			assertEquals("value", jl.getObjectMap(1).getString("attribute"));
+			jl = (OList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
+			assertEquals("value", jl.getMap(0).getString("attribute"));
+			assertEquals("value", jl.getMap(1).getString("attribute"));
 		} catch (Exception e) {
 			fail(e.getLocalizedMessage());
 		}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonTest.java
index 02dec50..52e088c 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonTest.java
@@ -20,7 +20,6 @@ import java.net.*;
 import java.net.URI;
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.jena.annotation.*;
@@ -209,8 +208,8 @@ public class CommonTest {
 		@Beanp(properties="f1,f2") public Map<String,Integer> x2 = AMap.of("f1",1,"f3",3);
 		@Beanp(properties="f1,f2") public E2[] x3 = {new E2()};
 		@Beanp(properties="f1,f2") public List<E2> x4 = AList.of(new E2());
-		@Beanp(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f3",3)};
-		@Beanp(properties="f1") public List<ObjectMap> x6 = AList.of(new ObjectMap().append("f1",1).append("f3",3));
+		@Beanp(properties="f1") public OMap[] x5 = {OMap.of("f1",1,"f3",3)};
+		@Beanp(properties="f1") public List<OMap> x6 = AList.of(OMap.of("f1",1,"f3",3));
 	}
 
 	public static class E2 {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java
index 523f757..efb1b04 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.xml.annotation.*;
 import org.junit.*;
 import org.junit.runner.*;
@@ -159,72 +159,72 @@ public class InvalidXmlBeansTest {
 
 	public static class BeanWithMultipleAttrs {
 		@Xml(format=XmlFormat.ATTRS)
-		public ObjectMap f1;
+		public OMap f1;
 		@Xml(format=XmlFormat.ATTRS)
-		public ObjectMap f2;
+		public OMap f2;
 	}
 
 	public static class BeanWithWrongAttrsType {
 		@Xml(format=XmlFormat.ATTRS)
-		public ObjectList f1;
+		public OList f1;
 	}
 
 	public static class BeanWithMulipleElements {
 		@Xml(format=XmlFormat.ELEMENTS)
-		public ObjectList f1;
+		public OList f1;
 		@Xml(format=XmlFormat.ELEMENTS)
-		public ObjectList f2;
+		public OList f2;
 	}
 
 	public static class BeanWithWrongElementsType {
 		@Xml(format=XmlFormat.ELEMENTS)
-		public ObjectMap f1;
+		public OMap f1;
 	}
 
 	public static class BeanWithMulipleMixed {
 		@Xml(format=XmlFormat.MIXED)
-		public ObjectList f1;
+		public OList f1;
 		@Xml(format=XmlFormat.MIXED)
-		public ObjectList f2;
+		public OList f2;
 	}
 
 	public static class BeanWithConflictingChildNames {
 		@Xml(format=XmlFormat.COLLAPSED, childName="X")
-		public ObjectList f1;
+		public OList f1;
 		@Xml(format=XmlFormat.COLLAPSED, childName="X")
-		public ObjectList f2;
+		public OList f2;
 	}
 
 	public static class BeanWithElementsAndMixed {
 		@Xml(format=XmlFormat.ELEMENTS)
-		public ObjectList f1;
+		public OList f1;
 		@Xml(format=XmlFormat.MIXED)
-		public ObjectList f2;
+		public OList f2;
 	}
 
 	public static class BeanWithElementsAndElement {
 		@Xml(format=XmlFormat.ELEMENTS)
-		public ObjectList f1;
+		public OList f1;
 		@Xml(format=XmlFormat.ELEMENT)
-		public ObjectList f2;
+		public OList f2;
 	}
 
 	public static class BeanWithElementsAndDefault {
 		@Xml(format=XmlFormat.ELEMENTS)
-		public ObjectList f1;
-		public ObjectList f2;
+		public OList f1;
+		public OList f2;
 	}
 
 	public static class BeanWithElementsAndCollapsed {
 		@Xml(format=XmlFormat.ELEMENTS)
-		public ObjectList f1;
+		public OList f1;
 		@Xml(format=XmlFormat.COLLAPSED)
-		public ObjectList f2;
+		public OList f2;
 	}
 
 	public static class BeanWithChildAndPropNameConflict {
 		@Xml(format=XmlFormat.COLLAPSED, childName="f2")
-		public ObjectList f1;
-		public ObjectList f2;
+		public OList f1;
+		public OList f2;
 	}
 }
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreCommentsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreCommentsTest.java
index e163eee..6a7fc2e 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreCommentsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlIgnoreCommentsTest.java
@@ -17,6 +17,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.testutils.*;
 import org.apache.juneau.xml.annotation.*;
 import org.junit.*;
@@ -974,7 +975,7 @@ public class XmlIgnoreCommentsTest {
 		@Xml(format=XmlFormat.ATTR)
 		public int b;
 		BeanWithXmlFormatAttrsProperty init() {
-			a = new ObjectMap().append("k1", "foo").append("k2", "123");
+			a = OMap.of("k1", "foo", "k2", "123");
 			b = 456;
 			return this;
 		}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlParserTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlParserTest.java
index 996e05b..ba71612 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlParserTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlParserTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.xml;
 
 import static org.junit.Assert.*;
 
-import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.junit.*;
 
@@ -23,72 +23,72 @@ public class XmlParserTest {
 	@Test
 	public void testGenericAttributes() throws Exception {
 		String xml = "<A b='1'><c>2</c></A>";
-		ObjectMap m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		OMap m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{b:'1',c:'2'}", m.toString());
 	}
 
 	@Test
 	public void testGenericWithChildElements() throws Exception {
 		String xml;
-		ObjectMap m;
+		OMap m;
 
 		xml = "<A><B><C>c</C></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{C:'c'}}", m.toString());
 
 		xml = "<A><B><C1>c1</C1><C2>c2</C2></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{C1:'c1',C2:'c2'}}", m.toString());
 
 		xml = "<A><B><C><D1>d1</D1><D2>d2</D2></C></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{C:{D1:'d1',D2:'d2'}}}", m.toString());
 
 		xml = "<A><B><C><D1 d1a='d1av'><E1>e1</E1></D1><D2 d2a='d2av'><E2>e2</E2></D2></C></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{C:{D1:{d1a:'d1av',E1:'e1'},D2:{d2a:'d2av',E2:'e2'}}}}", m.toString());
 
 		xml = "<A><B b='b'><C>c</C></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{b:'b',C:'c'}}", m.toString());
 
 		xml = "<A><B b='b'>c</B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{b:'b',contents:'c'}}", m.toString());
 
 		xml = "<A><B>b1</B><B>b2</B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:['b1','b2']}", m.toString());
 
 		xml = "<A><B><C>c1</C><C>c2</C></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{C:['c1','c2']}}", m.toString());
 
 		xml = "<A><B v='v1'>b1</B><B v='v2'>b2</B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:[{v:'v1',contents:'b1'},{v:'v2',contents:'b2'}]}", m.toString());
 
 		xml = "<A><B><C v='v1'>c1</C><C v='v2'>c2</C></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{C:[{v:'v1',contents:'c1'},{v:'v2',contents:'c2'}]}}", m.toString());
 
 		xml = "<A><B c='c1'><c>c2</c></B></A>";
-		m = XmlParser.DEFAULT.parse(xml, ObjectMap.class);
+		m = XmlParser.DEFAULT.parse(xml, OMap.class);
 		assertEquals("{B:{c:['c1','c2']}}", m.toString());
 	}
 
 	@Test
 	public void testPreserveRootElement() throws Exception {
 		String xml;
-		ObjectMap m;
+		OMap m;
 		ReaderParser p = XmlParser.create().preserveRootElement().build();
 
 		xml = "<A><B><C>c</C></B></A>";
-		m = p.parse(xml, ObjectMap.class);
+		m = p.parse(xml, OMap.class);
 		assertEquals("{A:{B:{C:'c'}}}", m.toString());
 
 		xml = "<A></A>";
-		m = p.parse(xml, ObjectMap.class);
+		m = p.parse(xml, OMap.class);
 		assertEquals("{A:{}}", m.toString());
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java
index ea85a74..2f177be 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java
@@ -19,7 +19,6 @@ import static org.junit.Assert.*;
 import java.net.*;
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.jena.annotation.*;
@@ -77,11 +76,11 @@ public class XmlTest {
 			+"	<fico_x0020_score>_x0020_&gt; 640</fico_x0020_score>\n"
 			+"</object>\n";
 
-		ObjectMap m = (ObjectMap) XmlParser.DEFAULT.parse(xml1, Object.class);
+		OMap m = (OMap) XmlParser.DEFAULT.parse(xml1, Object.class);
 		String json2 = JsonSerializer.create().simple().ws().trimNullProperties(false).build().serialize(m);
 		assertEquals(json1, json2);
 
-		m = (ObjectMap) JsonParser.DEFAULT.parse(json1, Object.class);
+		m = (OMap) JsonParser.DEFAULT.parse(json1, Object.class);
 		String xml2 = XmlSerializer.create().sq().ws()
 			.trimNullProperties(false)
 			.build()
@@ -133,7 +132,7 @@ public class XmlTest {
 			+"	<fico_x0020_score>_x0020_&gt; 640</fico_x0020_score>\n"
 			+"</object>\n";
 
-		ObjectMap m = (ObjectMap) JsonParser.DEFAULT.parse(json1, Object.class);
+		OMap m = (OMap) JsonParser.DEFAULT.parse(json1, Object.class);
 		String r = XmlSerializer.create().ns().sq().ws()
 			.addNamespaceUrisToRoot()
 			.defaultNamespace("http://www.apache.org")
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
index 0f0095d..f19d296 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
@@ -1127,8 +1127,8 @@ public class Items extends SwaggerElement {
 
 	/* Resolve references in extra attributes */
 	private Object resolveRefs(Object o, Swagger swagger, Deque<String> refStack, int maxDepth) {
-		if (o instanceof ObjectMap) {
-			ObjectMap om = (ObjectMap)o;
+		if (o instanceof OMap) {
+			OMap om = (OMap)o;
 			Object ref = om.get("$ref");
 			if (ref instanceof CharSequence) {
 				String sref = ref.toString();
@@ -1143,8 +1143,8 @@ public class Items extends SwaggerElement {
 			for (Map.Entry<String,Object> e : om.entrySet())
 				e.setValue(resolveRefs(e.getValue(), swagger, refStack, maxDepth));
 		}
-		if (o instanceof ObjectList)
-			for (ListIterator<Object> li = ((ObjectList)o).listIterator(); li.hasNext();)
+		if (o instanceof OList)
+			for (ListIterator<Object> li = ((OList)o).listIterator(); li.hasNext();)
 				li.set(resolveRefs(li.next(), swagger, refStack, maxDepth));
 		return o;
 	}
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
index 9b82302..c043c1d 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
@@ -58,7 +58,7 @@ public class Swagger extends SwaggerElement {
 		produces;
 	private List<Tag> tags;
 	private List<Map<String,List<String>>> security;
-	private Map<String,ObjectMap> definitions;
+	private Map<String,OMap> definitions;
 	private Map<String,ParameterInfo> parameters;
 	private Map<String,ResponseInfo> responses;
 	private Map<String,SecurityScheme> securityDefinitions;
@@ -111,8 +111,8 @@ public class Swagger extends SwaggerElement {
 			this.definitions = null;
 		} else {
 			this.definitions = new LinkedHashMap<>();
-			for (Map.Entry<String,ObjectMap> e : copyFrom.definitions.entrySet())
-				this.definitions.put(e.getKey(), new ObjectMap(e.getValue()));
+			for (Map.Entry<String,OMap> e : copyFrom.definitions.entrySet())
+				this.definitions.put(e.getKey(), new OMap(e.getValue()));
 		}
 
 		if (copyFrom.parameters == null) {
@@ -764,7 +764,7 @@ public class Swagger extends SwaggerElement {
 	 *
 	 * @return The property value, or <jk>null</jk> if it is not set.
 	 */
-	public Map<String,ObjectMap> getDefinitions() {
+	public Map<String,OMap> getDefinitions() {
 		return definitions;
 	}
 
@@ -779,7 +779,7 @@ public class Swagger extends SwaggerElement {
 	 * 	<br>Can be <jk>null</jk> to unset the property.
 	 * @return This object (for method chaining).
 	 */
-	public Swagger setDefinitions(Map<String,ObjectMap> value) {
+	public Swagger setDefinitions(Map<String,OMap> value) {
 		definitions = newMap(value);
 		return this;
 	}
@@ -795,7 +795,7 @@ public class Swagger extends SwaggerElement {
 	 * 	<br>Ignored if <jk>null</jk>.
 	 * @return This object (for method chaining).
 	 */
-	public Swagger addDefinitions(Map<String,ObjectMap> values) {
+	public Swagger addDefinitions(Map<String,OMap> values) {
 		definitions = addToMap(definitions, values);
 		return this;
 	}
@@ -807,7 +807,7 @@ public class Swagger extends SwaggerElement {
 	 * @param schema The schema that the name defines.
 	 * @return This object (for method chaining).
 	 */
-	public Swagger definition(String name, ObjectMap schema) {
+	public Swagger definition(String name, OMap schema) {
 		definitions = addToMap(definitions, name, schema);
 		return this;
 	}
@@ -830,7 +830,7 @@ public class Swagger extends SwaggerElement {
 	 * @return This object (for method chaining).
 	 */
 	public Swagger definitions(Object...values) {
-		definitions = addToMap(definitions, values, String.class, ObjectMap.class);
+		definitions = addToMap(definitions, values, String.class, OMap.class);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SwaggerElement.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SwaggerElement.java
index 487cb7f..4928987 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SwaggerElement.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SwaggerElement.java
@@ -16,7 +16,6 @@ import static org.apache.juneau.internal.ObjectUtils.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
@@ -166,8 +165,8 @@ public abstract class SwaggerElement {
 	 *
 	 * @return A map containing all the values in this swagger element.
 	 */
-	public ObjectMap asMap() {
-		ObjectMap m = new ObjectMap();
+	public OMap asMap() {
+		OMap m = new OMap();
 		for (String s : keySet())
 			m.put(s, get(s, Object.class));
 		return m;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
index de4afe8..837ca4c 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ui/SwaggerUI.java
@@ -314,7 +314,7 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 	private Div examples(Session s, ParameterInfo pi) {
 		boolean isBody = "body".equals(pi.getIn());
 
-		ObjectMap m = new ObjectMap();
+		OMap m = new OMap();
 
 		try {
 			if (isBody) {
@@ -322,7 +322,7 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 				if (si != null)
 					m.put("model", si.copy().resolveRefs(s.swagger, new ArrayDeque<String>(), s.resolveRefsMaxDepth));
 			} else {
-				ObjectMap om = pi
+				OMap om = pi
 					.copy()
 					.resolveRefs(s.swagger, new ArrayDeque<String>(), s.resolveRefsMaxDepth)
 					.asMap()
@@ -347,7 +347,7 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 	private Div examples(Session s, ResponseInfo ri) {
 		SchemaInfo si = ri.getSchema();
 
-		ObjectMap m = new ObjectMap();
+		OMap m = new OMap();
 		try {
 			if (si != null) {
 				si = si.copy().resolveRefs(s.swagger, new ArrayDeque<String>(), s.resolveRefsMaxDepth);
@@ -368,7 +368,7 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 		return examplesDiv(m);
 	}
 
-	private Div examplesDiv(ObjectMap m) {
+	private Div examplesDiv(OMap m) {
 		if (m.isEmpty())
 			return null;
 
@@ -400,19 +400,19 @@ public class SwaggerUI extends PojoSwap<Swagger,Div> {
 	// Creates the contents under the "Model" header.
 	private Div modelsBlockContents(Session s) {
 		Div modelBlockContents = div()._class("tag-block-contents");
-		for (Map.Entry<String,ObjectMap> e : s.swagger.getDefinitions().entrySet())
+		for (Map.Entry<String,OMap> e : s.swagger.getDefinitions().entrySet())
 			modelBlockContents.child(modelBlock(e.getKey(), e.getValue()));
 		return modelBlockContents;
 	}
 
-	private Div modelBlock(String modelName, ObjectMap model) {
+	private Div modelBlock(String modelName, OMap model) {
 		return div()._class("op-block op-block-closed model").children(
 			modelBlockSummary(modelName, model),
 			div(model)._class("op-block-contents")
 		);
 	}
 
-	private HtmlElement modelBlockSummary(String modelName, ObjectMap model) {
+	private HtmlElement modelBlockSummary(String modelName, OMap model) {
 		return div()._class("op-block-summary").children(
 			span(modelName)._class("method-button"),
 			model.containsKey("description") ? span(toBRL(model.remove("description").toString()))._class("summary") : null
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
index 99af159..92a0ebb 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -355,15 +355,15 @@ public class RdfParser extends ReaderParser implements RdfCommon, RdfMetaProvide
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("RdfParser", new DefaultFilteringObjectMap()
-				.append("trimWhitespace", trimWhitespace)
-				.append("looseCollections", looseCollections)
-				.append("rdfLanguage", rdfLanguage)
-				.append("juneauNs", juneauNs)
-				.append("juneauBpNs", juneauBpNs)
-				.append("collectionFormat", collectionFormat)
+			.a("RdfParser", new DefaultFilteringOMap()
+				.a("trimWhitespace", trimWhitespace)
+				.a("looseCollections", looseCollections)
+				.a("rdfLanguage", rdfLanguage)
+				.a("juneauNs", juneauNs)
+				.a("juneauBpNs", juneauBpNs)
+				.a("collectionFormat", collectionFormat)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
index 3d2a171..71e2907 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserSession.java
@@ -21,6 +21,7 @@ import java.util.*;
 import org.apache.jena.rdf.model.*;
 import org.apache.jena.util.iterator.*;
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.transform.*;
 import org.apache.juneau.xml.*;
@@ -86,7 +87,7 @@ public class RdfParserSession extends ReaderParserSession {
 				c = (
 					type.canCreateNewInstance(getOuter())
 					? (Collection<?>)type.newInstance(getOuter())
-					: new ObjectList(this)
+					: new OList(this)
 				);
 
 			int argIndex = 0;
@@ -255,13 +256,13 @@ public class RdfParserSession extends ReaderParserSession {
 				else if (r.getProperty(pValue) != null) {
 					o = parseAnything(object(), n.asResource().getProperty(pValue).getObject(), outer, null);
 				} else if (isSeq(r)) {
-					o = new ObjectList(this);
+					o = new OList(this);
 					parseIntoCollection(r.as(Seq.class), (Collection)o, sType, pMeta);
 				} else if (isBag(r)) {
-					o = new ObjectList(this);
+					o = new OList(this);
 					parseIntoCollection(r.as(Bag.class), (Collection)o, sType, pMeta);
 				} else if (r.canAs(RDFList.class)) {
-					o = new ObjectList(this);
+					o = new OList(this);
 					parseIntoCollection(r.as(RDFList.class), (Collection)o, sType, pMeta);
 				} else {
 					// If it has a URI and no child properties, we interpret this as an
@@ -270,7 +271,7 @@ public class RdfParserSession extends ReaderParserSession {
 					if (uri != null && ! r.listProperties().hasNext()) {
 						o = r.getURI();
 					} else {
-						ObjectMap m2 = new ObjectMap(this);
+						OMap m2 = new OMap(this);
 						parseIntoMap(r, m2, null, null, pMeta);
 						o = cast(m2, pMeta, eType);
 					}
@@ -290,13 +291,13 @@ public class RdfParserSession extends ReaderParserSession {
 			Resource r = n.asResource();
 			if (! urisVisited.add(r))
 				return null;
-			Map m = (sType.canCreateNewInstance(outer) ? (Map)sType.newInstance(outer) : new ObjectMap(this));
+			Map m = (sType.canCreateNewInstance(outer) ? (Map)sType.newInstance(outer) : new OMap(this));
 			o = parseIntoMap(r, m, eType.getKeyType(), eType.getValueType(), pMeta);
 		} else if (sType.isCollectionOrArray() || sType.isArgs()) {
 			if (sType.isArray() || sType.isArgs())
 				o = new ArrayList();
 			else
-				o = (sType.canCreateNewInstance(outer) ? (Collection<?>)sType.newInstance(outer) : new ObjectList(this));
+				o = (sType.canCreateNewInstance(outer) ? (Collection<?>)sType.newInstance(outer) : new OList(this));
 			Resource r = n.asResource();
 			if (! urisVisited.add(r))
 				return null;
@@ -329,10 +330,10 @@ public class RdfParserSession extends ReaderParserSession {
 			o = sType.newInstanceFromString(outer, decodeString(getValue(n, outer)));
 		} else if (n.isResource()) {
 			Resource r = n.asResource();
-			Map m = new ObjectMap(this);
+			Map m = new OMap(this);
 			parseIntoMap(r, m, sType.getKeyType(), sType.getValueType(), pMeta);
 			if (m.containsKey(getBeanTypePropertyName(eType)))
-				o = cast((ObjectMap)m, pMeta, eType);
+				o = cast((OMap)m, pMeta, eType);
 			else
 				throw new ParseException(this, "Class ''{0}'' could not be instantiated.  Reason: ''{1}''", sType.getInnerClass().getName(), sType.getNotABeanReason());
 		} else {
@@ -564,9 +565,9 @@ public class RdfParserSession extends ReaderParserSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("RdfParserSession", new DefaultFilteringObjectMap()
+			.a("RdfParserSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 33ed63d..373408b 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -584,20 +584,20 @@ public class RdfSerializer extends WriterSerializer implements RdfCommon, RdfMet
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("RdfSerializer", new DefaultFilteringObjectMap()
-				.append("addLiteralTypes", addLiteralTypes)
-				.append("addRootProperty", addRootProperty)
-				.append("useXmlNamespaces", useXmlNamespaces)
-				.append("looseCollections", looseCollections)
-				.append("autoDetectNamespaces", autoDetectNamespaces)
-				.append("rdfLanguage", rdfLanguage)
-				.append("juneauNs", juneauNs)
-				.append("juneauBpNs", juneauBpNs)
-				.append("collectionFormat", collectionFormat)
-				.append("namespaces", namespaces)
-				.append("addBeanTypes", addBeanTypes)
+			.a("RdfSerializer", new DefaultFilteringOMap()
+				.a("addLiteralTypes", addLiteralTypes)
+				.a("addRootProperty", addRootProperty)
+				.a("useXmlNamespaces", useXmlNamespaces)
+				.a("looseCollections", looseCollections)
+				.a("autoDetectNamespaces", autoDetectNamespaces)
+				.a("rdfLanguage", rdfLanguage)
+				.a("juneauNs", juneauNs)
+				.a("juneauBpNs", juneauBpNs)
+				.a("collectionFormat", collectionFormat)
+				.a("namespaces", namespaces)
+				.a("addBeanTypes", addBeanTypes)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
index dcc665f..bae1fc9 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerSession.java
@@ -20,6 +20,7 @@ import java.util.*;
 
 import org.apache.jena.rdf.model.*;
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.jena.annotation.*;
 import org.apache.juneau.serializer.*;
@@ -386,7 +387,7 @@ public final class RdfSerializerSession extends WriterSerializerSession {
 		}
 	}
 
-	
+
 	//-----------------------------------------------------------------------------------------------------------------
 	// Common properties
 	//-----------------------------------------------------------------------------------------------------------------
@@ -584,9 +585,9 @@ public final class RdfSerializerSession extends WriterSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("RdfSerializerSession", new DefaultFilteringObjectMap()
+			.a("RdfSerializerSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index c64e47c..3f49bc9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -4283,41 +4283,41 @@ public class BeanContext extends Context implements MetaProvider {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("BeanContext", new DefaultFilteringObjectMap()
-				.append("id", System.identityHashCode(this))
-				.append("beanClassVisibility", beanClassVisibility)
-				.append("beanConstructorVisibility", beanConstructorVisibility)
-				.append("beanDictionaryClasses", beanDictionaryClasses)
-				.append("beanFieldVisibility", beanFieldVisibility)
-				.append("beanFilters", beanFilters)
-				.append("beanMapPutReturnsOldValue", beanMapPutReturnsOldValue)
-				.append("beanMethodVisibility", beanMethodVisibility)
-				.append("beansRequireDefaultConstructor", beansRequireDefaultConstructor)
-				.append("beansRequireSerializable", beansRequireSerializable)
-				.append("beansRequireSettersForGetters", beansRequireSettersForGetters)
-				.append("beansRequireSomeProperties", beansRequireSomeProperties)
-				.append("bpi", bpi)
-				.append("bpx", bpx)
-				.append("ignoreInvocationExceptionsOnGetters", ignoreInvocationExceptionsOnGetters)
-				.append("ignoreInvocationExceptionsOnSetters", ignoreInvocationExceptionsOnSetters)
-				.append("ignorePropertiesWithoutSetters", ignorePropertiesWithoutSetters)
-				.append("ignoreTransientProperties", ignoreTransientFields)
-				.append("ignoreUnknownBeanProperties", ignoreUnknownBeanProperties)
-				.append("ignoreUnknownNullBeanProperties", ignoreUnknownNullBeanProperties)
-				.append("implClasses", implClasses)
-				.append("locale", locale)
-				.append("mediaType", mediaType)
-				.append("notBeanClasses", notBeanClasses)
-				.append("notBeanPackageNames", notBeanPackageNames)
-				.append("notBeanPackagePrefixes", notBeanPackagePrefixes)
-				.append("pojoSwaps", pojoSwaps)
-				.append("sortProperties", sortProperties)
-				.append("timeZone", timeZone)
-				.append("useEnumNames", useEnumNames)
-				.append("useInterfaceProxies", useInterfaceProxies)
-				.append("useJavaBeanIntrospector", useJavaBeanIntrospector)
+			.a("BeanContext", new DefaultFilteringOMap()
+				.a("id", System.identityHashCode(this))
+				.a("beanClassVisibility", beanClassVisibility)
+				.a("beanConstructorVisibility", beanConstructorVisibility)
+				.a("beanDictionaryClasses", beanDictionaryClasses)
+				.a("beanFieldVisibility", beanFieldVisibility)
+				.a("beanFilters", beanFilters)
+				.a("beanMapPutReturnsOldValue", beanMapPutReturnsOldValue)
+				.a("beanMethodVisibility", beanMethodVisibility)
+				.a("beansRequireDefaultConstructor", beansRequireDefaultConstructor)
+				.a("beansRequireSerializable", beansRequireSerializable)
+				.a("beansRequireSettersForGetters", beansRequireSettersForGetters)
+				.a("beansRequireSomeProperties", beansRequireSomeProperties)
+				.a("bpi", bpi)
+				.a("bpx", bpx)
+				.a("ignoreInvocationExceptionsOnGetters", ignoreInvocationExceptionsOnGetters)
+				.a("ignoreInvocationExceptionsOnSetters", ignoreInvocationExceptionsOnSetters)
+				.a("ignorePropertiesWithoutSetters", ignorePropertiesWithoutSetters)
+				.a("ignoreTransientProperties", ignoreTransientFields)
+				.a("ignoreUnknownBeanProperties", ignoreUnknownBeanProperties)
+				.a("ignoreUnknownNullBeanProperties", ignoreUnknownNullBeanProperties)
+				.a("implClasses", implClasses)
+				.a("locale", locale)
+				.a("mediaType", mediaType)
+				.a("notBeanClasses", notBeanClasses)
+				.a("notBeanPackageNames", notBeanPackageNames)
+				.a("notBeanPackagePrefixes", notBeanPackagePrefixes)
+				.a("pojoSwaps", pojoSwaps)
+				.a("sortProperties", sortProperties)
+				.a("timeZone", timeZone)
+				.a("useEnumNames", useEnumNames)
+				.a("useInterfaceProxies", useInterfaceProxies)
+				.a("useJavaBeanIntrospector", useJavaBeanIntrospector)
 			);
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 6dc7f7d..ad95cb1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -21,6 +21,7 @@ import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.marshall.*;
@@ -1234,10 +1235,10 @@ public class BeanContextBuilder extends ContextBuilder {
 	 */
 	@ConfigurationProperty
 	public BeanContextBuilder examples(String json) {
-		if (! isObjectMap(json, true))
+		if (! isJsonObject(json, true))
 			json = "{" + json + "}";
 		try {
-			ObjectMap m = new ObjectMap(json);
+			OMap m = OMap.ofJson(json);
 			for (Map.Entry<String,Object> e : m.entrySet())
 				putTo(BEAN_examples, e.getKey(), e.getValue());
 			return this;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java
index 28d22cf..04e02ec 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMap.java
@@ -18,6 +18,7 @@ import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
@@ -362,7 +363,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
 	 * @throws ParseException Malformed input encountered.
 	 */
 	public BeanMap<T> load(String input) throws ParseException {
-		putAll(new ObjectMap(input));
+		putAll(OMap.ofJson(input));
 		return this;
 	}
 
@@ -376,7 +377,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
 	 * @throws IOException Thrown by <c>Reader</c>.
 	 */
 	public BeanMap<T> load(Reader r, ReaderParser p) throws ParseException, IOException {
-		putAll(new ObjectMap(r, p));
+		putAll(OMap.ofText(r, p));
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index 0a1be8f..6fbdf3b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -725,7 +725,7 @@ public final class BeanPropertyMeta {
 
 					if (! (value instanceof Map)) {
 						if (value instanceof CharSequence)
-							value = new ObjectMap((CharSequence)value).setBeanSession(session);
+							value = OMap.ofJson((CharSequence)value).session(session);
 						else
 							throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));
 					}
@@ -782,7 +782,7 @@ public final class BeanPropertyMeta {
 
 					if (! (value instanceof Collection)) {
 						if (value instanceof CharSequence)
-							value = new ObjectList((CharSequence)value).setBeanSession(session);
+							value = new OList((CharSequence)value).setBeanSession(session);
 						else
 							throw new BeanRuntimeException(beanMeta.c, "Cannot set property ''{0}'' of type ''{1}'' to object of type ''{2}''", name, propertyClass.getName(), findClassName(value));
 					}
@@ -800,7 +800,7 @@ public final class BeanPropertyMeta {
 
 							if (propertyClass.isInstance(valueList)) {
 								if (! elementType.isObject()) {
-										List l = new ObjectList(valueList);
+										List l = new OList(valueList);
 										for (ListIterator<Object> i = l.listIterator(); i.hasNext(); ) {
 											Object v = i.next();
 											if (v != null && (! elementType.getInnerClass().isInstance(v))) {
@@ -969,8 +969,8 @@ public final class BeanPropertyMeta {
 		// Read-only beans get their properties stored in a cache.
 		if (m.bean == null) {
 			if (! m.propertyCache.containsKey(name))
-				m.propertyCache.put(name, new ObjectList(m.getBeanSession()));
-			((ObjectList)m.propertyCache.get(name)).add(value);
+				m.propertyCache.put(name, new OList(m.getBeanSession()));
+			((OList)m.propertyCache.get(name)).add(value);
 			return;
 		}
 
@@ -1000,7 +1000,7 @@ public final class BeanPropertyMeta {
 				if (rawTypeMeta.canCreateNewInstance())
 					c = (Collection)rawTypeMeta.newInstance();
 				else
-					c = new ObjectList(session);
+					c = new OList(session);
 
 				c.add(v);
 
@@ -1048,8 +1048,8 @@ public final class BeanPropertyMeta {
  		// Read-only beans get their properties stored in a cache.
 		if (m.bean == null) {
 			if (! m.propertyCache.containsKey(name))
-				m.propertyCache.put(name, new ObjectMap(m.getBeanSession()));
-			((ObjectMap)m.propertyCache.get(name)).append(key.toString(), value);
+				m.propertyCache.put(name, new OMap(m.getBeanSession()));
+			((OMap)m.propertyCache.get(name)).append(key.toString(), value);
 			return;
 		}
 
@@ -1079,7 +1079,7 @@ public final class BeanPropertyMeta {
 				if (rawTypeMeta.canCreateNewInstance())
 					map = (Map)rawTypeMeta.newInstance();
 				else
-					map = new ObjectMap(session);
+					map = new OMap(session);
 
 				map.put(key, v);
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java
index 4e5812c..d3ba2f4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java
@@ -12,6 +12,8 @@
 // ***************************************************************************************************************************
 package org.apache.juneau;
 
+import org.apache.juneau.collections.*;
+
 /**
  * Represents a simple bean property value and the meta-data associated with it.
  */
@@ -89,10 +91,10 @@ public class BeanPropertyValue implements Comparable<BeanPropertyValue> {
 
 	@Override /* Object */
 	public String toString() {
-		return new ObjectMap()
-			.append("name", name)
-			.append("value", value)
-			.append("type", pMeta.getClassMeta().getInnerClass().getSimpleName())
+		return OMap.of()
+			.a("name", name)
+			.a("value", value)
+			.a("type", pMeta.getClassMeta().getInnerClass().getSimpleName())
 			.toString();
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index 69f6d6a..4911c6d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -23,6 +23,7 @@ import java.util.*;
 import java.util.Date;
 import java.util.concurrent.atomic.*;
 
+import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.internal.*;
@@ -146,25 +147,25 @@ public class BeanSession extends Session {
 	 * 	</tr>
 	 * 	<tr>
 	 * 		<td>
-	 * 			{@code Map} (e.g. {@code Map}, {@code HashMap}, {@code TreeMap}, {@code ObjectMap})
+	 * 			{@code Map} (e.g. {@code Map}, {@code HashMap}, {@code TreeMap}, {@code OMap})
 	 * 		</td>
 	 * 		<td>
 	 * 			{@code Map}
 	 * 		</td>
 	 * 		<td>
-	 * 			If {@code Map} is not constructible, a {@code ObjectMap} is created.
+	 * 			If {@code Map} is not constructible, an {@code OMap} is created.
 	 * 		</td>
 	 * 	</tr>
 	 * 	<tr>
 	 * 		<td>
-	 * 		{@code Collection} (e.g. {@code List}, {@code LinkedList}, {@code HashSet}, {@code ObjectList})
+	 * 		{@code Collection} (e.g. {@code List}, {@code LinkedList}, {@code HashSet}, {@code OList})
 	 * 		</td>
 	 * 		<td>
 	 * 			{@code Collection<Object>}
 	 * 			<br>{@code Object[]}
 	 * 		</td>
 	 * 		<td>
-	 * 			If {@code Collection} is not constructible, a {@code ObjectList} is created.
+	 * 			If {@code Collection} is not constructible, an {@code OList} is created.
 	 * 		</td>
 	 * 	</tr>
 	 * 	<tr>
@@ -488,20 +489,20 @@ public class BeanSession extends Session {
 				else if (from.isArray())
 					return (T)toArray(to, Arrays.asList((Object[])value));
 				else if (startsWith(value.toString(), '['))
-					return (T)toArray(to, new ObjectList(value.toString()).setBeanSession(this));
+					return (T)toArray(to, OList.ofJson(value.toString()).setBeanSession(this));
 				else if (to.hasMutaterFrom(from))
 					return to.mutateFrom(value);
 				else if (from.hasMutaterTo(to))
 					return from.mutateTo(value, to);
 				else
-					return (T)toArray(to, new ObjectList((Object[])StringUtils.split(value.toString())).setBeanSession(this));
+					return (T)toArray(to, new OList((Object[])StringUtils.split(value.toString())).setBeanSession(this));
 			}
 
 			// Target type is some sort of Map that needs to be converted.
 			if (to.isMap()) {
 				try {
 					if (from.isMap()) {
-						Map m = to.canCreateNewInstance(outer) ? (Map)to.newInstance(outer) : new ObjectMap(this);
+						Map m = to.canCreateNewInstance(outer) ? (Map)to.newInstance(outer) : new OMap(this);
 						ClassMeta keyType = to.getKeyType(), valueType = to.getValueType();
 						for (Map.Entry e : (Set<Map.Entry>)((Map)value).entrySet()) {
 							Object k = e.getKey();
@@ -518,7 +519,7 @@ public class BeanSession extends Session {
 						}
 						return (T)m;
 					} else if (!to.canCreateNewInstanceFromString(outer)) {
-						ObjectMap m = new ObjectMap(value.toString());
+						OMap m = OMap.ofJson(value.toString());
 						m.setBeanSession(this);
 						return convertToMemberType(outer, m, to);
 					}
@@ -530,7 +531,7 @@ public class BeanSession extends Session {
 			// Target type is some sort of Collection
 			if (to.isCollection()) {
 				try {
-					Collection l = to.canCreateNewInstance(outer) ? (Collection)to.newInstance(outer) : to.isSet() ? new LinkedHashSet<>() : new ObjectList(this);
+					Collection l = to.canCreateNewInstance(outer) ? (Collection)to.newInstance(outer) : to.isSet() ? new LinkedHashSet<>() : new OList(this);
 					ClassMeta elementType = to.getElementType();
 
 					if (from.isArray())
@@ -545,8 +546,8 @@ public class BeanSession extends Session {
 						return null;
 					else if (from.isString()) {
 						String s = value.toString();
-						if (isObjectList(s, false)) {
-							ObjectList l2 = new ObjectList(s);
+						if (isJsonArray(s, false)) {
+							OList l2 = OList.ofJson(s);
 							l2.setBeanSession(this);
 							for (Object o : l2)
 								l.add(elementType.isObject() ? o : convertToMemberType(l, o, elementType));
@@ -589,13 +590,13 @@ public class BeanSession extends Session {
 				Class<?> c = value.getClass();
 				if (c.isArray()) {
 					if (c.getComponentType().isPrimitive()) {
-						ObjectList l = new ObjectList(this);
+						OList l = new OList(this);
 						int size = Array.getLength(value);
 						for (int i = 0; i < size; i++)
 							l.add(Array.get(value, i));
 						value = l;
 					}
-					value = new ObjectList((Object[])value).setBeanSession(this);
+					value = new OList((Object[])value).setBeanSession(this);
 				}
 
 				return to.newInstanceFromString(outer, value.toString());
@@ -614,6 +615,15 @@ public class BeanSession extends Session {
 			if (to.isBean() && value instanceof Map) {
 				BuilderSwap<T,Object> builder = (BuilderSwap<T,Object>)to.getBuilderSwap(this);
 
+				if (value instanceof OMap && builder == null) {
+					OMap m2 = (OMap)value;
+					String typeName = m2.getString(getBeanTypePropertyName(to));
+					if (typeName != null) {
+						ClassMeta cm = to.getBeanRegistry().getClassMeta(typeName);
+						if (cm != null && to.info.isParentOf(cm.innerClass))
+							return (T)m2.cast(cm);
+					}
+				}
 				if (value instanceof ObjectMap && builder == null) {
 					ObjectMap m2 = (ObjectMap)value;
 					String typeName = m2.getString(getBeanTypePropertyName(to));
@@ -1584,15 +1594,15 @@ public class BeanSession extends Session {
 	}
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("Context", ctx.toMap())
-			.append("BeanSession", new DefaultFilteringObjectMap()
-				.append("debug", debug)
-				.append("locale", locale)
-				.append("mediaType", mediaType)
-				.append("schema", schema)
-				.append("timeZone", timeZone)
+			.a("Context", ctx.toMap())
+			.a("BeanSession", new DefaultFilteringOMap()
+				.a("debug", debug)
+				.a("locale", locale)
+				.a("mediaType", mediaType)
+				.a("schema", schema)
+				.a("timeZone", timeZone)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
index 5bce04d..aba8cc3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSessionArgs.java
@@ -16,6 +16,7 @@ import static org.apache.juneau.BeanContext.*;
 
 import java.util.*;
 
+import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.httppart.*;
 
@@ -145,7 +146,7 @@ public class BeanSessionArgs extends SessionArgs {
 	}
 
 	@Override /* SessionArgs */
-	public BeanSessionArgs properties(ObjectMap value) {
+	public BeanSessionArgs properties(OMap value) {
 		super.properties(value);
 		return this;
 	}
@@ -157,10 +158,10 @@ public class BeanSessionArgs extends SessionArgs {
 	}
 
 	@Override /* SessionArgs */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("BeanSessionArgs", new DefaultFilteringObjectMap()
-				.append("schema", schema)
+			.a("BeanSessionArgs", new DefaultFilteringOMap()
+				.a("schema", schema)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
index 7e2a357..ee5cb95 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
@@ -14,6 +14,7 @@ package org.apache.juneau;
 
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 
 /**
@@ -331,13 +332,13 @@ public abstract class BeanTraverseContext extends BeanContext {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("BeanTraverseContext", new DefaultFilteringObjectMap()
-				.append("detectRecursions", detectRecursions)
-				.append("maxDepth", maxDepth)
-				.append("ignoreRecursions", ignoreRecursions)
-				.append("initialDepth", initialDepth)
+			.a("BeanTraverseContext", new DefaultFilteringOMap()
+				.a("detectRecursions", detectRecursions)
+				.a("maxDepth", maxDepth)
+				.a("ignoreRecursions", ignoreRecursions)
+				.a("initialDepth", initialDepth)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
index 4cfd4b0..e038ed9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
@@ -17,6 +17,8 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.text.*;
 import java.util.*;
 
+import org.apache.juneau.collections.*;
+
 /**
  * Session that lives for the duration of a single use of {@link BeanTraverseContext}.
  *
@@ -261,15 +263,11 @@ public class BeanTraverseSession extends BeanSession {
 	 *
 	 * @return A map, typically containing something like <c>{line:123,column:456,currentProperty:"foobar"}</c>
 	 */
-	public final ObjectMap getLastLocation() {
-		ObjectMap m = new ObjectMap();
-		if (currentClass != null)
-			m.put("currentClass", currentClass);
-		if (currentProperty != null)
-			m.put("currentProperty", currentProperty);
-		if (stack != null && ! stack.isEmpty())
-			m.put("stack", stack);
-		return m;
+	public final OMap getLastLocation() {
+		return OMap.of()
+			.asn("currentClass", currentClass)
+			.asn("currentProperty", currentProperty)
+			.ase("stack", stack);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -327,9 +325,9 @@ public class BeanTraverseSession extends BeanSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("BeanTraverseSession", new DefaultFilteringObjectMap()
+			.a("BeanTraverseSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index 35ac330..1a9237c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -966,9 +966,9 @@ public final class ClassMeta<T> implements Type {
 					if (isCharSequence())
 						return (T)example;
 					String s = example.toString();
-					if (isMapOrBean() && StringUtils.isObjectMap(s, false))
+					if (isMapOrBean() && StringUtils.isJsonObject(s, false))
 						return JsonParser.DEFAULT.parse(s, this);
-					if (isCollectionOrArray() && StringUtils.isObjectList(s, false))
+					if (isCollectionOrArray() && StringUtils.isJsonArray(s, false))
 						return JsonParser.DEFAULT.parse(s, this);
 				}
 				if (example instanceof Map && isMapOrBean()) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
index b6876cf..699e3a6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ConfigApply.java
@@ -18,6 +18,7 @@ import java.lang.annotation.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.svl.*;
@@ -147,28 +148,28 @@ public abstract class ConfigApply<T extends Annotation> {
 	}
 
 	/**
-	 * Resolves the specified strings and converts it to an ObjectMap.
+	 * Resolves the specified strings and converts it to an OMap.
 	 *
-	 * @param in The strings to be concatenated and parsed into an ObjectMapl.
+	 * @param in The strings to be concatenated and parsed into an OMap.
 	 * @param loc The annotation field name.
-	 * @return The resolved ObjectMap.
+	 * @return The resolved OMap.
 	 */
-	protected ObjectMap objectMap(String[] in, String loc) {
-		return objectMap(joinnl(strings(in)), loc);
+	protected OMap omap(String[] in, String loc) {
+		return omap(joinnl(strings(in)), loc);
 	}
 
 	/**
-	 * Resolves the specified string and converts it to an ObjectMap.
+	 * Resolves the specified string and converts it to an OMap.
 	 *
-	 * @param in The string to be parsed into an ObjectMapl.
+	 * @param in The string to be parsed into an OMap.
 	 * @param loc The annotation field name.
-	 * @return The resolved ObjectMap.
+	 * @return The resolved OMap.
 	 */
-	protected ObjectMap objectMap(String in, String loc) {
+	protected OMap omap(String in, String loc) {
 		try {
-			if (! isObjectMap(in, true))
+			if (! isJsonObject(in, true))
 				in = "{" + in + "}";
-			return new ObjectMap(in);
+			return OMap.ofJson(in);
 		} catch (Exception e) {
 			throw new ConfigException("Invalid syntax for Simple-JSON on annotation @{0}({1}): {2}", c.getSimpleName(), loc, in);
 		}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index 5e74db1..7fa2e5d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -15,6 +15,7 @@ package org.apache.juneau;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 
@@ -551,11 +552,11 @@ public abstract class Context {
 	 *
 	 * @return A new map containing the properties defined on this context.
 	 */
-	public ObjectMap toMap() {
-		return new DefaultFilteringObjectMap()
-			.append("Context", new DefaultFilteringObjectMap()
-				.append("identityCode", identityCode)
-				.append("propertyStore", propertyStore)
+	public OMap toMap() {
+		return new DefaultFilteringOMap()
+			.a("Context", new DefaultFilteringOMap()
+				.a("identityCode", identityCode)
+				.a("propertyStore", propertyStore)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/DefaultFilteringObjectMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/DefaultFilteringOMap.java
similarity index 85%
rename from juneau-core/juneau-marshall/src/main/java/org/apache/juneau/DefaultFilteringObjectMap.java
rename to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/DefaultFilteringOMap.java
index b493ac9..931cf86 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/DefaultFilteringObjectMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/DefaultFilteringOMap.java
@@ -15,10 +15,12 @@ package org.apache.juneau;
 import java.lang.reflect.*;
 import java.util.*;
 
+import org.apache.juneau.collections.*;
+
 /**
- * Subclass of {@link ObjectMap} that avoids adding common default values.
+ * Subclass of {@link OMap} that avoids adding common default values.
  */
-public class DefaultFilteringObjectMap extends ObjectMap {
+public class DefaultFilteringOMap extends OMap {
 
 	private static final long serialVersionUID = 1L;
 
@@ -29,7 +31,7 @@ public class DefaultFilteringObjectMap extends ObjectMap {
 	 * 	The object map to copy from.
 	 * 	<br>Can be <jk>null</jk>.
 	 */
-	public DefaultFilteringObjectMap(ObjectMap m) {
+	public DefaultFilteringOMap(OMap m) {
 		super();
 		appendAll(m);
 	}
@@ -37,17 +39,24 @@ public class DefaultFilteringObjectMap extends ObjectMap {
 	/**
 	 * Constructor.
 	 */
-	public DefaultFilteringObjectMap() {
+	public DefaultFilteringOMap() {
 		super();
 	}
 
-	@Override /* ObjectMap */
-	public ObjectMap append(String key, Object value) {
+	@Override /* OMap */
+	public OMap append(String key, Object value) {
 		if (! shouldSkip(value))
 			super.append(key, value);
 		return this;
 	}
 
+	@Override /* OMap */
+	public OMap a(String key, Object value) {
+		if (! shouldSkip(value))
+			super.a(key, value);
+		return this;
+	}
+
 	/**
 	 * Returns <jk>true</jk> if the specified value should be skipped.
 	 *
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
index f335eb5..f962368 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/InvalidDataConversionException.java
@@ -24,7 +24,7 @@ import org.apache.juneau.reflect.*;
  *
  * <p>
  * Exception that gets thrown if you try to perform an invalid conversion, such as when calling
- * {@code ObjectMap.getInt(...)} on a non-numeric <c>String</c>.
+ * {@code OMap.getInt(...)} on a non-numeric <c>String</c>.
  */
 public final class InvalidDataConversionException extends FormattedRuntimeException {
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
index 34bde57..39a4703 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStoreBuilder.java
@@ -21,6 +21,7 @@ import java.util.concurrent.*;
 import java.util.regex.*;
 
 import org.apache.juneau.PropertyStore.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.marshall.*;
@@ -976,9 +977,9 @@ public class PropertyStoreBuilder {
 				for (Map.Entry e : (Set<Map.Entry>)m.entrySet())
 					if (e.getKey() != null)
 						put(e.getKey().toString(), e.getValue());
-			} else if (isObjectMap(o)) {
+			} else if (isJsonObject(o)) {
 				try {
-					putAll(new ObjectMap(o.toString()));
+					putAll(OMap.ofJson(o.toString()));
 				} catch (Exception e) {
 					throw new ConfigException(e, "Cannot put {0} ({1}) to property ''{2}'' ({3}).", string(o), className(o), name, type);
 				}
@@ -1082,8 +1083,8 @@ public class PropertyStoreBuilder {
 			} else if (o instanceof Collection) {
 				for (Object o2 : (Collection<Object>)o)
 					normalize(l, pc, o2);
-			} else if (isObjectList(o)) {
-				normalize(l, pc, new ObjectList(o.toString()));
+			} else if (isJsonArray(o)) {
+				normalize(l, pc, new OList(o.toString()));
 			} else {
 				l.add(pc == null ? o : pc.convert(o));
 			}
@@ -1099,7 +1100,7 @@ public class PropertyStoreBuilder {
 		return value.getClass().getSimpleName();
 	}
 
-	static boolean isObjectMap(Object o) {
+	static boolean isJsonObject(Object o) {
 		if (o instanceof CharSequence) {
 			String s = o.toString();
 			return (s.startsWith("{") && s.endsWith("}") && BeanContext.DEFAULT != null);
@@ -1113,7 +1114,7 @@ public class PropertyStoreBuilder {
 		return key.substring(0, key.indexOf('.'));
 	}
 
-	static boolean isObjectList(Object o) {
+	static boolean isJsonArray(Object o) {
 		if (o instanceof CharSequence) {
 			String s = o.toString();
 			return (s.startsWith("[") && s.endsWith("]") && BeanContext.DEFAULT != null);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
index 9dc18ac..e514264 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Session.java
@@ -19,6 +19,7 @@ import java.lang.reflect.*;
 import java.text.*;
 import java.util.*;
 
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.reflect.*;
@@ -34,7 +35,7 @@ public abstract class Session {
 
 	private JuneauLogger logger;
 
-	private final ObjectMap properties;
+	private final OMap properties;
 	private Map<String,Object> cache;
 	private List<String> warnings;                 // Any warnings encountered.
 
@@ -46,7 +47,7 @@ public abstract class Session {
 	 * 	Runtime arguments.
 	 */
 	protected Session(SessionArgs args) {
-		this.properties = args.properties == null ? ObjectMap.EMPTY_MAP : args.properties;
+		this.properties = args.properties == null ? OMap.EMPTY_MAP : args.properties;
 	}
 
 	/**
@@ -174,7 +175,7 @@ public abstract class Session {
 	 *
 	 * @return The session properties passed in through the constructor.
 	 */
-	protected ObjectMap getProperties() {
+	protected OMap getProperties() {
 		return properties;
 	}
 
@@ -313,8 +314,8 @@ public abstract class Session {
 	 *
 	 * @return A new map containing the properties defined on this context.
 	 */
-	public ObjectMap toMap() {
-		return new DefaultFilteringObjectMap();
+	public OMap toMap() {
+		return new DefaultFilteringOMap();
 	}
 
 	@Override /* Object */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
index bcf1b4c..fe7b7d7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/SessionArgs.java
@@ -12,6 +12,7 @@
 // ***************************************************************************************************************************
 package org.apache.juneau;
 
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 
 /**
@@ -24,7 +25,7 @@ public class SessionArgs {
 	 */
 	public static final SessionArgs DEFAULT = new SessionArgs();
 
-	ObjectMap properties;
+	OMap properties;
 
 	/**
 	 * Constructor.
@@ -46,7 +47,7 @@ public class SessionArgs {
 	 * 	<br>Can be <jk>null</jk>.
 	 * @return This object (for method chaining).
 	 */
-	public SessionArgs properties(ObjectMap value) {
+	public SessionArgs properties(OMap value) {
 		this.properties = value;
 		return this;
 	}
@@ -64,7 +65,7 @@ public class SessionArgs {
 				properties.remove(key);
 		} else {
 			if (properties == null)
-				properties = new ObjectMap();
+				properties = new OMap();
 			properties.put(key, value);
 		}
 		return this;
@@ -91,9 +92,9 @@ public class SessionArgs {
 	 *
 	 * @return A new map containing the properties defined on this object.
 	 */
-	public ObjectMap toMap() {
-		return new DefaultFilteringObjectMap()
-			.append("SessionArgs", new DefaultFilteringObjectMap()
+	public OMap toMap() {
+		return new DefaultFilteringOMap()
+			.append("SessionArgs", new DefaultFilteringOMap()
 				.append("properties", properties)
 			);
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java
index 11b4f49..cd2f134 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriContext.java
@@ -15,6 +15,7 @@ package org.apache.juneau;
 import static org.apache.juneau.internal.StringUtils.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 
@@ -102,7 +103,7 @@ public class UriContext {
 	 * 	If input string is not a valid JSON object.
 	 */
 	public UriContext(String s) throws ParseException {
-		ObjectMap m = new ObjectMap(s);
+		OMap m = OMap.ofJson(s);
 		this.authority = nullIfEmpty(trimSlashes(m.getString("authority")));
 		this.contextRoot = nullIfEmpty(trimSlashes(m.getString("contextRoot")));
 		this.servletPath = nullIfEmpty(trimSlashes(m.getString("servletPath")));
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java
index 5a6511e..5c9cc6d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java
@@ -92,7 +92,7 @@ public class BeanConfigApply extends ConfigApply<BeanConfig> {
 		for (CS e : a.example())
 			psb.putTo(BEAN_examples, e.k().getName(), parse(e.k(), e.v(), "example"));
 		if (a.examples().length > 0)
-			psb.putAllTo(BEAN_examples, objectMap(a.examples(), "examples"));
+			psb.putAllTo(BEAN_examples, omap(a.examples(), "examples"));
 		if (! a.fluentSetters().isEmpty())
 			psb.set(BEAN_fluentSetters, bool(a.fluentSetters()));
 		if (! a.ignoreInvocationExceptionsOnGetters().isEmpty())
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/Args.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/Args.java
index d62bf78..e8f7f5f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/Args.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/Args.java
@@ -90,7 +90,7 @@ import org.apache.juneau.internal.*;
  *
  * <p>
  * Main arguments are available through numeric string keys (e.g. <js>"0"</js>, <js>"1"</js>, ...).
- * So you could use the {@link ObjectMap} API to convert main arguments directly to POJOs, such as an <c>Enum</c>
+ * So you could use the {@link OMap} API to convert main arguments directly to POJOs, such as an <c>Enum</c>
  * <p class='bcode w800'>
  * 	<jc>// Get 1st main argument as an Enum</jc>
  * 	MyEnum e = a.get(MyEnum.<jk>class</jk>, <js>"0"</js>);
@@ -102,7 +102,7 @@ import org.apache.juneau.internal.*;
  * <p>
  * Equivalent operations are available on optional arguments through the {@link #getArg(Class, String)} method.
  */
-public final class Args extends ObjectMap {
+public final class Args extends OMap {
 
 	private static final long serialVersionUID = 1L;
 
@@ -133,9 +133,9 @@ public final class Args extends ObjectMap {
 				if (key.matches("\\d*"))
 					throw new FormattedRuntimeException("Invalid optional key name ''{0}''", key);
 				if (! containsKey(key))
-					put(key, new ObjectList());
+					put(key, new OList());
 			} else {
-				((ObjectList)get(key)).add(s);
+				((OList)get(key)).add(s);
 			}
 		}
 	}
@@ -198,7 +198,7 @@ public final class Args extends ObjectMap {
 	 * @return <jk>true</jk> if the named argument exists.
 	 */
 	public boolean hasArg(String name) {
-		ObjectList l = (ObjectList)get(name);
+		OList l = (OList)get(name);
 		return l != null;
 	}
 
@@ -212,7 +212,7 @@ public final class Args extends ObjectMap {
 	 * @return The optional argument value, or blank if the optional argument was not specified.
 	 */
 	public String getArg(String name) {
-		ObjectList l = (ObjectList)get(name);
+		OList l = (OList)get(name);
 		if (l == null || l.size() == 0)
 			return null;
 		if (l.size() == 1)
@@ -239,7 +239,7 @@ public final class Args extends ObjectMap {
 	 * @return The optional argument value, or blank if the optional argument was not specified.
 	 */
 	public <T> T getArg(Class<T> c, String name) {
-		ObjectList l = (ObjectList)get(name);
+		OList l = (OList)get(name);
 		if (l == null || l.size() == 0)
 			return null;
 		return l.get(0, c);
@@ -260,7 +260,7 @@ public final class Args extends ObjectMap {
 	 */
 	@SuppressWarnings({"rawtypes", "unchecked"})
 	public List<String> getArgs(String name) {
-		List l = (ObjectList)get(name);
+		List l = (OList)get(name);
 		if (l == null)
 			return Collections.emptyList();
 		return l;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OList.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OList.java
index 7508e96..af06e2a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OList.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OList.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.io.*;
 import java.lang.reflect.*;
 import java.util.*;
+import java.util.function.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.json.*;
@@ -255,7 +256,7 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	 * 	<br>Can be <jk>null</jk>.
 	 * @return A new list or <jk>null</jk> if the list was <jk>null</jk>.
 	 */
-	public static OList of(Collection<?> in) {
+	public static OList ofAll(Collection<?> in) {
 		return in == null ? null : new OList(in);
 	}
 
@@ -268,7 +269,7 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	 * @return A new list or <jk>null</jk> if the string was null.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static OList of(CharSequence json) throws ParseException {
+	public static OList ofJson(CharSequence json) throws ParseException {
 		return json == null ? null : new OList(json);
 	}
 
@@ -284,7 +285,7 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	 * @return A new list or <jk>null</jk> if the input was <jk>null</jk>.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static OList of(CharSequence in, Parser p) throws ParseException {
+	public static OList ofText(CharSequence in, Parser p) throws ParseException {
 		return in == null ? null : new OList(in, p);
 	}
 
@@ -297,7 +298,7 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	 * @return A new list or <jk>null</jk> if the input was <jk>null</jk>.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static OList of(Reader json) throws ParseException {
+	public static OList ofJson(Reader json) throws ParseException {
 		return json == null ? null : new OList(json);
 	}
 
@@ -313,7 +314,7 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	 * @return A new list or <jk>null</jk> if the input was <jk>null</jk>.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static OList of(Reader in, Parser p) throws ParseException {
+	public static OList ofText(Reader in, Parser p) throws ParseException {
 		return in == null ? null : new OList(in);
 	}
 
@@ -370,6 +371,20 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	 * Add.
 	 *
 	 * <p>
+	 * Same as {@link #a(Object)}
+	 *
+	 * @param o The entry to add to this list.
+	 * @return This object (for method chaining).
+	 */
+	public OList append(Object o) {
+		add(o);
+		return this;
+	}
+
+	/**
+	 * Add.
+	 *
+	 * <p>
 	 * Adds multiple entries to this list.
 	 *
 	 * @param o The entries to add to this list.
@@ -382,6 +397,22 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	}
 
 	/**
+	 * Add.
+	 *
+	 * <p>
+	 * Same as {@link #a(Object...)}
+	 *
+	 * @param o The entries to add to this list.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OList append(Object...o) {
+		for (Object o2 : o)
+			add(o2);
+		return this;
+	}
+
+	/**
 	 * Add all.
 	 *
 	 * <p>
@@ -397,6 +428,21 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	}
 
 	/**
+	 * Add all.
+	 *
+	 * <p>
+	 * Same as {@link #aa(Collection)}.
+	 *
+	 * @param c The collection to add to this list.  Can be <jk>null</jk>.
+	 * @return This object (for method chaining).
+	 */
+	public OList appendAll(Collection<?> c) {
+		if (c != null)
+			addAll(c);
+		return this;
+	}
+
+	/**
 	 * Add if.
 	 *
 	 * <p>
@@ -412,6 +458,19 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 		return this;
 	}
 
+	/**
+	 * Add if.
+	 *
+	 * <p>
+	 * Same as {@link #aif(boolean, Object)}.
+	 *
+	 * @param b The boolean flag.
+	 * @param val The value to add.
+	 * @return This object (for method chaining).
+	 */
+	public OList appendIf(boolean b, Object val) {
+		return aif(b, val);
+	}
 
 	/**
 	 * Add if not empty.
@@ -430,6 +489,20 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 	}
 
 	/**
+	 * Add if not empty.
+	 *
+	 * <p>
+	 * Same as {@link #aifne(String...)}.
+	 *
+	 * @param o The objects to add to the list.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OList appendIfNotEmpty(String...o) {
+		return aifne(o);
+	}
+
+	/**
 	 * Add if not null.
 	 *
 	 * <p>
@@ -444,6 +517,46 @@ public class OList extends ObjectList /* In 9.0 - LinkedList<Object> */ {
 				add(o2);
 		return this;
 	}
+	/**
+	 * Add if not null.
+	 *
+	 * <p>
+	 * Same as {@link #aifnn(Object...)}.
+	 *
+	 * @param o The objects to add to the list.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OList appendIfNotNull(Object...o) {
+		return aifnn(o);
+	}
+
+	/**
+	 * Add if predicate matches.
+	 *
+	 * @param p The predicate to match against.
+	 * @param val The value to add if the predicate matches.
+	 * @return This object (for method chaining).
+	 */
+	public OList aif(Predicate<Object> p, Object val) {
+		if (p.test(val))
+			a(val);
+		return this;
+	}
+
+	/**
+	 * Add if predicate matches.
+	 *
+	 * <p>
+	 * Same as {@link #aif(Predicate, Object)}.
+	 *
+	 * @param p The predicate to match against.
+	 * @param val The value to add if the predicate matches.
+	 * @return This object (for method chaining).
+	 */
+	public OList appendIf(Predicate<Object> p, Object val) {
+		return aif(p, val);
+	}
 
 	//------------------------------------------------------------------------------------------------------------------
 	// Retrievers.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OMap.java
index 41cb62a..e88f338 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/OMap.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.io.*;
 import java.lang.reflect.*;
 import java.util.*;
+import java.util.function.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
@@ -264,7 +265,7 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * 	<br>Keys will be converted to strings using {@link Object#toString()}.
 	 * @return A new map or <jk>null</jk> if the map was <jk>null</jk>.
 	 */
-	public static OMap of(Map<?,?> in) {
+	public static OMap ofAll(Map<?,?> in) {
 		return in == null ? null : new OMap(in);
 	}
 
@@ -293,7 +294,7 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * @return A new map or <jk>null</jk> if the input was <jk>null</jk>.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static OMap of(CharSequence in, Parser p) throws ParseException {
+	public static OMap ofText(CharSequence in, Parser p) throws ParseException {
 		return in == null ? null : new OMap(in, p);
 	}
 
@@ -306,7 +307,7 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * @return A new map or <jk>null</jk> if the input was <jk>null</jk>.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static OMap of(Reader json) throws ParseException {
+	public static OMap ofJson(Reader json) throws ParseException {
 		return json == null ? null : new OMap(json);
 	}
 
@@ -322,7 +323,7 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * @return A new map or <jk>null</jk> if the input was <jk>null</jk>.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static OMap of(Reader in, Parser p) throws ParseException {
+	public static OMap ofText(Reader in, Parser p) throws ParseException {
 		return in == null ? null : new OMap(in);
 	}
 
@@ -410,6 +411,21 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add.
+	 *
+	 * <p>
+	 * Same as {@link #a(String, Object)}
+	 *
+	 * @param key The key.
+	 * @param value The value.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap append(String key, Object value) {
+		return a(key,value);
+	}
+
+	/**
 	 * Add if.
 	 *
 	 * <p>
@@ -437,6 +453,24 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * Add if.
 	 *
 	 * <p>
+	 * Same as {@link #aif(boolean, boolean, boolean, String, Object)}.
+	 *
+	 * @param overwrite Overwrite the previous value if there was one.
+	 * @param skipNullValue Skip adding the value if the value is <jk>null</jk>.
+	 * @param skipEmptyValue Skip adding the value if the value is an empty string.
+	 * @param key The key.
+	 * @param value The value.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap appendIf(boolean overwrite, boolean skipNullValue, boolean skipEmptyValue, String key, Object value) {
+		return aif(overwrite, skipNullValue, skipEmptyValue, key, value);
+	}
+
+	/**
+	 * Add if.
+	 *
+	 * <p>
 	 * Conditionally adds an entry to this map.
 	 *
 	 * @param flag The boolean value that must be <jk>true</jk> in order to add this entry..
@@ -451,6 +485,22 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add if.
+	 *
+	 * <p>
+	 * Same as {@link #aif(boolean,String,Object)}.
+	 *
+	 * @param flag The boolean value that must be <jk>true</jk> in order to add this entry..
+	 * @param key The key.
+	 * @param value The value.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap appendIf(boolean flag, String key, Object value) {
+		return aif(flag, key, value);
+	}
+
+	/**
 	 * Add skip empty.
 	 *
 	 * <p>
@@ -465,6 +515,21 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add skip empty.
+	 *
+	 * <p>
+	 * Same as {@link #ase(String, Object)}.
+	 *
+	 * @param key The key.
+	 * @param value The value.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap appendSkipEmpty(String key, Object value) {
+		return ase(key, value);
+	}
+
+	/**
 	 * Add skip false.
 	 *
 	 * <p>
@@ -481,6 +546,21 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add skip false.
+	 *
+	 * <p>
+	 * Same as {@link #asf(String, boolean)}.
+	 *
+	 * @param key The key.
+	 * @param value The value.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap appendSkipFalse(String key, boolean value) {
+		return asf(key, value);
+	}
+
+	/**
 	 * Add skip minus one.
 	 *
 	 * <p>
@@ -497,6 +577,21 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add skip minus one.
+	 *
+	 * <p>
+	 * Same as {@link #asmo(String, Number)}.
+	 *
+	 * @param key The key.
+	 * @param value The value.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap appendSkipMinusOne(String key, Number value) {
+		return asmo(key, value);
+	}
+
+	/**
 	 * Add skip null.
 	 *
 	 * <p>
@@ -513,6 +608,21 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add skip null.
+	 *
+	 * <p>
+	 * Same as {@link #asn(String, Object)}.
+	 *
+	 * @param key The key.
+	 * @param value The value.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap appendSkipNull(String key, Object value) {
+		return asn(key, value);
+	}
+
+	/**
 	 * Add all.
 	 *
 	 * <p>
@@ -528,6 +638,22 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add all.
+	 *
+	 * <p>
+	 * Same as {@link #aa(Map)}.
+	 *
+	 * @param m The map whose contents should be added to this map.
+	 * @return This object (for method chaining).
+	 */
+	@Override
+	public OMap appendAll(Map<String,Object> m) {
+		if (m != null)
+			putAll(m);
+		return this;
+	}
+
+	/**
 	 * Add if null.
 	 *
 	 * <p>
@@ -545,6 +671,20 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add if null.
+	 *
+	 * <p>
+	 * Same as {@link #aifn(String, Object)}.
+	 *
+	 * @param key The map key.
+	 * @param val The value to set if the current value does not exist or is <jk>null</jk>.
+	 * @return This object (for method chaining).
+	 */
+	public OMap appendIfNull(String key, Object val) {
+		return aifn(key, val);
+	}
+
+	/**
 	 * Add if empty.
 	 *
 	 * <p>
@@ -562,6 +702,20 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	}
 
 	/**
+	 * Add if empty.
+	 *
+	 * <p>
+	 * Same as {@link #aife(String, Object)}.
+	 *
+	 * @param key The map key.
+	 * @param val The value to set if the current value does not exist or is <jk>null</jk> or an empty string.
+	 * @return This object (for method chaining).
+	 */
+	public OMap appendIfEmpty(String key, Object val) {
+		return aife(key, val);
+	}
+
+	/**
 	 * Add if not empty.
 	 *
 	 * <p>
@@ -577,6 +731,49 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 		return this;
 	}
 
+	/**
+	 * Add if not empty.
+	 *
+	 * <p>
+	 * Same as {@link #aifne(String, Object)}.
+	 *
+	 * @param key The map key.
+	 * @param val The value to set if the current value does not exist or is <jk>null</jk> or an empty string.
+	 * @return This object (for method chaining).
+	 */
+	public OMap appendIfNotEmpty(String key, Object val) {
+		return aifne(key, val);
+	}
+
+	/**
+	 * Add if predicate matches.
+	 *
+	 * @param p The predicate to match against.
+	 * @param key The map key.
+	 * @param val The value to add if the predicate matches.
+	 * @return This object (for method chaining).
+	 */
+	public OMap aif(Predicate<Object> p, String key, Object val) {
+		if (p.test(val))
+			a(key, val);
+		return this;
+	}
+
+	/**
+	 * Add if predicate matches.
+	 *
+	 * <p>
+	 * Same as {@link #aif(Predicate, String, Object)}.
+	 *
+	 * @param p The predicate to match against.
+	 * @param key The map key.
+	 * @param val The value to add if the predicate matches.
+	 * @return This object (for method chaining).
+	 */
+	public OMap appendIf(Predicate<Object> p, String key, Object val) {
+		return aif(p, key, val);
+	}
+
 	//------------------------------------------------------------------------------------------------------------------
 	// Retrievers.
 	//------------------------------------------------------------------------------------------------------------------
@@ -1009,7 +1206,7 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * Returns the specified entry value converted to a {@link OList}.
 	 *
 	 * <p>
-	 * Shortcut for <code>get(key, ObjectList.<jk>class</jk>)</code>.
+	 * Shortcut for <code>get(key, OList.<jk>class</jk>)</code>.
 	 *
 	 * @param key The key.
 	 * @return The converted value, or <jk>null</jk> if the map contains no mapping for this key.
@@ -1024,7 +1221,7 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * Returns the specified entry value converted to a {@link OList}.
 	 *
 	 * <p>
-	 * Shortcut for <code>getWithDefault(key, defVal, ObjectList.<jk>class</jk>)</code>.
+	 * Shortcut for <code>getWithDefault(key, defVal, OList.<jk>class</jk>)</code>.
 	 *
 	 * @param key The key.
 	 * @param defVal The default value if the map doesn't contain the specified mapping.
@@ -1140,7 +1337,7 @@ public class OMap extends ObjectMap /* In 9.0 - LinkedHashMap<String,Object> */
 	 * Returns the first entry that exists converted to a {@link OList}.
 	 *
 	 * <p>
-	 * Shortcut for <code>find(ObjectList.<jk>class</jk>, keys)</code>.
+	 * Shortcut for <code>find(OList.<jk>class</jk>, keys)</code>.
 	 *
 	 * @param keys The list of keys to look for.
 	 * @return
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java
index d8442ca..f3e9d18 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParser.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 
 /**
@@ -114,8 +115,8 @@ public class CsvParser extends ReaderParser implements CsvMetaProvider, CsvCommo
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("CsvParser", new DefaultFilteringObjectMap());
+			.a("CsvParser", new DefaultFilteringOMap());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserSession.java
index de56226..17f8eee 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserSession.java
@@ -15,6 +15,7 @@ package org.apache.juneau.csv;
 import java.io.IOException;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 
 /**
@@ -58,9 +59,9 @@ public final class CsvParserSession extends ReaderParserSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("CsvParserSession", new DefaultFilteringObjectMap()
+			.a("CsvParserSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java
index e62ea5d..ba8359e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializer.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -117,8 +118,8 @@ public final class CsvSerializer extends WriterSerializer implements CsvMetaProv
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("CsvSerializer", new DefaultFilteringObjectMap());
+			.a("CsvSerializer", new DefaultFilteringOMap());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerSession.java
index edf3aeb..c15df7d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerSession.java
@@ -16,6 +16,7 @@ import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -107,9 +108,9 @@ public final class CsvSerializerSession extends WriterSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("CsvSerializerSession", new DefaultFilteringObjectMap()
+			.a("CsvSerializerSession", new DefaultFilteringOMap()
 		);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index 5811ebe..c7aa53c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -16,6 +16,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.svl.*;
@@ -1013,22 +1014,22 @@ public class HtmlDocSerializer extends HtmlStrippedDocSerializer {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlDocSerializer", new DefaultFilteringObjectMap()
-				.append("header", header)
-				.append("nav", nav)
-				.append("navlinks", navlinks)
-				.append("aside", aside)
-				.append("asideFloat", asideFloat)
-				.append("footer", footer)
-				.append("style", style)
-				.append("head", head)
-				.append("stylesheet", stylesheet)
-				.append("nowrap", nowrap)
-				.append("template", template)
-				.append("noResultsMessage", noResultsMessage)
-				.append("widgets", widgets.keySet())
+			.a("HtmlDocSerializer", new DefaultFilteringOMap()
+				.a("header", header)
+				.a("nav", nav)
+				.a("navlinks", navlinks)
+				.a("aside", aside)
+				.a("asideFloat", asideFloat)
+				.a("footer", footer)
+				.a("style", style)
+				.a("head", head)
+				.a("stylesheet", stylesheet)
+				.a("nowrap", nowrap)
+				.a("template", template)
+				.a("noResultsMessage", noResultsMessage)
+				.a("widgets", widgets.keySet())
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
index eca5f69..21bc892 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerSession.java
@@ -277,19 +277,19 @@ public class HtmlDocSerializerSession extends HtmlStrippedDocSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlDocSerializerSession", new DefaultFilteringObjectMap()
-				.append("aside", aside)
-				.append("head", head)
-				.append("header", header)
-				.append("footer", footer)
-				.append("nav", nav)
-				.append("navlinks", navlinks)
-				.append("script", script)
-				.append("style", style)
-				.append("stylesheet", stylesheet)
-				.append("varResolver", getVarResolver())
+			.a("HtmlDocSerializerSession", new DefaultFilteringOMap()
+				.a("aside", aside)
+				.a("head", head)
+				.a("header", header)
+				.a("footer", footer)
+				.a("nav", nav)
+				.a("navlinks", navlinks)
+				.a("script", script)
+				.a("style", style)
+				.a("stylesheet", stylesheet)
+				.a("varResolver", getVarResolver())
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java
index 158f379..998be39 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParser.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.xml.*;
 
@@ -128,8 +129,8 @@ public class HtmlParser extends XmlParser implements HtmlMetaProvider, HtmlCommo
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlParser", new DefaultFilteringObjectMap());
+			.a("HtmlParser", new DefaultFilteringOMap());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
index 3f99e7d..a72dc3a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
@@ -213,11 +213,11 @@ public final class HtmlParserSession extends XmlParserSession {
 
 			if (typeName.equals("object")) {
 				if (sType.isObject()) {
-					o = parseIntoMap(r, (Map)new ObjectMap(this), sType.getKeyType(), sType.getValueType(),
+					o = parseIntoMap(r, (Map)new OMap(this), sType.getKeyType(), sType.getValueType(),
 						pMeta);
 				} else if (sType.isMap()) {
 					o = parseIntoMap(r, (Map)(sType.canCreateNewInstance(outer) ? sType.newInstance(outer)
-						: new ObjectMap(this)), sType.getKeyType(), sType.getValueType(), pMeta);
+						: new OMap(this)), sType.getKeyType(), sType.getValueType(), pMeta);
 				} else if (builder != null) {
 					BeanMap m = toBeanMap(builder.create(this, eType));
 					o = builder.build(this, parseIntoBean(r, m).getBean(), eType);
@@ -231,10 +231,10 @@ public final class HtmlParserSession extends XmlParserSession {
 
 			} else if (typeName.equals("array")) {
 				if (sType.isObject())
-					o = parseTableIntoCollection(r, (Collection)new ObjectList(this), sType, pMeta);
+					o = parseTableIntoCollection(r, (Collection)new OList(this), sType, pMeta);
 				else if (sType.isCollection())
 					o = parseTableIntoCollection(r, (Collection)(sType.canCreateNewInstance(outer)
-						? sType.newInstance(outer) : new ObjectList(this)), sType, pMeta);
+						? sType.newInstance(outer) : new OList(this)), sType, pMeta);
 				else if (sType.isArray() || sType.isArgs()) {
 					ArrayList l = (ArrayList)parseTableIntoCollection(r, new ArrayList(), sType, pMeta);
 					o = toArray(sType, l);
@@ -254,10 +254,10 @@ public final class HtmlParserSession extends XmlParserSession {
 				sType = eType = cm;
 
 			if (sType.isObject())
-				o = parseIntoCollection(r, new ObjectList(this), sType, pMeta);
+				o = parseIntoCollection(r, new OList(this), sType, pMeta);
 			else if (sType.isCollection() || sType.isObject())
 				o = parseIntoCollection(r, (Collection)(sType.canCreateNewInstance(outer)
-					? sType.newInstance(outer) : new ObjectList(this)), sType, pMeta);
+					? sType.newInstance(outer) : new OList(this)), sType, pMeta);
 			else if (sType.isArray() || sType.isArgs())
 				o = toArray(sType, parseIntoCollection(r, new ArrayList(), sType, pMeta));
 			else
@@ -462,7 +462,7 @@ public final class HtmlParserSession extends XmlParserSession {
 			} else {
 				String c = getAttributes(r).get(getBeanTypePropertyName(type.getElementType()));
 				Map m = (Map)(elementType.isMap() && elementType.canCreateNewInstance(l) ? elementType.newInstance(l)
-					: new ObjectMap(this));
+					: new OMap(this));
 				for (int i = 0; i < keys.size(); i++) {
 					tag = nextTag(r, TD, NULL);
 					if (tag == NULL) {
@@ -479,11 +479,11 @@ public final class HtmlParserSession extends XmlParserSession {
 					}
 				}
 				if (m != null && c != null) {
-					ObjectMap m2 = (m instanceof ObjectMap ? (ObjectMap)m : new ObjectMap(m).setBeanSession(this));
+					OMap m2 = (m instanceof OMap ? (OMap)m : new OMap(m).session(this));
 					m2.put(getBeanTypePropertyName(type.getElementType()), c);
 					l.add((E)cast(m2, pMeta, elementType));
 				} else {
-					if (m instanceof ObjectMap)
+					if (m instanceof OMap)
 						l.add((E)convertToType(m, elementType));
 					else
 						l.add((E)m);
@@ -779,9 +779,9 @@ public final class HtmlParserSession extends XmlParserSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlParserSession", new DefaultFilteringObjectMap()
+			.a("HtmlParserSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
index 2fb9f87..80f859b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.html;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.serializer.*;
 
@@ -109,9 +110,9 @@ public final class HtmlSchemaDocSerializer extends HtmlDocSerializer {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlSchemaDocSerializer", new DefaultFilteringObjectMap()
+			.a("HtmlSchemaDocSerializer", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
index 23d82ac..349959a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializer.java
@@ -14,6 +14,7 @@ package org.apache.juneau.html;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.serializer.*;
 
@@ -164,10 +165,10 @@ public class HtmlSchemaSerializer extends HtmlSerializer {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlSchemaSerializer", new DefaultFilteringObjectMap()
-				.append("generator", generator)
+			.a("HtmlSchemaSerializer", new DefaultFilteringOMap()
+				.a("generator", generator)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
index 3a6d5b0..487fb6f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
@@ -21,6 +21,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.jsonschema.*;
@@ -248,7 +249,7 @@ public class HtmlSchemaSerializerBuilder extends HtmlSerializerBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@ConfigurationProperty
-	public HtmlSchemaSerializerBuilder defaultSchema(Class<?> c, ObjectMap schema) {
+	public HtmlSchemaSerializerBuilder defaultSchema(Class<?> c, OMap schema) {
 		return putTo(JSONSCHEMA_defaultSchemas, c.getName(), schema);
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerSession.java
index dc340fd..c3be796 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerSession.java
@@ -15,6 +15,7 @@ package org.apache.juneau.html;
 import java.io.IOException;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.serializer.*;
 
@@ -56,9 +57,9 @@ public class HtmlSchemaSerializerSession extends HtmlSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlSchemaSerializerSession", new DefaultFilteringObjectMap()
+			.a("HtmlSchemaSerializerSession", new DefaultFilteringOMap()
 		);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index c121890..64b0067 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.xml.*;
@@ -79,7 +80,7 @@ import org.apache.juneau.xml.*;
  *
  * 	<jc>// Produces: </jc>
  * 	<jc>// &lt;ul&gt;&lt;li&gt;1&lt;li&gt;2&lt;li&gt;3&lt;/ul&gt;</jc>
- * 	List l = new ObjectList(1, 2, 3);
+ * 	List l = OList.<jsm>of</jsm>(1, 2, 3);
  * 	String html = HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(l);
  *
  * 	<jc>// Produces: </jc>
@@ -89,10 +90,11 @@ import org.apache.juneau.xml.*;
  * 	<jc>//       &lt;tr&gt;&lt;td&gt;Billy&lt;/td&gt;&lt;td&gt;TheKid&lt;/td&gt;&lt;/tr&gt; </jc>
  * 	<jc>//       &lt;tr&gt;&lt;td&gt;Barney&lt;/td&gt;&lt;td&gt;Miller&lt;/td&gt;&lt;/tr&gt; </jc>
  * 	<jc>//    &lt;/table&gt; </jc>
- * 	l = <jk>new</jk> ObjectList();
- * 	l.add(<jk>new</jk> ObjectMap(<js>"{firstName:'Bob',lastName:'Costas'}"</js>));
- * 	l.add(<jk>new</jk> ObjectMap(<js>"{firstName:'Billy',lastName:'TheKid'}"</js>));
- * 	l.add(<jk>new</jk> ObjectMap(<js>"{firstName:'Barney',lastName:'Miller'}"</js>));
+ * 	l = OList.<jsm>of</jsm>(
+ * 		OMap.<jsm>ofJson</jsm>(<js>"{firstName:'Bob',lastName:'Costas'}"</js>),
+ * 		OMap.<jsm>ofJson</jsm>(<js>"{firstName:'Billy',lastName:'TheKid'}"</js>),
+ * 		OMap.<jsm>ofJson</jsm>(<js>"{firstName:'Barney',lastName:'Miller'}"</js>)
+ * 	);
  * 	String html = HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(l);
  *
  * 	<jc>// Produces: </jc>
@@ -101,7 +103,7 @@ import org.apache.juneau.xml.*;
  * 	<jc>//       &lt;tr&gt;&lt;td&gt;foo&lt;/td&gt;&lt;td&gt;bar&lt;/td&gt;&lt;/tr&gt; </jc>
  * 	<jc>//       &lt;tr&gt;&lt;td&gt;baz&lt;/td&gt;&lt;td&gt;123&lt;/td&gt;&lt;/tr&gt; </jc>
  * 	<jc>//    &lt;/table&gt; </jc>
- * 	Map m = <jk>new</jk> ObjectMap(<js>"{foo:'bar',baz:123}"</js>);
+ * 	Map m = OMap.<jsm>ofJson</jsm>(<js>"{foo:'bar',baz:123}"</js>);
  * 	String html = HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(m);
  *
  * 	<jc>// HTML elements can be nested arbitrarily deep</jc>
@@ -118,9 +120,9 @@ import org.apache.juneau.xml.*;
  * 	<jc>//			&lt;/table&gt; </jc>
  * 	<jc>//		&lt;/td&gt;&lt;/tr&gt; </jc>
  * 	<jc>//	&lt;/table&gt; </jc>
- * 	Map m = <jk>new</jk> ObjectMap(<js>"{foo:'bar',baz:123}"</js>);
- * 	m.put(<js>"someNumbers"</js>, <jk>new</jk> ObjectList(1, 2, 3));
- * 	m.put(<js>"someSubMap"</js>, <jk>new</jk> ObjectMap(<js>"{a:'b'}"</js>));
+ * 	Map m = OMap.<jsm>ofJson</jsm>(<js>"{foo:'bar',baz:123}"</js>);
+ * 	m.put(<js>"someNumbers"</js>, OList.<jsm>of</jsm>(1, 2, 3));
+ * 	m.put(<js>"someSubMap"</js>, OMap.<jsm>ofJson</jsm>(<js>"{a:'b'}"</js>));
  * 	String html = HtmlSerializer.<jsf>DEFAULT</jsf>.serialize(m);
  * </p>
  */
@@ -867,15 +869,15 @@ public class HtmlSerializer extends XmlSerializer implements HtmlMetaProvider, H
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlSerializer", new DefaultFilteringObjectMap()
-				.append("uriAnchorText", uriAnchorText)
-				.append("detectLabelParameters", detectLabelParameters)
-				.append("detectLinksInStrings", detectLinksInStrings)
-				.append("labelParameter", labelParameter)
-				.append("addKeyValueTableHeaders", addKeyValueTableHeaders)
-				.append("addBeanTypes", addBeanTypes)
+			.a("HtmlSerializer", new DefaultFilteringOMap()
+				.a("uriAnchorText", uriAnchorText)
+				.a("detectLabelParameters", detectLabelParameters)
+				.a("detectLinksInStrings", detectLinksInStrings)
+				.a("labelParameter", labelParameter)
+				.a("addKeyValueTableHeaders", addKeyValueTableHeaders)
+				.a("addBeanTypes", addBeanTypes)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index e5c5f10..3c892e5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -21,6 +21,7 @@ import java.util.*;
 import java.util.regex.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.serializer.*;
@@ -773,7 +774,7 @@ public class HtmlSerializerSession extends XmlSerializerSession {
 					return null;
 			}
 		}
-		
+
 		BeanMap<?> bm = toBeanMap(o1);
 		return bm.keySet().toArray(new String[bm.size()]);
 	}
@@ -880,9 +881,9 @@ public class HtmlSerializerSession extends XmlSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlSerializerSession", new DefaultFilteringObjectMap()
+			.a("HtmlSerializerSession", new DefaultFilteringOMap()
 		);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
index 3f469a6..29146f6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializer.java
@@ -14,6 +14,7 @@ package org.apache.juneau.html;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -116,9 +117,9 @@ public class HtmlStrippedDocSerializer extends HtmlSerializer {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlStrippedDocSerializer", new DefaultFilteringObjectMap()
+			.a("HtmlStrippedDocSerializer", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerSession.java
index 458fdf8..56b45ba 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerSession.java
@@ -17,6 +17,7 @@ import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -57,9 +58,9 @@ public class HtmlStrippedDocSerializerSession extends HtmlSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("HtmlStrippedDocSerializerSession", new DefaultFilteringObjectMap()
+			.a("HtmlStrippedDocSerializerSession", new DefaultFilteringOMap()
 		);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
index a610412..be53596 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Body.java
@@ -124,7 +124,7 @@ import org.apache.juneau.jsonschema.*;
  * 	at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
  * 	Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
  *	(e.g. <code>List</code>).  Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
- *	when trying to access generalized <code>ObjectMaps</code> as beans.  The best solution to this issue is to either
+ *	when trying to access generalized <code>OMaps</code> as beans.  The best solution to this issue is to either
  *	specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
  *	will not try to recompile it.
  * </div>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
index de4a639..8c2be4d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
@@ -21,6 +21,7 @@ import java.util.*;
 import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
@@ -105,7 +106,7 @@ import org.apache.juneau.oapi.*;
  * 	at runtime, and CGLIB was written before generics were introduced into Java and is a virtually-unsupported library.
  * 	Therefore, parameterized types will often be stripped from class definitions and replaced with unparameterized types
  *	(e.g. <code>List</code>).  Under these circumstances, you are likely to get <code>ClassCastExceptions</code>
- *	when trying to access generalized <code>ObjectMaps</code> as beans.  The best solution to this issue is to either
+ *	when trying to access generalized <code>OMaps</code> as beans.  The best solution to this issue is to either
  *	specify the parameter as a bean array (e.g. <code>MyBean[]</code>) or declare the method as final so that CGLIB
  *	will not try to recompile it.
  * </div>
@@ -170,7 +171,7 @@ public @interface FormData {
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a REST method</jc>
 	 * 	<ja>@RestMethod</ja>(path=<js>"/addPet"</js>)
-	 * 	<jk>public void</jk> addPet(<ja>@FormData</ja> ObjectMap allFormDataParameters) {...}
+	 * 	<jk>public void</jk> addPet(<ja>@FormData</ja> OMap allFormDataParameters) {...}
 	 * 		</p>
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a remote method parameter</jc>
@@ -308,11 +309,11 @@ public @interface FormData {
 	 * 		<js>"array"</js>
 	 * 		<br>Parameter must be an array or collection.
 	 * 		<br>Elements must be strings or POJOs convertible from strings.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectList}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OList}.
 	 * 	<li>
 	 * 		<js>"object"</js>
 	 * 		<br>Parameter must be a map or bean.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectMap}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OMap}.
 	 * 		<br>Note that this is an extension of the OpenAPI schema as Juneau allows for arbitrarily-complex POJOs to be serialized as HTTP parts.
 	 * 	<li>
 	 * 		<js>"file"</js>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
index ff451d5..3aa1388 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
@@ -21,6 +21,7 @@ import java.util.*;
 import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
@@ -142,7 +143,7 @@ public @interface Header {
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a REST method</jc>
 	 * 	<ja>@RestMethod</ja>(path=<js>"/addPet"</js>)
-	 * 	<jk>public void</jk> addPet(<ja>@Header</ja> ObjectMap allHeaderParameters) {...}
+	 * 	<jk>public void</jk> addPet(<ja>@Header</ja> OMap allHeaderParameters) {...}
 	 * 		</p>
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a remote method parameter</jc>
@@ -276,11 +277,11 @@ public @interface Header {
 	 * 		<js>"array"</js>
 	 * 		<br>Parameter must be an array or collection.
 	 * 		<br>Elements must be strings or POJOs convertible from strings.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectList}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OList}.
 	 * 	<li>
 	 * 		<js>"object"</js>
 	 * 		<br>Parameter must be a map or bean.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectMap}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OMap}.
 	 * 		<br>Note that this is an extension of the OpenAPI schema as Juneau allows for arbitrarily-complex POJOs to be serialized as HTTP parts.
 	 * 	<li>
 	 * 		<js>"file"</js>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
index c1ac168..9a434f9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Path.java
@@ -21,6 +21,7 @@ import java.util.*;
 import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
@@ -127,7 +128,7 @@ public @interface Path {
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a REST method</jc>
 	 * 	<ja>@RestMethod</ja>(path=<js>"/addPet"</js>)
-	 * 	<jk>public void</jk> addPet(<ja>@Path</ja> ObjectMap allPathParameters) {...}
+	 * 	<jk>public void</jk> addPet(<ja>@Path</ja> OMap allPathParameters) {...}
 	 * 		</p>
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a remote method parameter</jc>
@@ -252,7 +253,7 @@ public @interface Path {
 	 * 		...
 	 * 	}
 	 * </p>
-	 * 
+	 *
 	 * <p>
 	 * This allows the child resource to be mapped to multiple parents that may resolve various different path variables.
 	 *
@@ -299,11 +300,11 @@ public @interface Path {
 	 * 		<js>"array"</js>
 	 * 		<br>Parameter must be an array or collection.
 	 * 		<br>Elements must be strings or POJOs convertible from strings.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectList}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OList}.
 	 * 	<li>
 	 * 		<js>"object"</js>
 	 * 		<br>Parameter must be a map or bean.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectMap}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OMap}.
 	 * 		<br>Note that this is an extension of the OpenAPI schema as Juneau allows for arbitrarily-complex POJOs to be serialized as HTTP parts.
 	 * 	<li>
 	 * 		<js>"file"</js>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
index 45b8921..a7a1db7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
@@ -21,6 +21,7 @@ import java.util.*;
 import org.apache.juneau.jsonschema.annotation.Items;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.*;
@@ -150,7 +151,7 @@ public @interface Query {
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a REST method</jc>
 	 * 	<ja>@RestMethod</ja>(path=<js>"/addPet"</js>)
-	 * 	<jk>public void</jk> addPet(<ja>@Query</ja> ObjectMap allQueryParameters) {...}
+	 * 	<jk>public void</jk> addPet(<ja>@Query</ja> OMap allQueryParameters) {...}
 	 * 		</p>
 	 * 		<p class='bcode w800'>
 	 * 	<jc>// When used on a remote method parameter</jc>
@@ -287,11 +288,11 @@ public @interface Query {
 	 * 		<js>"array"</js>
 	 * 		<br>Parameter must be an array or collection.
 	 * 		<br>Elements must be strings or POJOs convertible from strings.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectList}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OList}.
 	 * 	<li>
 	 * 		<js>"object"</js>
 	 * 		<br>Parameter must be a map or bean.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectMap}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OMap}.
 	 * 		<br>Note that this is an extension of the OpenAPI schema as Juneau allows for arbitrarily-complex POJOs to be serialized as HTTP parts.
 	 * 	<li>
 	 * 		<js>"file"</js>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
index c209384..45b462c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchema.java
@@ -1296,14 +1296,14 @@ public class HttpPartSchema {
 		}
 	}
 
-	final static ObjectMap toObjectMap(String[] ss) {
+	final static OMap toOMap(String[] ss) {
 		String s = joinnl(ss);
 		if (s.isEmpty())
 			return null;
-		if (! isObjectMap(s, true))
+		if (! isJsonObject(s, true))
 			s = "{" + s + "}";
 		try {
-			return new ObjectMap(s);
+			return OMap.ofJson(s);
 		} catch (ParseException e) {
 			throw new RuntimeException(e);
 		}
@@ -1312,33 +1312,33 @@ public class HttpPartSchema {
 	@Override
 	public String toString() {
 		try {
-			ObjectMap m = new ObjectMap()
-				.appendSkipEmpty("name", name)
-				.appendSkipEmpty("type", type)
-				.appendSkipEmpty("format", format)
-				.appendSkipEmpty("codes", codes)
-				.appendSkipEmpty("default", _default)
-				.appendSkipEmpty("enum", _enum)
-				.appendSkipEmpty("properties", properties)
-				.appendSkipFalse("allowEmptyValue", allowEmptyValue)
-				.appendSkipFalse("exclusiveMaximum", exclusiveMaximum)
-				.appendSkipFalse("exclusiveMinimum", exclusiveMinimum)
-				.appendSkipFalse("required", required)
-				.appendSkipFalse("uniqueItems", uniqueItems)
-				.appendSkipFalse("skipIfEmpty", skipIfEmpty)
-				.appendIf(collectionFormat != CollectionFormat.NO_COLLECTION_FORMAT, "collectionFormat", collectionFormat)
-				.appendSkipEmpty("pattern", pattern)
-				.appendSkipNull("items", items)
-				.appendSkipNull("additionalProperties", additionalProperties)
-				.appendSkipMinusOne("maximum", maximum)
-				.appendSkipMinusOne("minimum", minimum)
-				.appendSkipMinusOne("multipleOf", multipleOf)
-				.appendSkipMinusOne("maxLength", maxLength)
-				.appendSkipMinusOne("minLength", minLength)
-				.appendSkipMinusOne("maxItems", maxItems)
-				.appendSkipMinusOne("minItems", minItems)
-				.appendSkipMinusOne("maxProperties", maxProperties)
-				.appendSkipMinusOne("minProperties", minProperties)
+			OMap m = new OMap()
+				.ase("name", name)
+				.ase("type", type)
+				.ase("format", format)
+				.ase("codes", codes)
+				.ase("default", _default)
+				.ase("enum", _enum)
+				.ase("properties", properties)
+				.asf("allowEmptyValue", allowEmptyValue)
+				.asf("exclusiveMaximum", exclusiveMaximum)
+				.asf("exclusiveMinimum", exclusiveMinimum)
+				.asf("required", required)
+				.asf("uniqueItems", uniqueItems)
+				.asf("skipIfEmpty", skipIfEmpty)
+				.aif(collectionFormat != CollectionFormat.NO_COLLECTION_FORMAT, "collectionFormat", collectionFormat)
+				.ase("pattern", pattern)
+				.asn("items", items)
+				.asn("additionalProperties", additionalProperties)
+				.asmo("maximum", maximum)
+				.asmo("minimum", minimum)
+				.asmo("multipleOf", multipleOf)
+				.asmo("maxLength", maxLength)
+				.asmo("minLength", minLength)
+				.asmo("maxItems", maxItems)
+				.asmo("minItems", minItems)
+				.asmo("maxProperties", maxProperties)
+				.asmo("minProperties", minProperties)
 				.append("parsedType", parsedType)
 			;
 			return m.toString();
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java
index 681fea8..49f4e9d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/HttpPartSchemaBuilder.java
@@ -308,7 +308,7 @@ public class HttpPartSchemaBuilder {
 	HttpPartSchemaBuilder apply(SubItems a) {
 		type(a.type());
 		format(a.format());
-		items(HttpPartSchema.toObjectMap(a.items()));
+		items(HttpPartSchema.toOMap(a.items()));
 		collectionFormat(a.collectionFormat());
 		_default(a._default().length == 0 ? null : joinnl(a._default()));
 		maximum(HttpPartSchema.toNumber(a.maximum()));
@@ -346,8 +346,8 @@ public class HttpPartSchemaBuilder {
 		multipleOf(HttpPartSchema.toNumber(a.multipleOf()));
 		maxProperties(a.maxProperties());
 		minProperties(a.minProperties());
-		properties(HttpPartSchema.toObjectMap(a.properties()));
-		additionalProperties(HttpPartSchema.toObjectMap(a.additionalProperties()));
+		properties(HttpPartSchema.toOMap(a.properties()));
+		additionalProperties(HttpPartSchema.toOMap(a.additionalProperties()));
 		return this;
 	}
 
@@ -363,7 +363,7 @@ public class HttpPartSchemaBuilder {
 		return this;
 	}
 
-	HttpPartSchemaBuilder apply(ObjectMap m) {
+	HttpPartSchemaBuilder apply(OMap m) {
 		if (m != null && ! m.isEmpty()) {
 			_default(m.getString("default"));
 			_enum(HttpPartSchema.toSet(m.getString("enum")));
@@ -386,11 +386,11 @@ public class HttpPartSchemaBuilder {
 			minLength(m.get("minLength", Long.class));
 			minProperties(m.get("minProperties", Long.class));
 
-			items(m.getObjectMap("items"));
-			properties(m.getObjectMap("properties"));
-			additionalProperties(m.getObjectMap("additionalProperties"));
+			items(m.getMap("items"));
+			properties(m.getMap("properties"));
+			additionalProperties(m.getMap("additionalProperties"));
 
-			apply(m.getObjectMap("schema", null));
+			apply(m.getMap("schema", null));
 		}
 		return this;
 	}
@@ -540,11 +540,11 @@ public class HttpPartSchemaBuilder {
 	 * 		<js>"array"</js>
 	 * 		<br>Parameter must be an array or collection.
 	 * 		<br>Elements must be strings or POJOs convertible from strings.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectList}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OList}.
 	 * 	<li>
 	 * 		<js>"object"</js>
 	 * 		<br>Parameter must be a map or bean.
-	 * 		<br>If parameter is <c>Object</c>, creates an {@link ObjectMap}.
+	 * 		<br>If parameter is <c>Object</c>, creates an {@link OMap}.
 	 * 		<br>Note that this is an extension of the OpenAPI schema as Juneau allows for arbitrarily-complex POJOs to be serialized as HTTP parts.
 	 * 	<li>
 	 * 		<js>"file"</js>
@@ -739,7 +739,7 @@ public class HttpPartSchemaBuilder {
 		return this;
 	}
 
-	HttpPartSchemaBuilder items(ObjectMap value) {
+	HttpPartSchemaBuilder items(OMap value) {
 		if (value != null && ! value.isEmpty())
 			items = HttpPartSchema.create().apply(value);
 		return this;
@@ -1487,10 +1487,10 @@ public class HttpPartSchemaBuilder {
 		return this;
 	}
 
-	private HttpPartSchemaBuilder properties(ObjectMap value) {
+	private HttpPartSchemaBuilder properties(OMap value) {
 		if (value != null && ! value.isEmpty())
 		for (Map.Entry<String,Object> e : value.entrySet())
-			property(e.getKey(), HttpPartSchema.create().apply((ObjectMap)e.getValue()));
+			property(e.getKey(), HttpPartSchema.create().apply((OMap)e.getValue()));
 		return this;
 	}
 
@@ -1514,7 +1514,7 @@ public class HttpPartSchemaBuilder {
 		return this;
 	}
 
-	private HttpPartSchemaBuilder additionalProperties(ObjectMap value) {
+	private HttpPartSchemaBuilder additionalProperties(OMap value) {
 		if (value != null && ! value.isEmpty())
 			additionalProperties = HttpPartSchema.create().apply(value);
 		return this;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
index 802ce5b..f8ca790 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ClassUtils.java
@@ -30,8 +30,8 @@ public final class ClassUtils {
 	 * @param o The objects.
 	 * @return An array of readable class type strings.
 	 */
-	public static ObjectList getFullClassNames(Object[] o) {
-		ObjectList l = new ObjectList();
+	public static OList getFullClassNames(Object[] o) {
+		OList l = new OList();
 		for (int i = 0; i < o.length; i++)
 			l.add(o[i] == null ? "null" : ClassInfo.of((o[i].getClass())).getFullName());
 		return l;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java
index 16b81a0..b4ca229 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/CollectionUtils.java
@@ -90,8 +90,8 @@ public final class CollectionUtils {
 				l = new ArrayList<>();
 			for (Object o : values) {
 				if (o != null) {
-					if (isObjectList(o, false)) {
-						for (Object o2 : new ObjectList(o.toString()))
+					if (isJsonArray(o, false)) {
+						for (Object o2 : new OList(o.toString()))
 							l.add(toType(o2, type, args));
 					} else if (o instanceof Collection) {
 						for (Object o2 : (Collection<?>)o)
@@ -132,8 +132,8 @@ public final class CollectionUtils {
 				m = new LinkedHashMap<>();
 			for (Object o : values) {
 				if (o != null) {
-					if (isObjectMap(o, false)) {
-						for (Map.Entry<String,Object> e : new ObjectMap(o.toString()).entrySet())
+					if (isJsonObject(o, false)) {
+						for (Map.Entry<String,Object> e : OMap.ofJson(o.toString()).entrySet())
 							m.put(toType(e.getKey(), keyType), toType(e.getValue(), valueType, valueTypeArgs));
 					} else if (o instanceof Map) {
 						for (Map.Entry<Object,Object> e : ((Map<Object,Object>)o).entrySet())
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java
index 4b8a8b3..4b21a63 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateBeanMap.java
@@ -15,6 +15,7 @@ package org.apache.juneau.internal;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 
 /**
  * Represents a wrapped {@link BeanMap} where property values can be overridden, removed, or reordered without
@@ -29,7 +30,7 @@ import org.apache.juneau.*;
 public class DelegateBeanMap<T> extends BeanMap<T> {
 
 	private Set<String> keys = new LinkedHashSet<>();
-	private ObjectMap overrideValues = new ObjectMap();
+	private OMap overrideValues = new OMap();
 
 	/**
 	 * Constructor.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateList.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateList.java
index 7539c94..2e9bd62 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateList.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateList.java
@@ -15,6 +15,7 @@ package org.apache.juneau.internal;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 
 /**
  * Represents a wrapped {@link Collection} where entries in the list can be removed or reordered without affecting the
@@ -22,7 +23,7 @@ import org.apache.juneau.*;
  *
  * @param <T> The class type of the wrapped bean.
  */
-public class DelegateList<T extends Collection<?>> extends ObjectList implements Delegate<T> {
+public class DelegateList<T extends Collection<?>> extends OList implements Delegate<T> {
 	private static final long serialVersionUID = 1L;
 
 	private final ClassMeta<T> classMeta;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java
index 4a66687..e70e3c0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DelegateMap.java
@@ -15,6 +15,7 @@ package org.apache.juneau.internal;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 
 /**
  * Represents a wrapped {@link Map} where entries in the map can be removed without affecting the underlying map.
@@ -22,7 +23,7 @@ import org.apache.juneau.*;
  * @param <T> The class type of the wrapped bean.
  */
 @SuppressWarnings("rawtypes")
-public class DelegateMap<T extends Map> extends ObjectMap implements Delegate<T> {
+public class DelegateMap<T extends Map> extends OMap implements Delegate<T> {
 	private static final long serialVersionUID = 1L;
 
 	private transient ClassMeta<T> classMeta;
@@ -54,7 +55,7 @@ public class DelegateMap<T extends Map> extends ObjectMap implements Delegate<T>
 	 * @return This object (for method chaining).
 	 */
 	public DelegateMap<T> filterKeys(List<String> keys) {
-		ObjectMap m2 = new ObjectMap();
+		OMap m2 = new OMap();
 		for (String k : keys)
 			if (containsKey(k))
 				m2.put(k, get(k));
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ObjectUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ObjectUtils.java
index 49a2682..3ff18a1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ObjectUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ObjectUtils.java
@@ -62,25 +62,25 @@ import org.apache.juneau.transform.*;
  * 	</tr>
  * 	<tr>
  * 		<td>
- * 			{@code Map} (e.g. {@code Map}, {@code HashMap}, {@code TreeMap}, {@code ObjectMap})
+ * 			{@code Map} (e.g. {@code Map}, {@code HashMap}, {@code TreeMap}, {@code OMap})
  * 		</td>
  * 		<td>
  * 			{@code Map}
  * 		</td>
  * 		<td>
- * 			If {@code Map} is not constructible, a {@code ObjectMap} is created.
+ * 			If {@code Map} is not constructible, an {@code OMap} is created.
  * 		</td>
  * 	</tr>
  * 	<tr>
  * 		<td>
- * 			<c>Collection</c> (e.g. <c>List</c>, <c>LinkedList</c>, <c>HashSet</c>, <c>ObjectList</c>)
+ * 			<c>Collection</c> (e.g. <c>List</c>, <c>LinkedList</c>, <c>HashSet</c>, <c>OList</c>)
  * 		</td>
  * 		<td>
  * 			<c>Collection&lt;Object&gt;</c>
  * 			<br><c>Object[]</c>
  * 		</td>
  * 		<td>
- * 			If <c>Collection</c> is not constructible, a <c>ObjectList</c> is created.
+ * 			If <c>Collection</c> is not constructible, a <c>OList</c> is created.
  * 		</td>
  * 	</tr>
  * 	<tr>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index e74f63a..4487bb6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -29,6 +29,7 @@ import java.util.regex.*;
 import javax.xml.bind.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.parser.ParseException;
@@ -2366,7 +2367,7 @@ public final class StringUtils {
 	 * @param ignoreWhitespaceAndComments If <jk>true</jk>, leading and trailing whitespace and comments will be ignored.
 	 * @return <jk>true</jk> if the specified string appears to be a JSON array.
 	 */
-	public static boolean isObjectList(Object o, boolean ignoreWhitespaceAndComments) {
+	public static boolean isJsonArray(Object o, boolean ignoreWhitespaceAndComments) {
 		if (o instanceof CharSequence) {
 			String s = o.toString();
 			if (! ignoreWhitespaceAndComments)
@@ -2394,12 +2395,12 @@ public final class StringUtils {
 	 * @return The parsed string.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static ObjectList parseListOrCdl(String s) throws ParseException {
+	public static OList parseListOrCdl(String s) throws ParseException {
 		if (isEmpty(s))
 			return null;
-		if (! isObjectList(s, true))
-			return new ObjectList((Object[])StringUtils.split(s.trim(), ','));
-		return new ObjectList(s);
+		if (! isJsonArray(s, true))
+			return new OList((Object[])StringUtils.split(s.trim(), ','));
+		return new OList(s);
 	}
 
 	/**
@@ -2432,7 +2433,7 @@ public final class StringUtils {
 	 * @param ignoreWhitespaceAndComments If <jk>true</jk>, leading and trailing whitespace and comments will be ignored.
 	 * @return <jk>true</jk> if the specified string appears to be a JSON object.
 	 */
-	public static boolean isObjectMap(Object o, boolean ignoreWhitespaceAndComments) {
+	public static boolean isJsonObject(Object o, boolean ignoreWhitespaceAndComments) {
 		if (o instanceof CharSequence) {
 			String s = o.toString();
 			if (! ignoreWhitespaceAndComments)
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java
index 4f13d57..56ae209 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParser.java
@@ -18,6 +18,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 
 /**
@@ -121,9 +122,9 @@ public final class JsoParser extends InputStreamParser implements JsoMetaProvide
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsoParser", new DefaultFilteringObjectMap()
+			.a("JsoParser", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserSession.java
index 650b09d..244d237 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserSession.java
@@ -15,6 +15,7 @@ package org.apache.juneau.jso;
 import java.io.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 
 /**
@@ -52,9 +53,9 @@ public class JsoParserSession extends InputStreamParserSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsoParserSession", new DefaultFilteringObjectMap()
+			.a("JsoParserSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java
index a41850f..895bff8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializer.java
@@ -18,6 +18,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -123,9 +124,9 @@ public class JsoSerializer extends OutputStreamSerializer implements JsoMetaProv
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsoSerializer", new DefaultFilteringObjectMap()
+			.a("JsoSerializer", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerSession.java
index 2461f31..a55dd11 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerSession.java
@@ -15,6 +15,7 @@ package org.apache.juneau.jso;
 import java.io.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -54,9 +55,9 @@ public class JsoSerializerSession extends OutputStreamSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsoSerializerSession", new DefaultFilteringObjectMap()
+			.a("JsoSerializerSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
index 8fe0661..cf8eeab 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 
 /**
@@ -52,13 +53,13 @@ import org.apache.juneau.parser.*;
  * This parser handles the following input, and automatically returns the corresponding Java class.
  * <ul class='spaced-list'>
  * 	<li>
- * 		JSON objects (<js>"{...}"</js>) are converted to {@link ObjectMap ObjectMaps}.
+ * 		JSON objects (<js>"{...}"</js>) are converted to {@link OMap OMaps}.
  * 		<b>Note:</b>  If a <code><xa>_type</xa>=<xs>'xxx'</xs></code> attribute is specified on the object, then an
  * 		attempt is made to convert the object to an instance of the specified Java bean class.
  * 		See the <c>beanTypeName</c> setting on the {@link PropertyStore} for more information about parsing
  * 		beans from JSON.
  * 	<li>
- * 		JSON arrays (<js>"[...]"</js>) are converted to {@link ObjectList ObjectLists}.
+ * 		JSON arrays (<js>"[...]"</js>) are converted to {@link OList OLists}.
  * 	<li>
  * 		JSON string literals (<js>"'xyz'"</js>) are converted to {@link String Strings}.
  * 	<li>
@@ -77,10 +78,10 @@ import org.apache.juneau.parser.*;
  * Input can be any of the following:
  * <ul class='spaced-list'>
  * 	<li>
- * 		<js>"{...}"</js> - Converted to a {@link ObjectMap} or an instance of a Java bean if a <xa>_type</xa>
+ * 		<js>"{...}"</js> - Converted to an {@link OMap} or an instance of a Java bean if a <xa>_type</xa>
  * 		attribute is present.
  * 	<li>
- * 		<js>"[...]"</js> - Converted to a {@link ObjectList}.
+ * 		<js>"[...]"</js> - Converted to an {@link OList}.
  * 	<li>
  * 		<js>"123..."</js> - Converted to a {@link Number} (either {@link Integer}, {@link Long}, {@link Float},
  * 		or {@link Double}).
@@ -98,8 +99,8 @@ import org.apache.juneau.parser.*;
  *
  * <p>
  * TIP:  If you know you're parsing a JSON object or array, it can be easier to parse it using the
- * {@link ObjectMap#ObjectMap(CharSequence) ObjectMap(CharSequence)} or {@link ObjectList#ObjectList(CharSequence)
- * ObjectList(CharSequence)} constructors instead of using this class.
+ * {@link OMap#OMap(CharSequence) OMap(CharSequence)} or {@link OList#OList(CharSequence)
+ * OList(CharSequence)} constructors instead of using this class.
  * The end result should be the same.
  */
 @ConfigurableContext
@@ -296,8 +297,8 @@ public class JsonParser extends ReaderParser implements JsonMetaProvider, JsonCo
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonParser", new DefaultFilteringObjectMap());
+			.a("JsonParser", new DefaultFilteringOMap());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
index a3e38cf..574685c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserSession.java
@@ -19,6 +19,7 @@ import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.transform.*;
@@ -150,11 +151,11 @@ public final class JsonParserSession extends ReaderParserSession {
 			parseKeyword("null", r);
 		} else if (sType.isObject()) {
 			if (c == '{') {
-				ObjectMap m2 = new ObjectMap(this);
+				OMap m2 = new OMap(this);
 				parseIntoMap2(r, m2, string(), object(), pMeta);
 				o = cast(m2, pMeta, eType);
 			} else if (c == '[') {
-				o = parseIntoCollection2(r, new ObjectList(this), object(), pMeta);
+				o = parseIntoCollection2(r, new OList(this), object(), pMeta);
 			} else if (c == '\'' || c == '"') {
 				o = parseString(r);
 				if (sType.isChar())
@@ -177,15 +178,15 @@ public final class JsonParserSession extends ReaderParserSession {
 		} else if (sType.isNumber()) {
 			o = parseNumber(r, (Class<? extends Number>)sType.getInnerClass());
 		} else if (sType.isMap()) {
-			Map m = (sType.canCreateNewInstance(outer) ? (Map)sType.newInstance(outer) : new ObjectMap(this));
+			Map m = (sType.canCreateNewInstance(outer) ? (Map)sType.newInstance(outer) : new OMap(this));
 			o = parseIntoMap2(r, m, sType.getKeyType(), sType.getValueType(), pMeta);
 		} else if (sType.isCollection()) {
 			if (c == '{') {
-				ObjectMap m = new ObjectMap(this);
+				OMap m = new OMap(this);
 				parseIntoMap2(r, m, string(), object(), pMeta);
 				o = cast(m, pMeta, eType);
 			} else {
-				Collection l = (sType.canCreateNewInstance(outer) ? (Collection)sType.newInstance() : new ObjectList(this));
+				Collection l = (sType.canCreateNewInstance(outer) ? (Collection)sType.newInstance() : new OList(this));
 				o = parseIntoCollection2(r, l, sType, pMeta);
 			}
 		} else if (builder != null) {
@@ -198,7 +199,7 @@ public final class JsonParserSession extends ReaderParserSession {
 			o = sType.newInstanceFromString(outer, parseString(r));
 		} else if (sType.isArray() || sType.isArgs()) {
 			if (c == '{') {
-				ObjectMap m = new ObjectMap(this);
+				OMap m = new OMap(this);
 				parseIntoMap2(r, m, string(), object(), pMeta);
 				o = cast(m, pMeta, eType);
 			} else {
@@ -206,10 +207,10 @@ public final class JsonParserSession extends ReaderParserSession {
 				o = toArray(sType, l);
 			}
 		} else if (c == '{') {
-			Map m = new ObjectMap(this);
+			Map m = new OMap(this);
 			parseIntoMap2(r, m, sType.getKeyType(), sType.getValueType(), pMeta);
 			if (m.containsKey(getBeanTypePropertyName(eType)))
-				o = cast((ObjectMap)m, pMeta, eType);
+				o = cast((OMap)m, pMeta, eType);
 			else
 				throw new ParseException(this, "Class ''{0}'' could not be instantiated.  Reason: ''{1}''",
 						sType.getInnerClass().getName(), sType.getNotABeanReason());
@@ -819,9 +820,9 @@ public final class JsonParserSession extends ReaderParserSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonParserSession", new DefaultFilteringObjectMap()
+			.a("JsonParserSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index 1ec212a..1cac9c5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.serializer.*;
 
@@ -201,10 +202,10 @@ public class JsonSchemaSerializer extends JsonSerializer implements JsonSchemaMe
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonSchemaSerializer", new DefaultFilteringObjectMap()
-				.append("generator", generator)
+			.a("JsonSchemaSerializer", new DefaultFilteringOMap()
+				.a("generator", generator)
 			);
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
index 74d0c48..6366b3c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
@@ -21,6 +21,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.reflect.*;
@@ -238,7 +239,7 @@ public class JsonSchemaSerializerBuilder extends JsonSerializerBuilder {
 	 * 	The schema.
 	 * @return This object (for method chaining).
 	 */
-	public JsonSchemaSerializerBuilder defaultSchema(Class<?> c, ObjectMap schema) {
+	public JsonSchemaSerializerBuilder defaultSchema(Class<?> c, OMap schema) {
 		return putTo(JSONSCHEMA_defaultSchemas, c.getName(), schema);
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerSession.java
index 1e24f6e..ca1e6dc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerSession.java
@@ -15,6 +15,7 @@ package org.apache.juneau.json;
 import java.io.IOException;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.*;
 import org.apache.juneau.serializer.*;
 
@@ -86,9 +87,9 @@ public class JsonSchemaSerializerSession extends JsonSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonSchemaSerializerSession", new DefaultFilteringObjectMap()
+			.a("JsonSchemaSerializerSession", new DefaultFilteringOMap()
 		);
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
index bfb7bb3..d4a37bc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -177,7 +178,7 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 	 * 		.build();
 	 *
 	 * 	<jc>// Produces: "{foo:'&lt;\/bar&gt;'"</jc>
-	 * 	String json = s.serialize(<jk>new</jk> ObjectMap().append(<js>"foo"</js>, <js>"&lt;/bar&gt;"</js>);
+	 * 	String json = s.serialize(OMap.<jsm>of</jsm>(<js>"foo"</js>, <js>"&lt;/bar&gt;"</js>);
 	 * </p>
 	 */
 	public static final String JSON_escapeSolidus = PREFIX + ".escapeSolidus.b";
@@ -239,13 +240,14 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 	 * 		.simple()
 	 * 		.build();
 	 *
-	 * 	ObjectMap m = <jk>new</jk> ObjectMap()
-	 * 		.append(<js>"foo"</js>, <js>"x1"</js>)
-	 * 		.append(<js>"_bar"</js>, <js>"x2"</js>)
-	 * 		.append(<js>" baz "</js>, <js>"x3"</js>)
-	 * 		.append(<js>"123"</js>, <js>"x4"</js>)
-	 * 		.append(<js>"return"</js>, <js>"x5"</js>);
-	 * 		.append(<js>""</js>, <js>"x6"</js>);
+	 * 	OMap m = OMap.<jsm>of</jsm>(
+	 * 		<js>"foo"</js>, <js>"x1"</js>,
+	 * 		<js>"_bar"</js>, <js>"x2"</js>,
+	 * 		<js>" baz "</js>, <js>"x3"</js>,
+	 * 		<js>"123"</js>, <js>"x4"</js>,
+	 * 		<js>"return"</js>, <js>"x5"</js>,
+	 * 		<js>""</js>, <js>"x6"</js>
+	 *  );
 	 *
 	 * 	<jc>// Produces:</jc>
 	 * 	<jc>// {</jc>
@@ -500,12 +502,12 @@ public class JsonSerializer extends WriterSerializer implements JsonMetaProvider
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonSerializer", new DefaultFilteringObjectMap()
-				.append("simpleMode", simpleMode)
-				.append("escapeSolidus", escapeSolidus)
-				.append("addBeanTypes", addBeanTypes)
+			.a("JsonSerializer", new DefaultFilteringOMap()
+				.a("simpleMode", simpleMode)
+				.a("escapeSolidus", escapeSolidus)
+				.a("addBeanTypes", addBeanTypes)
 			);
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
index f8ce995..61329cd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerSession.java
@@ -16,6 +16,7 @@ import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transform.*;
@@ -326,9 +327,9 @@ public class JsonSerializerSession extends WriterSerializerSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonSerializerSession", new DefaultFilteringObjectMap()
+			.a("JsonSerializerSession", new DefaultFilteringOMap()
 		);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
index c09db99..4189c80 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.json;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 
 /**
  * Parses any valid JSON text into a POJO model.
@@ -69,9 +70,9 @@ public class SimpleJsonParser extends JsonParser {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("SimpleJsonSerializer", new DefaultFilteringObjectMap()
+			.a("SimpleJsonSerializer", new DefaultFilteringOMap()
 			);
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
index 49b8c96..d6e32bb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.json;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 
 /**
  * Serializes POJO models to Simplified JSON.
@@ -107,9 +108,9 @@ public class SimpleJsonSerializer extends JsonSerializer {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("SimpleJsonSerializer", new DefaultFilteringObjectMap()
+			.a("SimpleJsonSerializer", new DefaultFilteringOMap()
 			);
 	}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java
index f7008a9..adda3c9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaBeanPropertyMeta.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.jsonschema;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.annotation.*;
 import org.apache.juneau.parser.*;
 
@@ -27,7 +28,7 @@ public class JsonSchemaBeanPropertyMeta extends ExtendedBeanPropertyMeta {
 	 */
 	public static final JsonSchemaBeanPropertyMeta DEFAULT = new JsonSchemaBeanPropertyMeta();
 
-	private final ObjectMap schema;
+	private final OMap schema;
 
 	/**
 	 * Constructor.
@@ -38,7 +39,7 @@ public class JsonSchemaBeanPropertyMeta extends ExtendedBeanPropertyMeta {
 	public JsonSchemaBeanPropertyMeta(BeanPropertyMeta bpm, JsonSchemaMetaProvider mp) {
 		super(bpm);
 
-		this.schema = new ObjectMap();
+		this.schema = new OMap();
 
 		try {
 			for (Schema s : bpm.getAnnotations(Schema.class))
@@ -50,7 +51,7 @@ public class JsonSchemaBeanPropertyMeta extends ExtendedBeanPropertyMeta {
 
 	private JsonSchemaBeanPropertyMeta() {
 		super(null);
-		this.schema = ObjectMap.EMPTY_MAP;
+		this.schema = OMap.EMPTY_MAP;
 	}
 
 	/**
@@ -58,7 +59,7 @@ public class JsonSchemaBeanPropertyMeta extends ExtendedBeanPropertyMeta {
 	 *
 	 * @return The schema information as a generic map.  Never <jk>null</jk>.
 	 */
-	protected ObjectMap getSchema() {
+	protected OMap getSchema() {
 		return schema;
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java
index 66ed5e4..1745339 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaClassMeta.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.jsonschema;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.annotation.*;
 import org.apache.juneau.parser.*;
 
@@ -22,7 +23,7 @@ import org.apache.juneau.parser.*;
  */
 public class JsonSchemaClassMeta extends ExtendedClassMeta {
 
-	private final ObjectMap schema = new ObjectMap();
+	private final OMap schema = new OMap();
 
 	/**
 	 * Constructor.
@@ -45,7 +46,7 @@ public class JsonSchemaClassMeta extends ExtendedClassMeta {
 	 *
 	 * @return The value of the annotation, or <jk>null</jk> if not specified.
 	 */
-	protected ObjectMap getSchema() {
+	protected OMap getSchema() {
 		return schema;
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
index f426368..98de100 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
@@ -20,6 +20,7 @@ import java.util.regex.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 
 /**
@@ -223,7 +224,7 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	 * <ul class='spaced-list'>
 	 * 	<li><b>ID:</b>  {@link org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_defaultSchemas JSONSCHEMA_defaultSchemas}
 	 * 	<li><b>Name:</b>  <js>"JsonSchemaGenerator.defaultSchema.smo"</js>
-	 * 	<li><b>Data type:</b>  <c>Map&lt;String,{@link org.apache.juneau.ObjectMap}&gt;</c>
+	 * 	<li><b>Data type:</b>  <c>Map&lt;String,{@link org.apache.juneau.collections.OMap}&gt;</c>
 	 * 	<li><b>System property:</b>  <c>JsonSchemaGenerator.defaultSchema</c>
 	 * 	<li><b>Environment variable:</b>  <c>JSONSCHEMAGENERATOR_DEFAULTSCHEMA</c>
 	 * 	<li><b>Default:</b>  Empty map.
@@ -234,7 +235,7 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	 * 		</ul>
 	 * 	<li><b>Methods:</b>
 	 * 		<ul>
-	 * 			<li class='jm'>{@link org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#defaultSchema(Class,ObjectMap)}
+	 * 			<li class='jm'>{@link org.apache.juneau.jsonschema.JsonSchemaGeneratorBuilder#defaultSchema(Class,OMap)}
 	 * 		</ul>
 	 * </ul>
 	 *
@@ -316,7 +317,7 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	 * <p>
 	 * The definitions can then be retrieved from the session using {@link JsonSchemaGeneratorSession#getBeanDefs()}.
 	 * <p>
-	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, ObjectMap)}.
+	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, OMap)}.
 	 */
 	public static final String JSONSCHEMA_useBeanDefs = PREFIX + ".useBeanDefs.b";
 
@@ -336,7 +337,7 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	private final boolean useBeanDefs, allowNestedExamples, allowNestedDescriptions;
 	private final BeanDefMapper beanDefMapper;
 	private final Set<TypeCategory> addExamplesTo, addDescriptionsTo;
-	private final Map<String,ObjectMap> defaultSchemas;
+	private final Map<String,OMap> defaultSchemas;
 	private final JsonSerializer jsonSerializer;
 	private final Set<Pattern> ignoreTypes;
 	private final Map<ClassMeta<?>,JsonSchemaClassMeta> jsonSchemaClassMetas = new ConcurrentHashMap<>();
@@ -356,7 +357,7 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 		beanDefMapper = getInstanceProperty(JSONSCHEMA_beanDefMapper, BeanDefMapper.class, BasicBeanDefMapper.class);
 		addExamplesTo = TypeCategory.parse(getStringProperty(JSONSCHEMA_addExamplesTo, null));
 		addDescriptionsTo = TypeCategory.parse(getStringProperty(JSONSCHEMA_addDescriptionsTo, null));
-		defaultSchemas = getMapProperty(JSONSCHEMA_defaultSchemas, ObjectMap.class);
+		defaultSchemas = getMapProperty(JSONSCHEMA_defaultSchemas, OMap.class);
 
 		Set<Pattern> ignoreTypes = new LinkedHashSet<>();
 		for (String s : split(ps.getProperty(JSONSCHEMA_ignoreTypes, String.class, "")))
@@ -463,7 +464,7 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	 * @return
 	 * 	Custom schema information for particular class types.
 	 */
-	protected final Map<String,ObjectMap> getDefaultSchemas() {
+	protected final Map<String,OMap> getDefaultSchemas() {
 		return defaultSchemas;
 	}
 
@@ -539,17 +540,17 @@ public class JsonSchemaGenerator extends BeanTraverseContext implements JsonSche
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonSchemaGenerator", new DefaultFilteringObjectMap()
-				.append("useBeanDefs", useBeanDefs)
-				.append("allowNestedExamples", allowNestedExamples)
-				.append("allowNestedDescriptions", allowNestedDescriptions)
-				.append("beanDefMapper", beanDefMapper)
-				.append("addExamplesTo", addExamplesTo)
-				.append("addDescriptionsTo", addDescriptionsTo)
-				.append("defaultSchemas", defaultSchemas)
-				.append("ignoreTypes", ignoreTypes)
+			.a("JsonSchemaGenerator", new DefaultFilteringOMap()
+				.a("useBeanDefs", useBeanDefs)
+				.a("allowNestedExamples", allowNestedExamples)
+				.a("allowNestedDescriptions", allowNestedDescriptions)
+				.a("beanDefMapper", beanDefMapper)
+				.a("addExamplesTo", addExamplesTo)
+				.a("addDescriptionsTo", addDescriptionsTo)
+				.a("defaultSchemas", defaultSchemas)
+				.a("ignoreTypes", ignoreTypes)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
index 9032539..7a4ab74 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
@@ -20,6 +20,7 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.http.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.reflect.*;
@@ -245,7 +246,7 @@ public class JsonSchemaGeneratorBuilder extends BeanTraverseBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@ConfigurationProperty
-	public JsonSchemaGeneratorBuilder defaultSchema(Class<?> c, ObjectMap schema) {
+	public JsonSchemaGeneratorBuilder defaultSchema(Class<?> c, OMap schema) {
 		return putTo(JSONSCHEMA_defaultSchemas, c.getName(), schema);
 	}
 
@@ -291,7 +292,7 @@ public class JsonSchemaGeneratorBuilder extends BeanTraverseBuilder {
 	 * <p>
 	 * The definitions can then be retrieved from the session using {@link JsonSchemaGeneratorSession#getBeanDefs()}.
 	 * <p>
-	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, ObjectMap)}.
+	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, OMap)}.
 	 *
 	 * @param value
 	 * 	The new value for this property.
@@ -318,7 +319,7 @@ public class JsonSchemaGeneratorBuilder extends BeanTraverseBuilder {
 	 * <p>
 	 * The definitions can then be retrieved from the session using {@link JsonSchemaGeneratorSession#getBeanDefs()}.
 	 * <p>
-	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, ObjectMap)}.
+	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, OMap)}.
 	 *
 	 * @return This object (for method chaining).
 	 */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
index e3fc56b..991c9bd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
@@ -20,6 +20,7 @@ import java.util.*;
 import java.util.regex.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.jsonschema.annotation.*;
 import org.apache.juneau.parser.ParseException;
@@ -36,7 +37,7 @@ import org.apache.juneau.transform.*;
 public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 
 	private final JsonSchemaGenerator ctx;
-	private final Map<String,ObjectMap> defs;
+	private final Map<String,OMap> defs;
 	private JsonSerializerSession jsSession;
 
 	/**
@@ -70,7 +71,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 	 * @throws BeanRecursionException Bean recursion occurred.
 	 * @throws SerializeException Error occurred.
 	 */
-	public ObjectMap getSchema(Object o) throws BeanRecursionException, SerializeException {
+	public OMap getSchema(Object o) throws BeanRecursionException, SerializeException {
 		return getSchema(toClassMeta(o), "root", null, false, false, null);
 	}
 
@@ -82,7 +83,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 	 * @throws BeanRecursionException Bean recursion occurred.
 	 * @throws SerializeException Error occurred.
 	 */
-	public ObjectMap getSchema(Type type) throws BeanRecursionException, SerializeException {
+	public OMap getSchema(Type type) throws BeanRecursionException, SerializeException {
 		return getSchema(getClassMeta(type), "root", null, false, false, null);
 	}
 
@@ -94,17 +95,17 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 	 * @throws BeanRecursionException Bean recursion occurred.
 	 * @throws SerializeException Error occurred.
 	 */
-	public ObjectMap getSchema(ClassMeta<?> cm) throws BeanRecursionException, SerializeException {
+	public OMap getSchema(ClassMeta<?> cm) throws BeanRecursionException, SerializeException {
 		return getSchema(cm, "root", null, false, false, null);
 	}
 
 	@SuppressWarnings({ "unchecked", "rawtypes" })
-	private ObjectMap getSchema(ClassMeta<?> eType, String attrName, String[] pNames, boolean exampleAdded, boolean descriptionAdded, JsonSchemaBeanPropertyMeta jsbpm) throws BeanRecursionException, SerializeException {
+	private OMap getSchema(ClassMeta<?> eType, String attrName, String[] pNames, boolean exampleAdded, boolean descriptionAdded, JsonSchemaBeanPropertyMeta jsbpm) throws BeanRecursionException, SerializeException {
 
 		if (ctx.isIgnoredType(eType))
 			return null;
 
-		ObjectMap out = new ObjectMap();
+		OMap out = new OMap();
 
 		if (eType == null)
 			eType = object();
@@ -129,13 +130,13 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 
 		if (useDef && defs.containsKey(getBeanDefId(sType))) {
 			pop();
-			return new ObjectMap().append("$ref", getBeanDefUri(sType));
+			return new OMap().a("$ref", getBeanDefUri(sType));
 		}
 
-		ObjectMap ds = getDefaultSchemas().get(sType.getInnerClass().getName());
+		OMap ds = getDefaultSchemas().get(sType.getInnerClass().getName());
 		if (ds != null && ds.containsKey("type")) {
 			pop();
-			return out.appendAll(ds);
+			return out.aa(ds);
 		}
 
 		JsonSchemaClassMeta jscm = null;
@@ -214,7 +215,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 			descriptionAdded |= description != null;
 
 			if (tc == BEAN) {
-				ObjectMap properties = new ObjectMap();
+				OMap properties = new OMap();
 				BeanMeta bm = getBeanMeta(sType.getInnerClass());
 				if (pNames != null)
 					bm = new BeanMetaFiltered(bm, pNames);
@@ -241,7 +242,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 				out.put("enum", getEnums(sType));
 
 			} else if (tc == MAP) {
-				ObjectMap om = getSchema(sType.getValueType(), "additionalProperties", null, exampleAdded, descriptionAdded, null);
+				OMap om = getSchema(sType.getValueType(), "additionalProperties", null, exampleAdded, descriptionAdded, null);
 				if (! om.isEmpty())
 					out.put("additionalProperties", om);
 
@@ -258,7 +259,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 
 		if (useDef) {
 			defs.put(getBeanDefId(sType), out);
-			out = new ObjectMap().append("$ref", getBeanDefUri(sType));
+			out = OMap.of("$ref", getBeanDefUri(sType));
 		}
 
 		pop();
@@ -340,7 +341,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 	 * @return
 	 * 	The definitions that were gathered during this session, or <jk>null</jk> if {@link JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} was not enabled.
 	 */
-	public Map<String,ObjectMap> getBeanDefs() {
+	public Map<String,OMap> getBeanDefs() {
 		return defs;
 	}
 
@@ -351,7 +352,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 	 * @param def The definition schema.
 	 * @return This object (for method chaining).
 	 */
-	public JsonSchemaGeneratorSession addBeanDef(String id, ObjectMap def) {
+	public JsonSchemaGeneratorSession addBeanDef(String id, OMap def) {
 		if (defs != null)
 			defs.put(id, def);
 		return this;
@@ -423,7 +424,7 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 	 * @return
 	 * 	Custom schema information for particular class types.
 	 */
-	protected final Map<String,ObjectMap> getDefaultSchemas() {
+	protected final Map<String,OMap> getDefaultSchemas() {
 		return ctx.getDefaultSchemas();
 	}
 
@@ -488,9 +489,9 @@ public class JsonSchemaGeneratorSession extends BeanTraverseSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("JsonSchemaGeneratorSession", new DefaultFilteringObjectMap()
+			.a("JsonSchemaGeneratorSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
index 78894b3..8c4af9f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/SchemaUtils.java
@@ -17,7 +17,6 @@ import static org.apache.juneau.internal.StringUtils.*;
 
 import java.util.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.jsonschema.annotation.*;
@@ -35,63 +34,63 @@ public class SchemaUtils {
 	 * @return The schema converted to a map, or and empty map if the annotation was null.
 	 * @throws ParseException Malformed input encountered.
 	 */
-	public static ObjectMap asMap(Schema a) throws ParseException {
+	public static OMap asMap(Schema a) throws ParseException {
 		if (a == null)
-			return ObjectMap.EMPTY_MAP;
-		ObjectMap om = new ObjectMap();
+			return OMap.EMPTY_MAP;
+		OMap om = new OMap();
 		if (empty(a))
 			return om;
 		if (a.value().length > 0)
 			om.putAll(parseMap(a.value()));
 	return om
-		.appendSkipEmpty("additionalProperties", toObjectMap(a.additionalProperties()))
-		.appendSkipEmpty("allOf", joinnl(a.allOf()))
-		.appendSkipEmpty("collectionFormat", a.collectionFormat())
-		.appendSkipEmpty("default", joinnl(a._default()))
-		.appendSkipEmpty("discriminator", a.discriminator())
-		.appendSkipEmpty("description", joinnl(a.description()))
-		.appendSkipEmpty("enum", toSet(a._enum()))
-		.appendSkipEmpty("examples", parseMap(a.examples()))
-		.appendSkipFalse("exclusiveMaximum", a.exclusiveMaximum())
-		.appendSkipFalse("exclusiveMinimum", a.exclusiveMinimum())
-		.appendSkipEmpty("externalDocs", merge(om.getObjectMap("externalDocs"), a.externalDocs()))
-		.appendSkipEmpty("format", a.format())
-		.appendSkipEmpty("ignore", a.ignore() ? "true" : null)
-		.appendSkipEmpty("items", merge(om.getObjectMap("items"), a.items()))
-		.appendSkipEmpty("maximum", a.maximum())
-		.appendSkipMinusOne("maxItems", a.maxItems())
-		.appendSkipMinusOne("maxLength", a.maxLength())
-		.appendSkipMinusOne("maxProperties", a.maxProperties())
-		.appendSkipEmpty("minimum", a.minimum())
-		.appendSkipMinusOne("minItems", a.minItems())
-		.appendSkipMinusOne("minLength", a.minLength())
-		.appendSkipMinusOne("minProperties", a.minProperties())
-		.appendSkipEmpty("multipleOf", a.multipleOf())
-		.appendSkipEmpty("pattern", a.pattern())
-		.appendSkipEmpty("properties", toObjectMap(a.properties()))
-		.appendSkipFalse("readOnly", a.readOnly())
-		.appendSkipFalse("required", a.required())
-		.appendSkipEmpty("title", a.title())
-		.appendSkipEmpty("type", a.type())
-		.appendSkipFalse("uniqueItems", a.uniqueItems())
-		.appendSkipEmpty("xml", joinnl(a.xml()))
-		.appendSkipEmpty("x-example", joinnl(a.example()))
-		.appendSkipEmpty("$ref", a.$ref())
+		.ase("additionalProperties", toOMap(a.additionalProperties()))
+		.ase("allOf", joinnl(a.allOf()))
+		.ase("collectionFormat", a.collectionFormat())
+		.ase("default", joinnl(a._default()))
+		.ase("discriminator", a.discriminator())
+		.ase("description", joinnl(a.description()))
+		.ase("enum", toSet(a._enum()))
+		.ase("examples", parseMap(a.examples()))
+		.asf("exclusiveMaximum", a.exclusiveMaximum())
+		.asf("exclusiveMinimum", a.exclusiveMinimum())
+		.ase("externalDocs", merge(om.getMap("externalDocs"), a.externalDocs()))
+		.ase("format", a.format())
+		.ase("ignore", a.ignore() ? "true" : null)
+		.ase("items", merge(om.getMap("items"), a.items()))
+		.ase("maximum", a.maximum())
+		.asmo("maxItems", a.maxItems())
+		.asmo("maxLength", a.maxLength())
+		.asmo("maxProperties", a.maxProperties())
+		.ase("minimum", a.minimum())
+		.asmo("minItems", a.minItems())
+		.asmo("minLength", a.minLength())
+		.asmo("minProperties", a.minProperties())
+		.ase("multipleOf", a.multipleOf())
+		.ase("pattern", a.pattern())
+		.ase("properties", toOMap(a.properties()))
+		.asf("readOnly", a.readOnly())
+		.asf("required", a.required())
+		.ase("title", a.title())
+		.ase("type", a.type())
+		.asf("uniqueItems", a.uniqueItems())
+		.ase("xml", joinnl(a.xml()))
+		.ase("x-example", joinnl(a.example()))
+		.ase("$ref", a.$ref())
 	;
 	}
 
-	private static ObjectMap toObjectMap(String[] ss) throws ParseException {
+	private static OMap toOMap(String[] ss) throws ParseException {
 		if (ss.length == 0)
 			return null;
 		String s = joinnl(ss);
 		if (s.isEmpty())
 			return null;
-		if (! isObjectMap(s, true))
+		if (! isJsonObject(s, true))
 			s = "{" + s + "}";
-		return new ObjectMap(s);
+		return OMap.ofJson(s);
 	}
 
-	private static ObjectMap parseMap(Object o) throws ParseException {
+	private static OMap parseMap(Object o) throws ParseException {
 		if (o == null)
 			return null;
 		if (o instanceof String[])
@@ -101,14 +100,14 @@ public class SchemaUtils {
 			if (s.isEmpty())
 				return null;
 			if ("IGNORE".equalsIgnoreCase(s))
-				return new ObjectMap().append("ignore", true);
-			if (! isObjectMap(s, true))
+				return OMap.of("ignore", true);
+			if (! isJsonObject(s, true))
 				s = "{" + s + "}";
-			return new ObjectMap(s);
+			return OMap.ofJson(s);
 		}
-		if (o instanceof ObjectMap)
-			return (ObjectMap)o;
-		throw new ParseException("Unexpected data type ''{0}''.  Expected ObjectMap or String.", o.getClass().getName());
+		if (o instanceof OMap)
+			return (OMap)o;
+		throw new ParseException("Unexpected data type ''{0}''.  Expected OMap or String.", o.getClass().getName());
 	}
 
 	private static Set<String> toSet(String[] ss) throws ParseException {
@@ -123,68 +122,68 @@ public class SchemaUtils {
 		return set;
 	}
 
-	private static ObjectMap merge(ObjectMap om, Items a) throws ParseException {
+	private static OMap merge(OMap om, Items a) throws ParseException {
 		if (empty(a))
 			return om;
 		if (a.value().length > 0)
 			om.putAll(parseMap(a.value()));
 		return om
-			.appendSkipEmpty("collectionFormat", a.collectionFormat())
-			.appendSkipEmpty("default", joinnl(a._default()))
-			.appendSkipEmpty("enum", toSet(a._enum()))
-			.appendSkipEmpty("format", a.format())
-			.appendSkipFalse("exclusiveMaximum", a.exclusiveMaximum())
-			.appendSkipFalse("exclusiveMinimum", a.exclusiveMinimum())
-			.appendSkipEmpty("items", merge(om.getObjectMap("items"), a.items()))
-			.appendSkipEmpty("maximum", a.maximum())
-			.appendSkipMinusOne("maxItems", a.maxItems())
-			.appendSkipMinusOne("maxLength", a.maxLength())
-			.appendSkipEmpty("minimum", a.minimum())
-			.appendSkipMinusOne("minItems", a.minItems())
-			.appendSkipMinusOne("minLength", a.minLength())
-			.appendSkipEmpty("multipleOf", a.multipleOf())
-			.appendSkipEmpty("pattern", a.pattern())
-			.appendSkipFalse("uniqueItems", a.uniqueItems())
-			.appendSkipEmpty("type", a.type())
-			.appendSkipEmpty("$ref", a.$ref())
+			.ase("collectionFormat", a.collectionFormat())
+			.ase("default", joinnl(a._default()))
+			.ase("enum", toSet(a._enum()))
+			.ase("format", a.format())
+			.asf("exclusiveMaximum", a.exclusiveMaximum())
+			.asf("exclusiveMinimum", a.exclusiveMinimum())
+			.ase("items", merge(om.getMap("items"), a.items()))
+			.ase("maximum", a.maximum())
+			.asmo("maxItems", a.maxItems())
+			.asmo("maxLength", a.maxLength())
+			.ase("minimum", a.minimum())
+			.asmo("minItems", a.minItems())
+			.asmo("minLength", a.minLength())
+			.ase("multipleOf", a.multipleOf())
+			.ase("pattern", a.pattern())
+			.asf("uniqueItems", a.uniqueItems())
+			.ase("type", a.type())
+			.ase("$ref", a.$ref())
 		;
 	}
 
-	private static ObjectMap merge(ObjectMap om, SubItems a) throws ParseException {
+	private static OMap merge(OMap om, SubItems a) throws ParseException {
 		if (empty(a))
 			return om;
 		if (a.value().length > 0)
 			om.putAll(parseMap(a.value()));
 		return om
-			.appendSkipEmpty("collectionFormat", a.collectionFormat())
-			.appendSkipEmpty("default", joinnl(a._default()))
-			.appendSkipEmpty("enum", toSet(a._enum()))
-			.appendSkipFalse("exclusiveMaximum", a.exclusiveMaximum())
-			.appendSkipFalse("exclusiveMinimum", a.exclusiveMinimum())
-			.appendSkipEmpty("format", a.format())
-			.appendSkipEmpty("items", toObjectMap(a.items()))
-			.appendSkipEmpty("maximum", a.maximum())
-			.appendSkipMinusOne("maxItems", a.maxItems())
-			.appendSkipMinusOne("maxLength", a.maxLength())
-			.appendSkipEmpty("minimum", a.minimum())
-			.appendSkipMinusOne("minItems", a.minItems())
-			.appendSkipMinusOne("minLength", a.minLength())
-			.appendSkipEmpty("multipleOf", a.multipleOf())
-			.appendSkipEmpty("pattern", a.pattern())
-			.appendSkipEmpty("type", a.type())
-			.appendSkipFalse("uniqueItems", a.uniqueItems())
-			.appendSkipEmpty("$ref", a.$ref())
+			.ase("collectionFormat", a.collectionFormat())
+			.ase("default", joinnl(a._default()))
+			.ase("enum", toSet(a._enum()))
+			.asf("exclusiveMaximum", a.exclusiveMaximum())
+			.asf("exclusiveMinimum", a.exclusiveMinimum())
+			.ase("format", a.format())
+			.ase("items", toOMap(a.items()))
+			.ase("maximum", a.maximum())
+			.asmo("maxItems", a.maxItems())
+			.asmo("maxLength", a.maxLength())
+			.ase("minimum", a.minimum())
+			.asmo("minItems", a.minItems())
+			.asmo("minLength", a.minLength())
+			.ase("multipleOf", a.multipleOf())
+			.ase("pattern", a.pattern())
+			.ase("type", a.type())
+			.asf("uniqueItems", a.uniqueItems())
+			.ase("$ref", a.$ref())
 		;
 	}
 
-	private static ObjectMap merge(ObjectMap om, ExternalDocs a) throws ParseException {
+	private static OMap merge(OMap om, ExternalDocs a) throws ParseException {
 		if (empty(a))
 			return om;
 		if (a.value().length > 0)
 			om.putAll(parseMap(a.value()));
 		return om
-			.appendSkipEmpty("description", joinnl(a.description()))
-			.appendSkipEmpty("url", a.url())
+			.ase("description", joinnl(a.description()))
+			.ase("url", a.url())
 		;
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
index 697981b..df14fac 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
@@ -19,6 +19,7 @@ import java.lang.annotation.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.jsonschema.*;
 
 /**
@@ -251,7 +252,7 @@ public @interface JsonSchemaConfig {
 	 * The definitions can then be retrieved from the session using {@link JsonSchemaGeneratorSession#getBeanDefs()}.
 	 *
 	 * <p>
-	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, ObjectMap)}.
+	 * Definitions can also be added programmatically using {@link JsonSchemaGeneratorSession#addBeanDef(String, OMap)}.
 	 *
 	 * <ul class='notes'>
 	 * 	<li>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java
index 738c299..e645846 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java
@@ -48,7 +48,7 @@ public class JsonSchemaConfigApply extends ConfigApply<JsonSchemaConfig> {
 		if (a.beanDefMapper() != BeanDefMapper.Null.class)
 			psb.set(JSONSCHEMA_beanDefMapper, a.beanDefMapper());
 		for (CS e : a.defaultSchemas())
-			psb.putTo(JSONSCHEMA_defaultSchemas, e.k().getName(), objectMap(e.v(), "defaultSchemas"));
+			psb.putTo(JSONSCHEMA_defaultSchemas, e.k().getName(), omap(e.v(), "defaultSchemas"));
 		if (! a.ignoreTypes().isEmpty())
 			psb.set(JSONSCHEMA_ignoreTypes, string(a.ignoreTypes()));
 		if (! a.useBeanDefs().isEmpty())
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
index b4264ec..5d9a260 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 
 /**
@@ -160,8 +161,8 @@ public class MsgPackParser extends InputStreamParser implements MsgPackMetaProvi
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("MsgPackParser", new DefaultFilteringObjectMap());
+			.a("MsgPackParser", new DefaultFilteringOMap());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
index 89088c3..49d40e1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserSession.java
@@ -18,6 +18,7 @@ import java.io.IOException;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.transform.*;
 
@@ -68,7 +69,7 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 		else
 			sType = eType;
 
-		if (sType.isOptional()) 
+		if (sType.isOptional())
 			return (T)Optional.ofNullable(parseAnything(eType.getElementType(), is, outer, pMeta));
 
 		setCurrentClass(sType);
@@ -93,12 +94,12 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 			else if (dt == BIN)
 				o = is.readBinary();
 			else if (dt == ARRAY && sType.isObject()) {
-				ObjectList ol = new ObjectList(this);
+				OList ol = new OList(this);
 				for (int i = 0; i < length; i++)
 					ol.add(parseAnything(object(), is, outer, pMeta));
 				o = ol;
 			} else if (dt == MAP && sType.isObject()) {
-				ObjectMap om = new ObjectMap(this);
+				OMap om = new OMap(this);
 				for (int i = 0; i < length; i++)
 					om.put((String)parseAnything(string(), is, outer, pMeta), parseAnything(object(), is, om, pMeta));
 				o = cast(om, pMeta, eType);
@@ -110,7 +111,7 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 				o = convertToType(o, sType);
 			} else if (sType.isMap()) {
 				if (dt == MAP) {
-					Map m = (sType.canCreateNewInstance(outer) ? (Map)sType.newInstance(outer) : new ObjectMap(this));
+					Map m = (sType.canCreateNewInstance(outer) ? (Map)sType.newInstance(outer) : new OMap(this));
 					for (int i = 0; i < length; i++) {
 						Object key = parseAnything(sType.getKeyType(), is, outer, pMeta);
 						ClassMeta<?> vt = sType.getValueType();
@@ -148,7 +149,7 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 				o = sType.newInstanceFromString(outer, o == null ? "" : o.toString());
 			} else if (sType.isCollection()) {
 				if (dt == MAP) {
-					ObjectMap m = new ObjectMap(this);
+					OMap m = new OMap(this);
 					for (int i = 0; i < length; i++)
 						m.put((String)parseAnything(string(), is, outer, pMeta), parseAnything(object(), is, m, pMeta));
 					o = cast(m, pMeta, eType);
@@ -156,7 +157,7 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 					Collection l = (
 						sType.canCreateNewInstance(outer)
 						? (Collection)sType.newInstance()
-						: new ObjectList(this)
+						: new OList(this)
 					);
 					for (int i = 0; i < length; i++)
 						l.add(parseAnything(sType.getElementType(), is, l, pMeta));
@@ -166,7 +167,7 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 				}
 			} else if (sType.isArray() || sType.isArgs()) {
 				if (dt == MAP) {
-					ObjectMap m = new ObjectMap(this);
+					OMap m = new OMap(this);
 					for (int i = 0; i < length; i++)
 						m.put((String)parseAnything(string(), is, outer, pMeta), parseAnything(object(), is, m, pMeta));
 					o = cast(m, pMeta, eType);
@@ -174,7 +175,7 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 					Collection l = (
 						sType.isCollection() && sType.canCreateNewInstance(outer)
 						? (Collection)sType.newInstance()
-						: new ObjectList(this)
+						: new OList(this)
 					);
 					for (int i = 0; i < length; i++)
 						l.add(parseAnything(sType.isArgs() ? sType.getArg(i) : sType.getElementType(), is, l, pMeta));
@@ -183,7 +184,7 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 					throw new ParseException(this, "Invalid data type {0} encountered for parse type {1}", dt, sType);
 				}
 			} else if (dt == MAP) {
-				ObjectMap m = new ObjectMap(this);
+				OMap m = new OMap(this);
 				for (int i = 0; i < length; i++)
 					m.put((String)parseAnything(string(), is, outer, pMeta), parseAnything(object(), is, m, pMeta));
 				if (m.containsKey(getBeanTypePropertyName(eType)))
@@ -210,9 +211,9 @@ public final class MsgPackParserSession extends InputStreamParserSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("MsgPackParserSession", new DefaultFilteringObjectMap()
+			.a("MsgPackParserSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index 736aa56..d2eb3fb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.serializer.*;
 
 /**
@@ -208,10 +209,10 @@ public class MsgPackSerializer extends OutputStreamSerializer implements MsgPack
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("MsgPackSerializer", new DefaultFilteringObjectMap()
-				.append("addBeanTypes", addBeanTypes)
+			.a("MsgPackSerializer", new DefaultFilteringOMap()
+				.a("addBeanTypes", addBeanTypes)
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
index b3f7aec..0efb177 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerSession.java
@@ -16,6 +16,7 @@ import java.io.IOException;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transform.*;
@@ -89,7 +90,7 @@ public final class MsgPackSerializerSession extends OutputStreamSerializerSessio
 			o = null;
 			aType = object();
 		}
-		
+
 		// Handle Optional<X>
 		if (isOptional(aType)) {
 			o = getOptionalValue(o);
@@ -236,9 +237,9 @@ public final class MsgPackSerializerSession extends OutputStreamSerializerSessio
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("MsgPackSerializerSession", new DefaultFilteringObjectMap()
+			.a("MsgPackSerializerSession", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
index 7295f00..d39fb01 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
@@ -17,6 +17,7 @@ import java.util.concurrent.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.uon.*;
 
@@ -138,9 +139,9 @@ public class OpenApiParser extends UonParser implements OpenApiMetaProvider, Ope
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Context */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("OpenApiParser", new DefaultFilteringObjectMap()
+			.a("OpenApiParser", new DefaultFilteringOMap()
 			);
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java
index 3fc4797..a955212 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserSession.java
@@ -20,6 +20,7 @@ import static org.apache.juneau.httppart.HttpPartSchema.CollectionFormat.*;
 import java.util.*;
 
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.parser.*;
@@ -41,8 +42,8 @@ public class OpenApiParserSession extends UonParserSession {
 	private static final ClassMeta<Double> CM_Double = BC.getClassMeta(Double.class);
 	private static final ClassMeta<Float> CM_Float = BC.getClassMeta(Float.class);
 	private static final ClassMeta<Boolean> CM_Boolean = BC.getClassMeta(Boolean.class);
-	private static final ClassMeta<ObjectList> CM_ObjectList = BC.getClassMeta(ObjectList.class);
-	private static final ClassMeta<ObjectMap> CM_ObjectMap = BC.getClassMeta(ObjectMap.class);
+	private static final ClassMeta<OList> CM_OList = BC.getClassMeta(OList.class);
+	private static final ClassMeta<OMap> CM_OMap = BC.getClassMeta(OMap.class);
 
 	private static final HttpPartSchema DEFAULT_SCHEMA = HttpPartSchema.DEFAULT;
 
@@ -130,7 +131,7 @@ public class OpenApiParserSession extends UonParserSession {
 
 			} else if (t == ARRAY) {
 				if (type.isObject())
-					type = (ClassMeta<T>)CM_ObjectList;
+					type = (ClassMeta<T>)CM_OList;
 
 				ClassMeta<?> eType = type.isObject() ? string() : type.getElementType();
 				if (eType == null)
@@ -198,12 +199,12 @@ public class OpenApiParserSession extends UonParserSession {
 
 			} else if (t == OBJECT) {
 				if (type.isObject())
-					type = (ClassMeta<T>)CM_ObjectMap;
+					type = (ClassMeta<T>)CM_OMap;
 				if (schema.hasProperties() && type.isMapOrBean()) {
 					try {
 						if (type.isBean()) {
 							BeanMap<T> m = BC.createBeanSession().newBeanMap(type.getInnerClass());
-							for (Map.Entry<String,Object> e : parse(partType, DEFAULT_SCHEMA, in, CM_ObjectMap).entrySet()) {
+							for (Map.Entry<String,Object> e : parse(partType, DEFAULT_SCHEMA, in, CM_OMap).entrySet()) {
 								String key = e.getKey();
 								BeanPropertyMeta bpm = m.getPropertyMeta(key);
 								m.put(key, parse(partType, schema.getProperty(key), stringify(e.getValue()), bpm == null ? object() : bpm.getClassMeta()));
@@ -211,7 +212,7 @@ public class OpenApiParserSession extends UonParserSession {
 							return m.getBean();
 						}
 						Map<String,Object> m = (Map<String,Object>)type.newInstance();
-						for (Map.Entry<String,Object> e : parse(partType, DEFAULT_SCHEMA, in, CM_ObjectMap).entrySet()) {
+						for (Map.Entry<String,Object> e : parse(partType, DEFAULT_SCHEMA, in, CM_OMap).entrySet()) {
 							String key = e.getKey();
 							m.put(key, parse(partType, schema.getProperty(key), stringify(e.getValue()), object()));
 						}
@@ -247,9 +248,9 @@ public class OpenApiParserSession extends UonParserSession {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	@Override /* Session */
-	public ObjectMap toMap() {
+	public OMap toMap() {
 		return super.toMap()
-			.append("OpenApiParserSession", new DefaultFilteringObjectMap()
+			.a("OpenApiParserSession", new DefaultFilteringOMap()
... 6909 lines suppressed ...