http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
index d99f5ff..a13df15 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
@@ -19,7 +19,7 @@ import java.util.*;
 
 import javax.xml.datatype.*;
 
-import org.apache.juneau.BeanDictionaryMap;
+import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.json.annotation.*;
@@ -36,7 +36,7 @@ import org.junit.*;
 @SuppressWarnings({"unchecked","serial","javadoc"})
 public class RoundTripBeanMapsTest extends RoundTripTest {
 
-       public RoundTripBeanMapsTest(String label, Serializer s, Parser p, int 
flags) throws Exception {
+       public RoundTripBeanMapsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 
@@ -219,14 +219,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        
//====================================================================================================
        @Test
        public void testSubTypesUsingAnnotation() throws Exception {
-               JsonSerializer js = 
JsonSerializer.DEFAULT_LAX.clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+               JsonSerializer js = new 
JsonSerializerBuilder().simple().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
                // Skip validation-only tests
                if (isValidationOnly())
                        return;
 
-               Serializer s = 
getSerializer().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
-               Parser p = 
getParser().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+               Serializer s = 
getSerializer().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
+               Parser p = 
getParser().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
                B1 b1 = B1.create();
                Object r = s.serialize(b1);
@@ -292,14 +292,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        
//====================================================================================================
        @Test
        public void testSubTypesUsingBeanFilter() throws Exception {
-               JsonSerializer js = 
JsonSerializer.DEFAULT_LAX.clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+               JsonSerializer js = new 
JsonSerializerBuilder().simple().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
                // Skip validation-only tests
                if (isValidationOnly())
                        return;
 
-               Serializer s = 
getSerializer().clone().addBeanFilters(CFilter.class).addPojoSwaps(XMLGregorianCalendarSwap.class);
-               Parser p = 
getParser().clone().addBeanFilters(CFilter.class).addPojoSwaps(XMLGregorianCalendarSwap.class);
+               Serializer s = 
getSerializer().builder().beanFilters(CFilter.class).pojoSwaps(XMLGregorianCalendarSwap.class).build();
+               Parser p = 
getParser().builder().beanFilters(CFilter.class).pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
                C1 c1 = C1.create();
                Object r = s.serialize(c1);
@@ -357,7 +357,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        public static class CFilter extends BeanFilterBuilder {
                public CFilter() {
                        super(C.class);
-                       addToBeanDictionary(CFilterDictionaryMap.class);
+                       beanDictionary(CFilterDictionaryMap.class);
                }
        }
 
@@ -420,8 +420,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
                if (isValidationOnly())
                        return;
 
-               Serializer s = 
getSerializer().clone().addBeanFilters(CAFilter.class);
-               Parser p = getParser().clone().addBeanFilters(CAFilter.class);
+               Serializer s = 
getSerializer().builder().beanFilters(CAFilter.class).build();
+               Parser p = 
getParser().builder().beanFilters(CAFilter.class).build();
 
                CA1 c1 = CA1.create();
                Object r = s.serialize(c1);
@@ -452,7 +452,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        public static class CAFilter extends BeanFilterBuilder {
                public CAFilter() {
                        super(CA.class);
-                       addToBeanDictionary(CAFilterDictionaryMap.class);
+                       beanDictionary(CAFilterDictionaryMap.class);
                }
        }
 
@@ -498,14 +498,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        
//====================================================================================================
        @Test
        public void testPropertiesUsingBeanFilter() throws Exception {
-               JsonSerializer js = 
JsonSerializer.DEFAULT_LAX.clone().addBeanFilters(D2Filter.class);
+               JsonSerializer js = new 
JsonSerializerBuilder().simple().beanFilters(D2Filter.class).build();
 
                // Skip validation-only tests
                if (isValidationOnly())
                        return;
 
-               Serializer s = 
getSerializer().clone().addBeanFilters(D2Filter.class);
-               Parser p = getParser().clone().addBeanFilters(D2Filter.class);
+               Serializer s = 
getSerializer().builder().beanFilters(D2Filter.class).build();
+               Parser p = 
getParser().builder().beanFilters(D2Filter.class).build();
 
                D2 d = new D2().init();
                Object r = s.serialize(d);
@@ -526,7 +526,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        public static class D2Filter extends BeanFilterBuilder {
                public D2Filter() {
                        super(D2.class);
-                       setProperties("f3,f2");
+                       properties("f3,f2");
                }
        }
 
@@ -568,8 +568,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
                if (isValidationOnly())
                        return;
 
-               Serializer s = 
getSerializer().clone().addBeanFilters(E2Filter.class);
-               Parser p = getParser().clone().addBeanFilters(E2Filter.class);
+               Serializer s = 
getSerializer().builder().beanFilters(E2Filter.class).build();
+               Parser p = 
getParser().builder().beanFilters(E2Filter.class).build();
 
                E2 e = new E2().init();
                Object r = s.serialize(e);
@@ -589,7 +589,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        public static class E2Filter extends BeanFilterBuilder {
                public E2Filter() {
                        super(E2.class);
-                       setExcludeProperties("f2");
+                       excludeProperties("f2");
                }
        }
 
@@ -630,8 +630,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
        
//====================================================================================================
        @Test
        public void testInterfaceClassUsingBeanFilter() throws Exception {
-               Serializer s;
-               Parser p;
+               SerializerBuilder s = getSerializer().builder();
+               ParserBuilder p = getParser() == null ? null : 
getParser().builder();
                FB2 t;
                Object r;
 
@@ -640,30 +640,30 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
                        return;
 
                // --- BeanFilter defined on parent class ---
-               s = getSerializer().clone().addBeanFilters(FB1Filter.class);
-               p = getParser().clone().addBeanFilters(FB1Filter.class);
+               s.beanFilters(FB1Filter.class);
+               p.beanFilters(FB1Filter.class);
 
                t = new FB2().init();
-               r = s.serialize(t);
-               t = p.parse(r, FB2.class);
+               r = s.build().serialize(t);
+               t = p.build().parse(r, FB2.class);
                assertObjectEquals("{f1:'f1'}", t);
 
                // --- BeanFilter defined on child class class ---
-               s = getSerializer().clone().addBeanFilters(FB2Filter.class);
-               p = getParser().clone().addBeanFilters(FB2Filter.class);
+               s.beanFilters(FB2Filter.class);
+               p.beanFilters(FB2Filter.class);
 
                t = new FB2().init();
-               r = s.serialize(t);
-               t = p.parse(r, FB2.class);
+               r = s.build().serialize(t);
+               t = p.build().parse(r, FB2.class);
                assertObjectEquals("{f1:'f1'}", t);
 
                // --- BeanFilter defined as plain class ---
-               s = getSerializer().clone().addBeanFilters(FB1.class);
-               p = getParser().clone().addBeanFilters(FB1.class);
+               s.beanFilters(FB1.class);
+               p.beanFilters(FB1.class);
 
                t = new FB2().init();
-               r = s.serialize(t);
-               t = p.parse(r, FB2.class);
+               r = s.build().serialize(t);
+               t = p.build().parse(r, FB2.class);
                assertObjectEquals("{f1:'f1'}", t);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
index 654bbb4..4dcba43 100644
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
@@ -28,7 +28,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripClassesTest extends RoundTripTest {
 
-       public RoundTripClassesTest(String label, Serializer s, Parser p, int 
flags) throws Exception {
+       public RoundTripClassesTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
index 2c41ce2..d7b749c 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
@@ -26,7 +26,7 @@ import org.junit.*;
 @SuppressWarnings({"javadoc"})
 public class RoundTripDTOsTest extends RoundTripTest {
 
-       public RoundTripDTOsTest(String label, Serializer s, Parser p, int 
flags) throws Exception {
+       public RoundTripDTOsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
index 972a786..ae98392 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
@@ -29,7 +29,7 @@ import org.junit.*;
 @SuppressWarnings({"serial","javadoc"})
 public class RoundTripEnumTest extends RoundTripTest {
 
-       public RoundTripEnumTest(String label, Serializer s, Parser p, int 
flags) throws Exception {
+       public RoundTripEnumTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 
@@ -46,7 +46,7 @@ public class RoundTripEnumTest extends RoundTripTest {
 
        @Test
        public void testEnumB() throws Exception {
-               WriterSerializer s = new 
JsonSerializer.Simple().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps());
+               WriterSerializer s = new 
JsonSerializerBuilder().simple().beanFilters(getBeanFilters()).pojoSwaps(getPojoSwaps()).build();
                BEnum t = BEnum.FOO;
                assertEquals("'xfoo'", s.serialize(t));
                t = roundTrip(t, BEnum.class);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
index 9177596..924a6dd 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripGenericsTest extends RoundTripTest {
 
-       public RoundTripGenericsTest(String label, Serializer s, Parser p, int 
flags) throws Exception {
+       public RoundTripGenericsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
index 7bbd8d9..4e41a60 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
@@ -22,6 +22,7 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
@@ -38,7 +39,7 @@ public class RoundTripLargeObjectsTest extends RoundTripTest {
        private static final int NUM_RUNS = 10;
        private static final int SIZE_PARAM = 20000;
 
-       public RoundTripLargeObjectsTest(String label, Serializer s, Parser p, 
int flags) throws Exception {
+       public RoundTripLargeObjectsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 
@@ -48,55 +49,55 @@ public class RoundTripLargeObjectsTest extends 
RoundTripTest {
                        // Full round-trip testing
                        { /* 0 */
                                "Json DEFAULT",
-                               new 
JsonSerializer().setTrimNullProperties(false),
+                               new 
JsonSerializerBuilder().trimNullProperties(false),
                                JsonParser.DEFAULT,
                                0
                        },
                        { /* 1 */
                                "Json DEFAULT_LAX",
-                               new 
JsonSerializer.Simple().setTrimNullProperties(false),
+                               new 
JsonSerializerBuilder().simple().trimNullProperties(false),
                                JsonParser.DEFAULT,
                                0
                        },
                        { /* 2 */
                                "Json DEFAULT_SQ",
-                               new 
JsonSerializer.Simple().setTrimNullProperties(false),
+                               new 
JsonSerializerBuilder().simple().trimNullProperties(false),
                                JsonParser.DEFAULT,
                                0
                        },
                        { /* 3 */
                                "Xml DEFAULT w/namespaces,validation",
-                               new 
XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseWhitespace(true),
+                               new 
XmlSerializerBuilder().sq().ns().trimNullProperties(false).addNamespaceUrisToRoot(true).useWhitespace(true),
                                XmlParser.DEFAULT,
                                CHECK_XML_WHITESPACE | VALIDATE_XML
                        },
                        { /* 4 */
                                "Xml DEFAULT wo/namespaces,validation",
-                               new 
XmlSerializer.Sq().setTrimNullProperties(false),
+                               new 
XmlSerializerBuilder().sq().trimNullProperties(false),
                                XmlParser.DEFAULT,
                                CHECK_XML_WHITESPACE
                        },
                        { /* 5 */
                                "Html",
-                               new 
HtmlSerializer().setTrimNullProperties(false),
+                               new 
HtmlSerializerBuilder().trimNullProperties(false),
                                HtmlParser.DEFAULT,
                                CHECK_XML_WHITESPACE
                        },
                        { /* 6 */
                                "UrlEncoding",
-                               new 
UrlEncodingSerializer().setTrimNullProperties(false),
+                               new 
UrlEncodingSerializerBuilder().trimNullProperties(false),
                                UrlEncodingParser.DEFAULT,
                                0
                        },
                        { /* 7 */
                                "Uon",
-                               new 
UonSerializer().setTrimNullProperties(false),
+                               new 
UonSerializerBuilder().trimNullProperties(false),
                                UonParser.DEFAULT,
                                0
                        },
                        { /* 8 */
                                "MsgPack",
-                               new 
MsgPackSerializer().setTrimNullProperties(false),
+                               new 
MsgPackSerializerBuilder().trimNullProperties(false),
                                MsgPackParser.DEFAULT,
                                0
                        },

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
index f7d2d13..7a3ecca 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
@@ -21,6 +21,7 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transforms.*;
+import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
@@ -32,7 +33,7 @@ import org.junit.*;
 @SuppressWarnings({"deprecation","javadoc"})
 public class RoundTripMapsTest extends RoundTripTest {
 
-       public RoundTripMapsTest(String label, Serializer s, Parser p, int 
flags) throws Exception {
+       public RoundTripMapsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 
@@ -105,27 +106,27 @@ public class RoundTripMapsTest extends RoundTripTest {
                t.put(new byte[]{4,5,6}, null);
                t.put(null, "b");
 
-               s = new 
JsonSerializer.Simple().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+               s = new 
JsonSerializerBuilder().simple().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
                e = "{AQID:'a',BAUG:null,null:'b'}";
                r = s.serialize(t);
                assertEquals(e, r);
 
-               s = new 
XmlSerializer.NsSq().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+               s = new 
XmlSerializerBuilder().ns().sq().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
                e = "<object><AQID>a</AQID><BAUG 
_type='null'/><_x0000_>b</_x0000_></object>";
                r = s.serialize(t);
                assertEquals(e, r);
 
-               s = new 
HtmlSerializer.Sq().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false).setAddKeyValueTableHeaders(true);
+               s = new 
HtmlSerializerBuilder().sq().pojoSwaps(getPojoSwaps()).trimNullProperties(false).addKeyValueTableHeaders(true).build();
                e = 
"<table><tr><th>key</th><th>value</th></tr><tr><td>AQID</td><td>a</td></tr><tr><td>BAUG</td><td><null/></td></tr><tr><td><null/></td><td>b</td></tr></table>";
                r = s.serialize(t);
                assertEquals(e, r);
 
-               s = new 
UonSerializer.Encoding().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+               s = new 
UonSerializerBuilder().encoding().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
                e = "(AQID=a,BAUG=null,null=b)";
                r = s.serialize(t);
                assertEquals(e, r);
 
-               s = new 
UrlEncodingSerializer().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+               s = new 
UrlEncodingSerializerBuilder().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
                e = "AQID=a&BAUG=null&null=b";
                r = s.serialize(t);
                assertEquals(e, r);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
index e398451..8177638 100644
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.a.rttests;
 import static org.junit.Assert.*;
 
 import java.util.*;
+
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -26,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings({"javadoc","deprecation"})
 public class RoundTripNumericConstructorsTest extends RoundTripTest {
 
-       public RoundTripNumericConstructorsTest(String label, Serializer s, 
Parser p, int flags) throws Exception {
+       public RoundTripNumericConstructorsTest(String label, SerializerBuilder 
s, ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
index 80d0bde..3b1aefa 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings({"unused","javadoc"})
 public class RoundTripObjectsAsStringsTest extends RoundTripTest {
 
-       public RoundTripObjectsAsStringsTest(String label, Serializer s, Parser 
p, int flags) throws Exception {
+       public RoundTripObjectsAsStringsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
index d40ebf3..a3fc073 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
@@ -29,7 +29,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripObjectsWithSpecialMethodsTest extends RoundTripTest {
 
-       public RoundTripObjectsWithSpecialMethodsTest(String label, Serializer 
s, Parser p, int flags) throws Exception {
+       public RoundTripObjectsWithSpecialMethodsTest(String label, 
SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
index a8eefcb..fb3f952 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripPrimitiveObjectBeansTest extends RoundTripTest {
 
-       public RoundTripPrimitiveObjectBeansTest(String label, Serializer s, 
Parser p, int flags) throws Exception {
+       public RoundTripPrimitiveObjectBeansTest(String label, 
SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
index 49b18f8..54e0374 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings({"serial","javadoc"})
 public class RoundTripPrimitivesBeansTest extends RoundTripTest {
 
-       public RoundTripPrimitivesBeansTest(String label, Serializer s, Parser 
p, int flags) throws Exception {
+       public RoundTripPrimitivesBeansTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
index 1f8f8cf..ce4e5c4 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
@@ -26,7 +26,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripReadOnlyBeansTest extends RoundTripTest {
 
-       public RoundTripReadOnlyBeansTest(String label, Serializer s, Parser p, 
int flags) throws Exception {
+       public RoundTripReadOnlyBeansTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
index 33cbe28..d3339a8 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
@@ -28,7 +28,7 @@ import org.junit.*;
 @SuppressWarnings({"unchecked","rawtypes","javadoc"})
 public class RoundTripSimpleObjectsTest extends RoundTripTest {
 
-       public RoundTripSimpleObjectsTest(String label, Serializer s, Parser p, 
int flags) throws Exception {
+       public RoundTripSimpleObjectsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 25c8222..f5ed6be 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.a.rttests;
 
 import static org.apache.juneau.a.rttests.RoundTripTest.Flags.*;
 
-import java.lang.reflect.Type;
+import java.lang.reflect.*;
 import java.util.*;
 import java.util.Map.*;
 
@@ -25,6 +25,7 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
 import org.junit.runner.*;
@@ -48,136 +49,136 @@ public abstract class RoundTripTest {
                        // Full round-trip testing
                        { /* 0 */
                                "Json - default",
-                               new 
JsonSerializer().setTrimNullProperties(false),
-                               JsonParser.DEFAULT,
+                               new 
JsonSerializerBuilder().trimNullProperties(false),
+                               new JsonParserBuilder(),
                                0
                        },
                        { /* 1 */
                                "Json - lax",
-                               new 
JsonSerializer.Simple().setTrimNullProperties(false),
-                               JsonParser.DEFAULT,
+                               new 
JsonSerializerBuilder().simple().trimNullProperties(false),
+                               new JsonParserBuilder(),
                                0
                        },
                        { /* 2 */
                                "Json - lax, readable",
-                               new 
JsonSerializer.SimpleReadable().setTrimNullProperties(false),
-                               JsonParser.DEFAULT,
+                               new 
JsonSerializerBuilder().simple().ws().trimNullProperties(false),
+                               new JsonParserBuilder(),
                                0
                        },
                        { /* 3 */
                                "Xml - namespaces, validation, readable",
-                               new 
XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseWhitespace(true),
-                               XmlParser.DEFAULT,
+                               new 
XmlSerializerBuilder().ns().sq().trimNullProperties(false).addNamespaceUrisToRoot(true).useWhitespace(true),
+                               new XmlParserBuilder(),
                                CHECK_XML_WHITESPACE | VALIDATE_XML
                        },
                        { /* 4 */
                                "Xml - no namespaces, validation",
-                               new 
XmlSerializer.Sq().setTrimNullProperties(false),
-                               XmlParser.DEFAULT,
+                               new 
XmlSerializerBuilder().sq().trimNullProperties(false),
+                               new XmlParserBuilder(),
                                CHECK_XML_WHITESPACE
                        },
                        { /* 5 */
                                "Html - default",
-                               new 
HtmlSerializer().setTrimNullProperties(false),
-                               HtmlParser.DEFAULT,
+                               new 
HtmlSerializerBuilder().trimNullProperties(false),
+                               new HtmlParserBuilder(),
                                CHECK_XML_WHITESPACE
                        },
                        { /* 6 */
                                "Html - readable",
-                               new 
HtmlSerializer.SqReadable().setTrimNullProperties(false),
-                               HtmlParser.DEFAULT,
+                               new 
HtmlSerializerBuilder().sq().ws().trimNullProperties(false),
+                               new HtmlParserBuilder(),
                                CHECK_XML_WHITESPACE
                        },
                        { /* 7 */
                                "Html - with key/value headers",
-                               new 
HtmlSerializer().setAddKeyValueTableHeaders(true),
-                               HtmlParser.DEFAULT,
+                               new 
HtmlSerializerBuilder().addKeyValueTableHeaders(true),
+                               new HtmlParserBuilder(),
                                CHECK_XML_WHITESPACE
                        },
                        { /* 8 */
                                "Uon - default",
-                               new 
UonSerializer().setTrimNullProperties(false),
-                               UonParser.DEFAULT,
+                               new 
UonSerializerBuilder().trimNullProperties(false),
+                               new UonParserBuilder(),
                                0
                        },
                        { /* 9 */
                                "Uon - readable",
-                               new 
UonSerializer.Readable().setTrimNullProperties(false),
-                               UonParser.DEFAULT,
+                               new 
UonSerializerBuilder().ws().trimNullProperties(false),
+                               new UonParserBuilder(),
                                0
                        },
                        { /* 10 */
                                "Uon - encoded",
-                               new 
UonSerializer.Encoding().setTrimNullProperties(false),
-                               UonParser.DEFAULT_DECODING,
+                               new 
UonSerializerBuilder().encoding().trimNullProperties(false),
+                               new UonParserBuilder().decoding(),
                                0
                        },
                        { /* 11 */
                                "UrlEncoding - default",
-                               new 
UrlEncodingSerializer().setTrimNullProperties(false),
-                               UrlEncodingParser.DEFAULT,
+                               new 
UrlEncodingSerializerBuilder().trimNullProperties(false),
+                               new UrlEncodingParserBuilder(),
                                0
                        },
                        { /* 12 */
                                "UrlEncoding - readable",
-                               new 
UrlEncodingSerializer.Readable().setTrimNullProperties(false),
-                               UrlEncodingParser.DEFAULT,
+                               new 
UrlEncodingSerializerBuilder().ws().trimNullProperties(false),
+                               new UrlEncodingParserBuilder(),
                                0
                        },
                        { /* 13 */
                                "UrlEncoding - expanded params",
-                               new 
UrlEncodingSerializer().setExpandedParams(true),
-                               new UrlEncodingParser().setExpandedParams(true),
+                               new 
UrlEncodingSerializerBuilder().expandedParams(true),
+                               new 
UrlEncodingParserBuilder().expandedParams(true),
                                0
                        },
                        { /* 14 */
                                "Rdf.Xml",
-                               new 
RdfSerializer.Xml().setTrimNullProperties(false).setAddLiteralTypes(true),
-                               RdfParser.DEFAULT_XML,
+                               new 
RdfSerializerBuilder().trimNullProperties(false).addLiteralTypes(true),
+                               new RdfParserBuilder().xml(),
                                0
                        },
                        { /* 15 */
                                "Rdf.XmlAbbrev",
-                               new 
RdfSerializer.XmlAbbrev().setTrimNullProperties(false).setAddLiteralTypes(true),
-                               RdfParser.DEFAULT_XML,
+                               new 
RdfSerializerBuilder().xmlabbrev().trimNullProperties(false).addLiteralTypes(true),
+                               new RdfParserBuilder().xml(),
                                0
                        },
                        { /* 16 */
                                "Rdf.Turtle",
-                               new 
RdfSerializer.Turtle().setTrimNullProperties(false).setAddLiteralTypes(true),
-                               RdfParser.DEFAULT_TURTLE,
+                               new 
RdfSerializerBuilder().turtle().trimNullProperties(false).addLiteralTypes(true),
+                               new RdfParserBuilder().turtle(),
                                0
                        },
                        { /* 17 */
                                "Rdf.NTriple",
-                               new 
RdfSerializer.NTriple().setTrimNullProperties(false).setAddLiteralTypes(true),
-                               RdfParser.DEFAULT_NTRIPLE,
+                               new 
RdfSerializerBuilder().ntriple().trimNullProperties(false).addLiteralTypes(true),
+                               new RdfParserBuilder().ntriple(),
                                0
                        },
                        { /* 18 */
                                "Rdf.N3",
-                               new 
RdfSerializer.N3().setTrimNullProperties(false).setAddLiteralTypes(true),
-                               RdfParser.DEFAULT_N3,
+                               new 
RdfSerializerBuilder().n3().trimNullProperties(false).addLiteralTypes(true),
+                               new RdfParserBuilder().n3(),
                                0
                        },
                        { /* 19 */
                                "MsgPack",
-                               new 
MsgPackSerializer().setTrimNullProperties(false),
-                               MsgPackParser.DEFAULT,
+                               new 
MsgPackSerializerBuilder().trimNullProperties(false),
+                               new MsgPackParserBuilder(),
                                0
                        },
 
                        // Validation testing only
                        { /* 20 */
                                "Json schema",
-                               new 
JsonSchemaSerializer().setTrimNullProperties(false),
+                               new 
JsonSchemaSerializerBuilder().trimNullProperties(false),
                                null,
                                RETURN_ORIGINAL_OBJECT
                        },
                        { /* 21 */
                                "Xml schema",
-                               new 
XmlSchemaSerializer().setTrimNullProperties(false),
-                               new XmlValidatorParser(),
+                               new 
XmlSchemaSerializerBuilder().trimNullProperties(false),
+                               new XmlValidatorParserBuilder(),
                                RETURN_ORIGINAL_OBJECT | CHECK_XML_WHITESPACE
                        },
                });
@@ -191,19 +192,19 @@ public abstract class RoundTripTest {
        protected String label;
        public boolean debug = false;
 
-       public RoundTripTest(String label, Serializer s, Parser p, int flags) 
throws Exception {
-               this.s = 
s.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()).setProperties(getProperties());
-               this.p = p == null ? null : 
p.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()).setProperties(getProperties());
+       public RoundTripTest(String label, SerializerBuilder s, ParserBuilder 
p, int flags) throws Exception {
                this.label = label;
 
                Map<Class<Object>, Class<? extends Object>> m = 
getImplClasses();
                if (m != null) {
                        for (Entry<Class<Object>, Class<? extends Object>> e : 
m.entrySet()) {
-                               this.s.addImplClass(e.getKey(), e.getValue());
-                               if (this.p != null)
-                                       this.p.addImplClass(e.getKey(), 
e.getValue());
+                               s.implClass(e.getKey(), e.getValue());
+                               if (p != null)
+                                       p.implClass(e.getKey(), e.getValue());
                        }
                }
+               this.s = 
s.beanFilters(getBeanFilters()).pojoSwaps(getPojoSwaps()).beanDictionary(getDictionary()).properties(getProperties()).build();
+               this.p = p == null ? null : 
p.beanFilters(getBeanFilters()).pojoSwaps(getPojoSwaps()).beanDictionary(getDictionary()).properties(getProperties()).build();
                this.validateXmlWhitespace = (flags & CHECK_XML_WHITESPACE) > 0;
                this.validateXml = (flags & VALIDATE_XML) > 0;
                this.returnOriginalObject = (flags & RETURN_ORIGINAL_OBJECT) > 
0;
@@ -258,22 +259,22 @@ public abstract class RoundTripTest {
                return p;
        }
 
-       protected void addBeanFilters(Class<?>...c) {
-               s.addBeanFilters(c);
+       protected void beanFilters(Class<?>...c) {
+               s = s.builder().beanFilters(c).build();
                if (p != null)
-                       p.addBeanFilters(c);
+                       p = p.builder().beanFilters(c).build();
        }
 
-       protected void addPojoSwaps(Class<?>...c) {
-               s.addPojoSwaps(c);
+       protected void pojoSwaps(Class<?>...c) {
+               s = s.builder().pojoSwaps(c).build();
                if (p != null)
-                       p.addPojoSwaps(c);
+                       p = p.builder().pojoSwaps(c).build();
        }
 
-       protected void addToBeanDictionary(Class<?>...c) {
-               s.addToBeanDictionary(c);
+       protected void beanDictionary(Class<?>...c) {
+               s = s.builder().beanDictionary(c).build();
                if (p != null)
-                       p.addToBeanDictionary(c);
+                       p = p.builder().beanDictionary(c).build();
        }
 
        public boolean isValidationOnly() {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
index a3aa3b6..a5cf645 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
@@ -28,7 +28,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripToObjectMapsTest extends RoundTripTest {
 
-       public RoundTripToObjectMapsTest(String label, Serializer s, Parser p, 
int flags) throws Exception {
+       public RoundTripToObjectMapsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
index cc6c1b9..a3af81d 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
@@ -21,7 +21,6 @@ import javax.xml.datatype.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.annotation.Pojo;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
@@ -36,7 +35,7 @@ import org.junit.*;
 @SuppressWarnings({"unchecked","rawtypes","serial","javadoc"})
 public class RoundTripTransformBeansTest extends RoundTripTest {
 
-       public RoundTripTransformBeansTest(String label, Serializer s, Parser 
p, int flags) throws Exception {
+       public RoundTripTransformBeansTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 
@@ -50,9 +49,7 @@ public class RoundTripTransformBeansTest extends 
RoundTripTest {
                        CalendarSwap.ISO8601DTZ.class,
                        DateSwap.ISO8601DTZ.class
                };
-               s.addPojoSwaps(f);
-               if (p != null)
-                       p.addPojoSwaps(f);
+               pojoSwaps(f);
                A t = new A().init();
                t = roundTrip(t, A.class);
 
@@ -170,9 +167,7 @@ public class RoundTripTransformBeansTest extends 
RoundTripTest {
                        CalendarSwap.DateMedium.class,
                        DateSwap.RFC2822DT.class,
                };
-               s.addPojoSwaps(f);
-               if (p != null)
-                       p.addPojoSwaps(f);
+               pojoSwaps(f);
                A t = new A().init();
                t = roundTrip(t, A.class);
 
@@ -258,8 +253,8 @@ public class RoundTripTransformBeansTest extends 
RoundTripTest {
                GregorianCalendar gc = new GregorianCalendar();
                XMLGregorianCalendar c = 
DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
 
-               Serializer s = 
getSerializer().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
-               Parser p = 
getParser().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+               Serializer s = 
getSerializer().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
+               Parser p = 
getParser().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
                Object r = s.serialize(c);
                XMLGregorianCalendar c2 = p.parse(r, 
XMLGregorianCalendar.class);
@@ -333,10 +328,10 @@ public class RoundTripTransformBeansTest extends 
RoundTripTest {
        
//====================================================================================================
        @Test
        public void testSurrogates() throws Exception {
-               addPojoSwaps(D2.class);
+               pojoSwaps(D2.class);
 
-               JsonSerializer s = new 
JsonSerializer.Simple().addPojoSwaps(D2.class);
-               JsonParser p = new JsonParser().addPojoSwaps(D2.class);
+               JsonSerializer s = new 
JsonSerializerBuilder().simple().pojoSwaps(D2.class).build();
+               JsonParser p = new 
JsonParserBuilder().pojoSwaps(D2.class).build();
                Object r;
                D1 d1 = D1.create();
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
index 37c1d10..dfac4fe 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
@@ -25,7 +25,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripTrimStringsTest extends RoundTripTest {
 
-       public RoundTripTrimStringsTest(String label, Serializer s, Parser p, 
int flags) throws Exception {
+       public RoundTripTrimStringsTest(String label, SerializerBuilder s, 
ParserBuilder p, int flags) throws Exception {
                super(label, s, p, flags);
        }
 
@@ -40,8 +40,8 @@ public class RoundTripTrimStringsTest extends RoundTripTest {
                Parser p = getParser();
                Object in, a, e;
 
-               Serializer s2 = s.clone().setTrimStrings(true);
-               Parser p2 = p.clone().setTrimStrings(true);
+               Serializer s2 = s.builder().trimStrings(true).build();
+               Parser p2 = p.builder().trimStrings(true).build();
 
                in = " foo bar ";
                e = "foo bar";

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
index 1ca1fbd..84f9abf 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
@@ -31,7 +31,7 @@ public class CsvTest {
                l.add(new A("b1",1));
                l.add(new A("b2",2));
 
-               WriterSerializer s = new CsvSerializer();
+               WriterSerializer s = CsvSerializer.DEFAULT;
                String r;
 
                r = s.serialize(l);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
index 362aa8a..fdc8206 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
@@ -13,8 +13,8 @@
 package org.apache.juneau.dto.atom;
 
 import static org.apache.juneau.TestUtils.*;
-import static org.junit.Assert.*;
 import static org.apache.juneau.dto.atom.AtomBuilder.*;
+import static org.junit.Assert.*;
 
 import java.net.*;
 
@@ -98,7 +98,7 @@ public class AtomTest {
                        +"      <updated>2016-12-31T01:02:03-04:00</updated>\n"
                        +"</feed>\n";
 
-               s = new 
XmlSerializer.SqReadable().setEnableNamespaces(false).setSortProperties(true);
+               s = new 
XmlSerializerBuilder().sq().ws().enableNamespaces(false).sortProperties(true).build();
                r = s.serialize(f);
                assertEquals(expected, r);
                f2 = p.parse(r, Feed.class);
@@ -144,7 +144,7 @@ public class AtomTest {
                        +"      
<atom:updated>2016-12-31T01:02:03-04:00</atom:updated>\n"
                        +"</atom:feed>\n";
 
-               s = new 
XmlSerializer.SqReadable().setEnableNamespaces(true).setAddNamespaceUrisToRoot(true).setSortProperties(true);
+               s = new 
XmlSerializerBuilder().sq().ws().enableNamespaces(true).addNamespaceUrisToRoot(true).sortProperties(true).build();
                r = s.serialize(f);
                assertEquals(expected, r);
                f2 = p.parse(r, Feed.class);
@@ -190,7 +190,7 @@ public class AtomTest {
                        +"      <updated>2016-12-31T01:02:03-04:00</updated>\n"
                        +"</feed>\n";
 
-               s = new 
XmlSerializer.SqReadable().setDefaultNamespace("atom").setEnableNamespaces(true).setAddNamespaceUrisToRoot(true).setSortProperties(true);
+               s = new 
XmlSerializerBuilder().sq().ws().defaultNamespace("atom").enableNamespaces(true).addNamespaceUrisToRoot(true).sortProperties(true).build();
                r = s.serialize(f);
                assertEquals(expected, r);
                f2 = p.parse(r, Feed.class);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
index 358d8e3..0f0bdd4 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
@@ -72,12 +72,13 @@ public class CognosXmlTest {
                        new Column("productLineCode", "xs:int")
                };
 
-               XmlSerializer s = new XmlSerializer()
-                       .setUseWhitespace(true)
-                       .setQuoteChar('\'')
-                       .setDefaultNamespace("cognos")
-                       .setEnableNamespaces(true)
-                       .setAddNamespaceUrisToRoot(true);
+               XmlSerializer s = new XmlSerializerBuilder()
+                       .ws()
+                       .sq()
+                       .defaultNamespace("cognos")
+                       .ns()
+                       .addNamespaceUrisToRoot(true)
+                       .build();
 
                DataSet ds = new DataSet(c, rows, 
BeanContext.DEFAULT.createSession());
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
index 15d45d2..de68b7a 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
@@ -16,7 +16,7 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*;
 
 import java.util.*;
 
-import org.apache.juneau.ComboTest;
+import org.apache.juneau.*;
 import org.junit.runner.*;
 import org.junit.runners.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
index cf9ad84..3d43c1e 100644
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
@@ -16,9 +16,8 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*;
 
 import java.util.*;
 
-import org.apache.juneau.BeanSession;
-import org.apache.juneau.ComboTest;
-import org.apache.juneau.annotation.Bean;
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.junit.runner.*;
 import org.junit.runners.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
index 9f2d1a8..1700106 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
@@ -24,7 +24,7 @@ public class JsonSchemaTest {
 
        @Test
        public void testSchema1() throws Exception {
-               JsonSerializer s = 
JsonSerializer.DEFAULT_LAX_READABLE.clone().setAddBeanTypeProperties(false);
+               JsonSerializer s = new 
JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
                JsonParser p = JsonParser.DEFAULT;
                String r;
                Schema t, t2;
@@ -118,7 +118,7 @@ public class JsonSchemaTest {
 
        @Test
        public void testSchema2() throws Exception {
-               JsonSerializer s = 
JsonSerializer.DEFAULT_LAX_READABLE.clone().setAddBeanTypeProperties(false);
+               JsonSerializer s = new 
JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
                JsonParser p = JsonParser.DEFAULT;
                String r;
                Schema t, t2;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
index 12a6707..e6fec70 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
@@ -17,9 +17,8 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.html.annotation.Html;
-import org.apache.juneau.xml.annotation.Xml;
-import org.apache.juneau.xml.annotation.XmlFormat;
+import org.apache.juneau.html.annotation.*;
+import org.apache.juneau.xml.annotation.*;
 import org.junit.*;
 import org.junit.runner.*;
 import org.junit.runners.*;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
index b03bd57..90f5c5c 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
@@ -29,7 +29,7 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testFromSerializer() throws Exception {
-               ReaderParser p = 
HtmlParser.DEFAULT.clone().addToBeanDictionary(A1.class);
+               ReaderParser p = new 
HtmlParserBuilder().beanDictionary(A1.class).build();
                Map m = null;
                String in;
 
@@ -63,7 +63,7 @@ public class CommonParserTest {
                t2.add(new A3("name0","value0"));
                t2.add(new A3("name1","value1"));
                t1.list = t2;
-               in = new 
HtmlSerializer().setAddBeanTypeProperties(true).serialize(t1);
+               in = new 
HtmlSerializerBuilder().addBeanTypeProperties(true).build().serialize(t1);
                t1 = (A1)p.parse(in, Object.class);
                assertEquals("value1", t1.list.get(1).value);
 
@@ -94,7 +94,7 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testCorrectHandlingOfUnknownProperties() throws Exception {
-               ReaderParser p = new 
HtmlParser().setIgnoreUnknownBeanProperties(true);
+               ReaderParser p = new 
HtmlParserBuilder().ignoreUnknownBeanProperties(true).build();
                B t;
 
                String in = "<table 
_type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>a</string></td><td><number>1</number></td></tr><tr><td><string>unknown</string></td><td><number>1</number></td></tr><tr><td><string>b</string></td><td><number>2</number></td></tr></table>";
@@ -103,7 +103,7 @@ public class CommonParserTest {
                assertEquals(t.b, 2);
 
                try {
-                       p = new HtmlParser();
+                       p = HtmlParser.DEFAULT;
                        p.parse(in, B.class);
                        fail("Exception expected");
                } catch (ParseException e) {}
@@ -143,7 +143,7 @@ public class CommonParserTest {
        @Test
        public void testParserListeners() throws Exception {
                final List<String> events = new LinkedList<String>();
-               HtmlParser p = new 
HtmlParser().setIgnoreUnknownBeanProperties(true);
+               HtmlParser p = new 
HtmlParserBuilder().ignoreUnknownBeanProperties(true).build();
                p.addListener(
                        new ParserListener() {
                                @Override /* ParserListener */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
index d4e29a5..0f1e267 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
@@ -34,18 +34,18 @@ public class CommonTest {
        
//====================================================================================================
        @Test
        public void testTrimNullsFromBeans() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializerBuilder s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
                HtmlParser p = HtmlParser.DEFAULT;
                A t1 = A.create(), t2;
 
-               s.setTrimNullProperties(false);
-               String r = s.serialize(t1);
+               s.trimNullProperties(false);
+               String r = s.build().serialize(t1);
                
assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>s1</td><td><null/></td></tr><tr><td>s2</td><td>s2</td></tr></table>",
 r);
                t2 = p.parse(r, A.class);
                assertEqualObjects(t1, t2);
 
-               s.setTrimNullProperties(true);
-               r = s.serialize(t1);
+               s.trimNullProperties(true);
+               r = s.build().serialize(t1);
                
assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table>",
 r);
                t2 = p.parse(r, A.class);
                assertEqualObjects(t1, t2);
@@ -66,19 +66,19 @@ public class CommonTest {
        
//====================================================================================================
        @Test
        public void testTrimEmptyMaps() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializerBuilder s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
                HtmlParser p = HtmlParser.DEFAULT;
                B t1 = B.create(), t2;
                String r;
 
-               s.setTrimEmptyMaps(false);
-               r = s.serialize(t1);
+               s.trimEmptyMaps(false);
+               r = s.build().serialize(t1);
                
assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><table><tr><th>key</th><th>value</th></tr></table></td></tr><tr><td>f2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>f2a</td><td><null/></td></tr><tr><td>f2b</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table></td></tr></table></td></tr></table>",
 r);
                t2 = p.parse(r, B.class);
                assertEqualObjects(t1, t2);
 
-               s.setTrimEmptyMaps(true);
-               r = s.serialize(t1);
+               s.trimEmptyMaps(true);
+               r = s.build().serialize(t1);
                
assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>f2a</td><td><null/></td></tr><tr><td>f2b</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table></td></tr></table></td></tr></table>",
 r);
                t2 = p.parse(r, B.class);
                assertNull(t2.f1);
@@ -100,19 +100,19 @@ public class CommonTest {
        
//====================================================================================================
        @Test
        public void testTrimEmptyLists() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializerBuilder s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
                HtmlParser p = HtmlParser.DEFAULT;
                C t1 = C.create(), t2;
                String r;
 
-               s.setTrimEmptyCollections(false);
-               r = s.serialize(t1);
+               s.trimEmptyCollections(false);
+               r = s.build().serialize(t1);
                
assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><ul></ul></td></tr><tr><td>f2</td><td><table
 
_type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td>s2</td></tr></table></td></tr></table>",
 r);
                t2 = p.parse(r, C.class);
                assertEqualObjects(t1, t2);
 
-               s.setTrimEmptyCollections(true);
-               r = s.serialize(t1);
+               s.trimEmptyCollections(true);
+               r = s.build().serialize(t1);
                
assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f2</td><td><table
 
_type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td>s2</td></tr></table></td></tr></table>",
 r);
                t2 = p.parse(r, C.class);
                assertNull(t2.f1);
@@ -134,13 +134,13 @@ public class CommonTest {
        
//====================================================================================================
        @Test
        public void testTrimEmptyArrays() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializerBuilder s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
                HtmlParser p = HtmlParser.DEFAULT;
                D t1 = D.create(), t2;
                String r;
 
-               s.setTrimEmptyCollections(false);
-               r = s.serialize(t1);
+               s.trimEmptyCollections(false);
+               r = s.build().serialize(t1);
                assertEquals(
                        "<table>"
                                +"<tr><th>key</th><th>value</th></tr>"
@@ -163,8 +163,8 @@ public class CommonTest {
                t2 = p.parse(r, D.class);
                assertEqualObjects(t1, t2);
 
-               s.setTrimEmptyCollections(true);
-               r = s.serialize(t1);
+               s.trimEmptyCollections(true);
+               r = s.build().serialize(t1);
                assertEquals(
                        "<table>"
                                +"<tr><th>key</th><th>value</th></tr>"
@@ -200,7 +200,7 @@ public class CommonTest {
        
//====================================================================================================
        @Test
        public void testBeanPropertyProperties() throws Exception {
-               HtmlSerializer s = 
HtmlSerializer.DEFAULT_SQ.clone().setAddKeyValueTableHeaders(true);
+               HtmlSerializer s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build();
                E1 t = new E1();
                String r;
 
@@ -353,13 +353,13 @@ public class CommonTest {
        
//====================================================================================================
        @Test
        public void testUris() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setUriAnchorText(PROPERTY_NAME).setUseWhitespace(false).setAddKeyValueTableHeaders(true);
+               HtmlSerializerBuilder s = new 
HtmlSerializerBuilder().sq().uriAnchorText(PROPERTY_NAME).useWhitespace(false).addKeyValueTableHeaders(true);
                TestURI t = new TestURI();
                String r;
                String expected;
 
-               s.setRelativeUriBase(null);
-               r = strip(s.serialize(t));
+               s.relativeUriBase(null);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0</a>"
                        +"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -379,8 +379,8 @@ public class CommonTest {
                ;
                assertEquals(expected, r);
 
-               s.setRelativeUriBase("");  // Same as null.
-               r = strip(s.serialize(t));
+               s.relativeUriBase("");  // Same as null.
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0</a>"
                        +"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -400,8 +400,8 @@ public class CommonTest {
                ;
                assertEquals(expected, r);
 
-               s.setRelativeUriBase("/cr");
-               r = strip(s.serialize(t));
+               s.relativeUriBase("/cr");
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>f0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>f1</a>"
@@ -421,8 +421,8 @@ public class CommonTest {
                ;
                assertEquals(expected, r);
 
-               s.setRelativeUriBase("/cr/");  // Same as above
-               r = strip(s.serialize(t));
+               s.relativeUriBase("/cr/");  // Same as above
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>f0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>f1</a>"
@@ -442,8 +442,8 @@ public class CommonTest {
                ;
                assertEquals(expected, r);
 
-               s.setRelativeUriBase("/");
-               r = strip(s.serialize(t));
+               s.relativeUriBase("/");
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/f0/x0'>f0</a>"
                        +"\n[f1]=<a href='/f1/x1'>f1</a>"
@@ -463,10 +463,10 @@ public class CommonTest {
                ;
                assertEquals(expected, r);
 
-               s.setRelativeUriBase(null);
+               s.relativeUriBase(null);
 
-               s.setAbsolutePathUriBase("http://foo";);
-               r = strip(s.serialize(t));
+               s.absolutePathUriBase("http://foo";);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0</a>"
                        +"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -486,8 +486,8 @@ public class CommonTest {
                ;
                assertEquals(expected, r);
 
-               s.setAbsolutePathUriBase("http://foo/";);
-               r = strip(s.serialize(t));
+               s.absolutePathUriBase("http://foo/";);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0</a>"
                        +"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -507,8 +507,8 @@ public class CommonTest {
                ;
                assertEquals(expected, r);
 
-               s.setAbsolutePathUriBase("");  // Same as null.
-               r = strip(s.serialize(t));
+               s.absolutePathUriBase("");  // Same as null.
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0</a>"
                        +"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -539,31 +539,11 @@ public class CommonTest {
        }
 
        
//====================================================================================================
-       // Validate that you cannot update properties on locked serializer.
-       
//====================================================================================================
-       @Test
-       public void testLockedSerializer() throws Exception {
-               HtmlSerializer s = new HtmlSerializer().lock();
-               try {
-                       s.setEnableNamespaces(true);
-                       fail("Locked exception not thrown");
-               } catch (LockedException e) {}
-               try {
-                       s.setAddBeanTypeProperties(true);
-                       fail("Locked exception not thrown");
-               } catch (LockedException e) {}
-               try {
-                       s.setBeanMapPutReturnsOldValue(true);
-                       fail("Locked exception not thrown");
-               } catch (LockedException e) {}
-       }
-
-       
//====================================================================================================
        // Recursion
        
//====================================================================================================
        @Test
        public void testRecursion() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializerBuilder s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
 
                R1 r1 = new R1();
                R2 r2 = new R2();
@@ -574,7 +554,7 @@ public class CommonTest {
 
                // No recursion detection
                try {
-                       s.serialize(r1);
+                       s.build().serialize(r1);
                        fail("Exception expected!");
                } catch (Exception e) {
                        String msg = e.getLocalizedMessage();
@@ -582,9 +562,9 @@ public class CommonTest {
                }
 
                // Recursion detection, no ignore
-               s.setDetectRecursions(true);
+               s.detectRecursions(true);
                try {
-                       s.serialize(r1);
+                       s.build().serialize(r1);
                        fail("Exception expected!");
                } catch (Exception e) {
                        String msg = e.getLocalizedMessage();
@@ -594,12 +574,14 @@ public class CommonTest {
                        
assertTrue(msg.contains("->[3]r1:org.apache.juneau.html.CommonTest$R1"));
                }
 
-               s.setIgnoreRecursions(true);
-               
assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>foo</td></tr><tr><td>r2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>bar</td></tr><tr><td>r3</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>baz</td></tr></table></td></tr></table></td></tr></table>",
-                       s.serialize(r1));
+               s.ignoreRecursions(true);
+               assertEquals(
+                       
"<table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>foo</td></tr><tr><td>r2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>bar</td></tr><tr><td>r3</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>baz</td></tr></table></td></tr></table></td></tr></table>",
+                       s.build().serialize(r1)
+               );
 
                // Make sure this doesn't blow up.
-               s.getSchemaSerializer().serialize(r1);
+               s.build().getSchemaSerializer().serialize(r1);
        }
 
        public static class R1 {
@@ -620,7 +602,7 @@ public class CommonTest {
        
//====================================================================================================
        @Test
        public void testBasicBean() throws Exception {
-               WriterSerializer s = new 
HtmlSerializer.Sq().setTrimNullProperties(false).setSortProperties(true).setAddKeyValueTableHeaders(true);
+               WriterSerializer s = new 
HtmlSerializerBuilder().sq().trimNullProperties(false).sortProperties(true).addKeyValueTableHeaders(true).build();
 
                J a = new J();
                a.setF1("J");

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
index 2025430..5a48716 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
@@ -49,13 +49,13 @@ public class HtmlTest {
        
//====================================================================================================
        @Test
        public void testAnchorTextOptions() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializerBuilder s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
                TestURI t = new TestURI();
                String r;
                String expected = null;
 
-               s.setUriAnchorText(TO_STRING);
-               r = strip(s.serialize(t));
+               s.uriAnchorText(TO_STRING);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='f0/x0'>f0/x0</a>"
                        +"\n[f1]=<a href='f1/x1'>f1/x1</a>"
@@ -74,10 +74,10 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
                assertEquals(expected, r);
 
-               s.setAbsolutePathUriBase("http://myhost";);
-               s.setRelativeUriBase("/cr");
-               s.setUriAnchorText(TO_STRING);
-               r = strip(s.serialize(t));
+               s.absolutePathUriBase("http://myhost";);
+               s.relativeUriBase("/cr");
+               s.uriAnchorText(TO_STRING);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -96,8 +96,8 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
                assertEquals(expected, r);
 
-               s.setUriAnchorText(URI);
-               r = strip(s.serialize(t));
+               s.uriAnchorText(URI);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>/cr/f0/x0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>/cr/f1/x1</a>"
@@ -116,8 +116,8 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
                assertEquals(expected, r);
 
-               s.setUriAnchorText(LAST_TOKEN);
-               r = strip(s.serialize(t));
+               s.uriAnchorText(LAST_TOKEN);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>x0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>x1</a>"
@@ -136,8 +136,8 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>xe</a>";
                assertEquals(expected, r);
 
-               s.setUriAnchorText(URI_ANCHOR);
-               r = strip(s.serialize(t));
+               s.uriAnchorText(URI_ANCHOR);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -156,8 +156,8 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
                assertEquals(expected, r);
 
-               s.setLabelParameter("label2");
-               r = strip(s.serialize(t));
+               s.labelParameter("label2");
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -176,8 +176,8 @@ public class HtmlTest {
                        +"\n[fe]=<a 
href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>MY_LABEL</a>";
                assertEquals(expected, r);
 
-               s.setDetectLinksInStrings(false);
-               r = strip(s.serialize(t));
+               s.detectLinksInStrings(false);
+               r = strip(s.build().serialize(t));
                expected = ""
                        +"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
                        +"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -196,9 +196,9 @@ public class HtmlTest {
                        
+"\n[fe]=http://www.apache.org/fe/xe?foo=bar&amp;label2=MY_LABEL";;
                        assertEquals(expected, r);
 
-                       s.setDetectLinksInStrings(true);
-                       s.setLookForLabelParameters(false);
-                       r = strip(s.serialize(t));
+                       s.detectLinksInStrings(true);
+                       s.lookForLabelParameters(false);
+                       r = strip(s.build().serialize(t));
                        expected = ""
                                +"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
                                +"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -232,7 +232,7 @@ public class HtmlTest {
        
//====================================================================================================
        @Test
        public void testHtmlAnnotationAsPlainText() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializer s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build();
                Object o = null;
                String r;
 
@@ -264,7 +264,7 @@ public class HtmlTest {
        
//====================================================================================================
        @Test
        public void testHtmlAnnotationAsXml() throws Exception {
-               HtmlSerializer s = new 
HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+               HtmlSerializer s = new 
HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build();
                Object o = null;
                String r;
 
@@ -292,7 +292,7 @@ public class HtmlTest {
        
//====================================================================================================
        @Test
        public void testNoTableHeaders() throws Exception {
-               HtmlSerializer s = new HtmlSerializer.Sq();
+               HtmlSerializer s = HtmlSerializer.DEFAULT_SQ;
                Object o = null;
                String r;
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
index 6ea5a29..8c423ef 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
@@ -2046,7 +2046,7 @@ public class ConfigFileTest {
                cf.put("d", "$B{$A{X}}");
                cf.put("e", "$D{X}");
 
-               VarResolver vr = new VarResolver().addVars(ALVar.class, 
BLVar.class);
+               VarResolver vr = new VarResolverBuilder().vars(ALVar.class, 
BLVar.class).build();
 
                cf = cf.getResolving(vr);
 
@@ -2057,7 +2057,7 @@ public class ConfigFileTest {
                assertEquals("$D{X}", cf.getString("e"));
 
                // Create new resolver that addx $C and overrides $A
-               VarResolver vr2 = vr.clone().addVars(AUVar.class, DUVar.class);
+               VarResolver vr2 = vr.builder().vars(AUVar.class, 
DUVar.class).build();
 
                // true == augment by adding existing as parent to the new 
resolver
                cf = cf.getResolving(vr2);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java 
b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
index 9dc89d2..8c77649 100755
--- 
a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
+++ 
b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
@@ -18,7 +18,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.annotation.Bean;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -40,14 +40,14 @@ public class CommonParserTest {
                return s.replaceFirst("<rdf:RDF[^>]+>\\s*", 
"").replaceAll("</rdf:RDF>$", "").trim().replaceAll("[\\r\\n]", "");
        }
 
-       private RdfSerializer getBasicSerializer() {
-               return new RdfSerializer()
-                       .setQuoteChar('\'')
-                       .setAddLiteralTypes(true)
-                       .setUseWhitespace(false)
-                       .setProperty(RDF_rdfxml_allowBadUris, true)
-                       .setProperty(RDF_rdfxml_showDoctypeDeclaration, false)
-                       .setProperty(RDF_rdfxml_showXmlDeclaration, false);
+       private RdfSerializerBuilder getBasicSerializer() {
+               return new RdfSerializerBuilder()
+                       .sq()
+                       .addLiteralTypes(true)
+                       .useWhitespace(false)
+                       .property(RDF_rdfxml_allowBadUris, true)
+                       .property(RDF_rdfxml_showDoctypeDeclaration, false)
+                       .property(RDF_rdfxml_showXmlDeclaration, false);
        }
 
        
//====================================================================================================
@@ -55,8 +55,8 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testFromSerializer() throws Exception {
-               WriterSerializer s = getBasicSerializer();
-               ReaderParser p = new RdfParser.Xml().setTrimWhitespace(true);
+               WriterSerializer s = getBasicSerializer().build();
+               ReaderParser p = new 
RdfParserBuilder().xml().trimWhitespace(true).build();
                Map m = null;
                String in;
                Integer one = Integer.valueOf(1);
@@ -109,7 +109,7 @@ public class CommonParserTest {
                t2.add(new A3("name1","value1"));
                t1.list = t2;
 
-               s.setAddBeanTypeProperties(true);
+               s = getBasicSerializer().addBeanTypeProperties(true).build();
                in = strip(s.serialize(t1));
                
assertEquals("<rdf:Description><jp:_type>A1</jp:_type><jp:list><rdf:Seq><rdf:li 
rdf:parseType='Resource'><jp:name>name0</jp:name><jp:value>value0</jp:value></rdf:li><rdf:li
 
rdf:parseType='Resource'><jp:name>name1</jp:name><jp:value>value1</jp:value></rdf:li></rdf:Seq></jp:list></rdf:Description>",
 in);
                in = wrap(in);
@@ -139,7 +139,7 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testCorrectHandlingOfUnknownProperties() throws Exception {
-               ReaderParser p = new 
RdfParser.Xml().setIgnoreUnknownBeanProperties(true);
+               ReaderParser p = new 
RdfParserBuilder().xml().ignoreUnknownBeanProperties(true).build();
                B t;
 
                String in = wrap("<rdf:Description><jp:a 
rdf:datatype='http://www.w3.org/2001/XMLSchema#int'>1</jp:a><jp:unknownProperty>foo</jp:unknownProperty><jp:b
 
rdf:datatype='http://www.w3.org/2001/XMLSchema#int'>2</jp:b></rdf:Description>");
@@ -148,7 +148,7 @@ public class CommonParserTest {
                assertEquals(t.b, 2);
 
                try {
-                       p = new RdfParser.Xml();
+                       p = new RdfParserBuilder().xml().build();
                        p.parse(in, B.class);
                        fail("Exception expected");
                } catch (ParseException e) {}
@@ -163,7 +163,7 @@ public class CommonParserTest {
        
//====================================================================================================
        @Test
        public void testCollectionPropertiesWithNoSetters() throws Exception {
-               RdfParser p = new RdfParser.Xml();
+               RdfParser p = new RdfParserBuilder().xml().build();
                String in = 
wrap("<rdf:Description><jp:ints><rdf:Seq><rdf:li>1</rdf:li><rdf:li>2</rdf:li></rdf:Seq></jp:ints><jp:beans><rdf:Seq><rdf:li
 
rdf:parseType='Resource'><jp:a>1</jp:a><jp:b>2</jp:b></rdf:li></rdf:Seq></jp:beans></rdf:Description>");
                C t = p.parse(in, C.class);
                assertEquals(t.getInts().size(), 2);
@@ -187,7 +187,7 @@ public class CommonParserTest {
        @Test
        public void testParserListeners() throws Exception {
                final List<String> events = new LinkedList<String>();
-               RdfParser p = new 
RdfParser.Xml().setIgnoreUnknownBeanProperties(true);
+               RdfParser p = new 
RdfParserBuilder().xml().ignoreUnknownBeanProperties(true).build();
                p.addListener(
                        new ParserListener() {
                                @Override /* ParserListener */

Reply via email to