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

[juneau] branch master updated: Updates to @Bean annotation.

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

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


The following commit(s) were added to refs/heads/master by this push:
     new d84fe19  Updates to @Bean annotation.
d84fe19 is described below

commit d84fe1954b07c3bbd41ee5201a91f6a696317d76
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Thu Nov 5 15:54:40 2020 -0500

    Updates to @Bean annotation.
---
 .../java/org/apache/juneau/AnnotationsTest.java    |  74 ++++++-
 .../apache/juneau/BeanConfigAnnotation_Test.java   | 119 -----------
 .../java/org/apache/juneau/BeanConfigTest.java     |   4 +-
 .../java/org/apache/juneau/BeanMapErrorsTest.java  |   8 +-
 .../test/java/org/apache/juneau/BeanMapTest.java   |   3 +-
 .../apache/juneau/ReadWriteOnlyPropertiesTest.java |  52 ++---
 .../juneau/a/rttests/RoundTripBeanMapsTest.java    |  14 +-
 .../juneau/a/rttests/RoundTripGenericsTest.java    |   2 +-
 .../apache/juneau/annotation/BeanBuilder_Test.java |  66 ++++--
 .../org/apache/juneau/annotation/Bean_Test.java    | 230 ++++++++++++++++++++
 .../org/apache/juneau/html/BasicHtml_Test.java     |   4 +-
 .../juneau/html/HtmlSchemaSerializerTest.java      |   4 +-
 .../java/org/apache/juneau/html/Html_Test.java     |   2 +-
 .../apache/juneau/transforms/BeanFilterTest.java   |   2 +-
 .../juneau/transforms/OneWayStringSwapTest.java    |   4 +-
 .../juneau/transforms/RoundTripStringSwapTest.java |   6 +-
 .../java/org/apache/juneau/utils/PojoRestTest.java |   4 +-
 .../java/org/apache/juneau/xml/BasicXmlTest.java   |   6 +-
 .../java/org/apache/juneau/xml/CommonXmlTest.java  |   2 +-
 .../org/apache/juneau/xml/XmlCollapsedTest.java    |   4 +-
 .../test/java/org/apache/juneau/xml/XmlTest.java   |   8 +-
 .../java/org/apache/juneau/dto/cognos/Column.java  |   2 +-
 .../java/org/apache/juneau/dto/cognos/DataSet.java |   2 +-
 .../apache/juneau/dto/jsonschema/JsonSchema.java   |   2 +-
 .../org/apache/juneau/dto/swagger/Contact.java     |   2 +-
 .../juneau/dto/swagger/ExternalDocumentation.java  |   2 +-
 .../org/apache/juneau/dto/swagger/HeaderInfo.java  |   2 +-
 .../java/org/apache/juneau/dto/swagger/Info.java   |   2 +-
 .../java/org/apache/juneau/dto/swagger/Items.java  |   2 +-
 .../org/apache/juneau/dto/swagger/License.java     |   2 +-
 .../org/apache/juneau/dto/swagger/Operation.java   |   2 +-
 .../apache/juneau/dto/swagger/ParameterInfo.java   |   2 +-
 .../apache/juneau/dto/swagger/ResponseInfo.java    |   2 +-
 .../org/apache/juneau/dto/swagger/SchemaInfo.java  |   2 +-
 .../apache/juneau/dto/swagger/SecurityScheme.java  |   2 +-
 .../org/apache/juneau/dto/swagger/Swagger.java     |   2 +-
 .../java/org/apache/juneau/dto/swagger/Tag.java    |   2 +-
 .../java/org/apache/juneau/dto/swagger/Xml.java    |   2 +-
 .../org/apache/juneau/jena/RdfParserBuilder.java   |  48 ++---
 .../apache/juneau/jena/RdfSerializerBuilder.java   |  48 ++---
 .../main/java/org/apache/juneau/BeanContext.java   |  12 +-
 .../java/org/apache/juneau/BeanContextBuilder.java | 177 ++++++++-------
 .../main/java/org/apache/juneau/BeanFilter.java    |  28 +--
 .../java/org/apache/juneau/BeanFilterBuilder.java  |  84 ++++----
 .../src/main/java/org/apache/juneau/BeanMeta.java  |  10 +-
 .../org/apache/juneau/BeanTraverseBuilder.java     |  48 ++---
 .../src/main/java/org/apache/juneau/ClassMeta.java |   2 +-
 .../src/main/java/org/apache/juneau/Context.java   |   2 +-
 .../main/java/org/apache/juneau/ContextCache.java  |  38 ++--
 .../main/java/org/apache/juneau/PropertyStore.java |  24 +++
 .../java/org/apache/juneau/annotation/Bean.java    | 237 ++++++++++++---------
 .../org/apache/juneau/annotation/BeanApply.java}   | 132 ++++++------
 .../org/apache/juneau/annotation/BeanBuilder.java  | 186 +++++++++++-----
 .../org/apache/juneau/annotation/BeanConfig.java   | 215 -------------------
 .../apache/juneau/annotation/BeanConfigApply.java  |  17 --
 .../java/org/apache/juneau/annotation/Beanp.java   |  12 +-
 .../org/apache/juneau/assertions/Assertion.java    |   4 +-
 .../org/apache/juneau/csv/CsvParserBuilder.java    |  48 ++---
 .../apache/juneau/csv/CsvSerializerBuilder.java    |  48 ++---
 .../juneau/html/HtmlDocSerializerBuilder.java      |  48 ++---
 .../org/apache/juneau/html/HtmlParserBuilder.java  |  48 ++---
 .../juneau/html/HtmlSchemaSerializerBuilder.java   |  48 ++---
 .../apache/juneau/html/HtmlSerializerBuilder.java  |  48 ++---
 .../html/HtmlStrippedDocSerializerBuilder.java     |  48 ++---
 .../apache/juneau/internal/AnnotationUtils.java    |  20 ++
 .../org/apache/juneau/jso/JsoParserBuilder.java    |  48 ++---
 .../apache/juneau/jso/JsoSerializerBuilder.java    |  48 ++---
 .../org/apache/juneau/json/JsonParserBuilder.java  |  48 ++---
 .../juneau/json/JsonSchemaSerializerBuilder.java   |  48 ++---
 .../apache/juneau/json/JsonSerializerBuilder.java  |  48 ++---
 .../juneau/json/SimpleJsonParserBuilder.java       |  48 ++---
 .../juneau/json/SimpleJsonSerializerBuilder.java   |  48 ++---
 .../jsonschema/JsonSchemaGeneratorBuilder.java     |  48 ++---
 .../java/org/apache/juneau/marshall/Marshall.java  |   2 +-
 .../juneau/msgpack/MsgPackParserBuilder.java       |  48 ++---
 .../juneau/msgpack/MsgPackSerializerBuilder.java   |  48 ++---
 .../org/apache/juneau/mstat/ExceptionInfo.java     |   2 +-
 .../org/apache/juneau/mstat/ExceptionStats.java    |   2 +-
 .../org/apache/juneau/mstat/MethodExecStats.java   |   2 +-
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |  48 ++---
 .../juneau/oapi/OpenApiSerializerBuilder.java      |  48 ++---
 .../juneau/parser/InputStreamParserBuilder.java    |  48 ++---
 .../org/apache/juneau/parser/ParserBuilder.java    |  48 ++---
 .../apache/juneau/parser/ParserGroupBuilder.java   |  48 ++---
 .../apache/juneau/parser/ReaderParserBuilder.java  |  48 ++---
 .../juneau/plaintext/PlainTextParserBuilder.java   |  48 ++---
 .../plaintext/PlainTextSerializerBuilder.java      |  48 ++---
 .../java/org/apache/juneau/reflect/ClassInfo.java  |  79 ++++++-
 .../serializer/OutputStreamSerializerBuilder.java  |  48 ++---
 .../juneau/serializer/SerializerBuilder.java       |  48 ++---
 .../juneau/serializer/SerializerGroupBuilder.java  |  50 ++---
 .../juneau/serializer/WriterSerializerBuilder.java |  48 ++---
 .../juneau/soap/SoapXmlSerializerBuilder.java      |  48 ++---
 .../org/apache/juneau/uon/UonParserBuilder.java    |  48 ++---
 .../apache/juneau/uon/UonSerializerBuilder.java    |  48 ++---
 .../urlencoding/UrlEncodingParserBuilder.java      |  48 ++---
 .../urlencoding/UrlEncodingSerializerBuilder.java  |  48 ++---
 .../java/org/apache/juneau/utils/BeanDiff.java     |   2 +-
 .../org/apache/juneau/utils/StackTraceInfo.java    |   2 +-
 .../org/apache/juneau/xml/XmlParserBuilder.java    |  48 ++---
 .../apache/juneau/xml/XmlSerializerBuilder.java    |  48 ++---
 .../org/apache/juneau/doc/internal/Console.java    |   4 +-
 .../apache/juneau/doc/internal/FragmentTag.java    |   2 +-
 .../apache/juneau/doc/internal/PropertyTag.java    |   2 +-
 .../org/apache/juneau/examples/rest/TestUtils.java |  10 +-
 .../juneau/examples/rest/springboot/App.java       |   2 +-
 .../microservice/resources/DirectoryResource.java  |   2 +-
 .../microservice/resources/LogsResource.java       |   2 +-
 .../apache/juneau/rest/test/TestMicroservice.java  |   2 +-
 .../rest/test/client/ThirdPartyProxyTest.java      |   2 +-
 .../juneau-all/src/java/main/FieldSorter.java      |  50 +----
 .../client/RestClient_Config_BeanContext_Test.java |  36 ++--
 .../juneau/rest/client/RestClientBuilder.java      |  48 ++---
 .../juneau/rest/mock/MockRestClientBuilder.java    |  48 ++---
 .../annotation/RestMethod_BeanConfig_Test.java     |  34 +--
 .../java/org/apache/juneau/rest/RestContext.java   |   2 +-
 .../org/apache/juneau/rest/RestContextBuilder.java |  50 ++---
 .../org/apache/juneau/rest/RestContextStats.java   |   2 +-
 .../juneau/rest/RestMethodContextBuilder.java      |  48 ++---
 .../java/org/apache/juneau/rest/StatusStats.java   |   6 +-
 .../apache/juneau/rest/helper/BeanDescription.java |   2 +-
 .../juneau/rest/helper/ResourceDescription.java    |   2 +-
 122 files changed, 2156 insertions(+), 2017 deletions(-)

diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/AnnotationsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/AnnotationsTest.java
index 0e912c1..26882a1 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/AnnotationsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/AnnotationsTest.java
@@ -46,7 +46,7 @@ public class AnnotationsTest {
 	}
 
 	/** Class with explicitly specified properties */
-	@Bean(bpi="age,name")
+	@Bean(properties="age,name")
 	public static class Person1 {
 		public int age;
 		private String name;
@@ -59,12 +59,74 @@ public class AnnotationsTest {
 	}
 
 	@Test
+	public void testBeanWithExplicitProperties2() throws Exception {
+		BeanSession session = BeanContext.DEFAULT.createSession();
+		BeanMap bm = null;
+
+		// Basic test
+		bm = session.newBeanMap(Person2.class).load("{age:21,name:'foobar'}");
+		assertNotNull(bm);
+		assertNotNull(bm.getBean());
+		assertEquals(bm.get("age"), 21);
+		assertEquals(bm.get("name"), "foobar");
+
+		bm.put("age", 65);
+		bm.put("name", "futbol");
+		assertEquals(bm.get("age"), 65);
+		assertEquals(bm.get("name"), "futbol");
+	}
+
+	/** Class with explicitly specified properties */
+	@Bean(p="age,name")
+	public static class Person2 {
+		public int age;
+		private String name;
+		public String getName() {
+			return name;
+		}
+		public void setName(String name) {
+			this.name = name;
+		}
+	}
+
+	@Test
+	public void testBeanWithExplicitProperties3() throws Exception {
+		BeanSession session = BeanContext.DEFAULT.createSession();
+		BeanMap bm = null;
+
+		// Basic test
+		bm = session.newBeanMap(Person3.class).load("{age:21,name:'foobar'}");
+		assertNotNull(bm);
+		assertNotNull(bm.getBean());
+		assertEquals(bm.get("age"), 21);
+		assertEquals(bm.get("name"), "foobar");
+
+		bm.put("age", 65);
+		bm.put("name", "futbol");
+		assertEquals(bm.get("age"), 65);
+		assertEquals(bm.get("name"), "futbol");
+	}
+
+	/** Class with explicitly specified properties */
+	@Bean(properties="age",p="name")
+	public static class Person3 {
+		public int age;
+		private String name;
+		public String getName() {
+			return name;
+		}
+		public void setName(String name) {
+			this.name = name;
+		}
+	}
+
+	@Test
 	public void testBeanWithExplicitProperties_usingConfig() throws Exception {
-		BeanSession session = BeanContext.DEFAULT.builder().applyAnnotations(Person1a.class).build().createSession();
+		BeanSession session = BeanContext.DEFAULT.builder().applyAnnotations(PersonConfig.class).build().createSession();
 		BeanMap bm = null;
 
 		// Basic test
-		bm = session.newBeanMap(Person1a.class).load("{age:21,name:'foobar'}");
+		bm = session.newBeanMap(Person4.class).load("{age:21,name:'foobar'}");
 		assertNotNull(bm);
 		assertNotNull(bm.getBean());
 		assertEquals(bm.get("age"), 21);
@@ -77,8 +139,7 @@ public class AnnotationsTest {
 	}
 
 	/** Class with explicitly specified properties */
-	@BeanConfig(applyBean=@Bean(on="Person1a",bpi="age,name"))
-	public static class Person1a {
+	public static class Person4 {
 		public int age;
 		private String name;
 		public String getName() {
@@ -88,6 +149,9 @@ public class AnnotationsTest {
 			this.name = name;
 		}
 	}
+	
+	@Bean(on="Person4",properties="age,name")
+	public static class PersonConfig {}
 
 	//====================================================================================================
 	// Private/protected/default fields should be ignored.
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotation_Test.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotation_Test.java
index 4bca047..dff21d7 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotation_Test.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigAnnotation_Test.java
@@ -119,10 +119,6 @@ public class BeanConfigAnnotation_Test {
 		beansRequireSettersForGetters="$X{true}",
 		beansRequireSomeProperties="$X{true}",
 		typePropertyName="$X{foo}",
-		bpi="A1:$X{foo}",
-		bpx="A1:$X{bar}",
-		bpro="A1:$X{baz}",
-		bpwo="A1:$X{qux}",
 		debug="$X{true}",
 		detectRecursions="$X{true}",
 		fluentSetters="$X{true}",
@@ -286,119 +282,4 @@ public class BeanConfigAnnotation_Test {
 		check("false", bc.isUseJavaBeanIntrospector());
 	}
 
-	//-----------------------------------------------------------------------------------------------------------------
-	// @BeanConfig(bpi/bpx) should override @Bean(bpi/bpx)
-	//-----------------------------------------------------------------------------------------------------------------
-
-	@BeanConfig(bpi="D:b,c,d", bpx="D:c")
-	@Bean(bpi="a,b,c", bpx="b")
-	static class D {
-		public int a, b, c, d;
-
-		public static D create() {
-			D d = new D();
-			d.a = 1;
-			d.b = 2;
-			d.c = 3;
-			d.d = 4;
-			return d;
-		}
-	}
-
-	private static ClassInfo d = ClassInfo.of(D.class);
-
-	@Test
-	public void d01_beanBpiBpxCombined_noBeanConfig() throws Exception {
-		String json = SimpleJson.DEFAULT.toString(D.create());
-		assertEquals("{a:1,c:3}", json);
-		D d = SimpleJson.DEFAULT.read(json, D.class);
-		json = SimpleJson.DEFAULT.toString(d);
-		assertEquals("{a:1,c:3}", json);
-	}
-
-	@Test
-	public void d02_beanBpiBpxCombined_beanConfigOverride() throws Exception {
-		AnnotationList al = d.getAnnotationList();
-		JsonSerializer js = JsonSerializer.create().simple().applyAnnotations(al, sr).build();
-		JsonParser jp = JsonParser.create().applyAnnotations(al, sr).build();
-
-		String json = js.serialize(D.create());
-		assertEquals("{b:2,d:4}", json);
-		D d = jp.parse(json, D.class);
-		json = js.serialize(d);
-		assertEquals("{b:2,d:4}", json);
-	}
-
-	@Test
-	public void d03_beanBpiBpxCombined_beanContextBuilderOverride() throws Exception {
-		Bean ba = BeanBuilder.create("D").bpi("b,c,d").bpx("c").build();
-		JsonSerializer js = JsonSerializer.create().simple().annotations(ba).build();
-		JsonParser jp = JsonParser.create().annotations(ba).build();
-
-		String json = js.serialize(D.create());
-		assertEquals("{b:2,d:4}", json);
-		D d = jp.parse(json, D.class);
-		json = js.serialize(d);
-		assertEquals("{b:2,d:4}", json);
-	}
-
-	//-----------------------------------------------------------------------------------------------------------------
-	// @BeanConfig(bpi/bpx) should override @Bean(bpi/bpx)
-	//-----------------------------------------------------------------------------------------------------------------
-
-	@Bean(bpi="a,b,c")
-	static class E1 {
-		public int a, b, c, d;
-	}
-
-	@BeanConfig(bpi="E:b,c,d", bpx="E:c")
-	@Bean(bpx="b")
-	static class E extends E1 {
-
-		public static E create() {
-			E e = new E();
-			e.a = 1;
-			e.b = 2;
-			e.c = 3;
-			e.d = 4;
-			return e;
-		}
-	}
-
-	private static ClassInfo e = ClassInfo.of(E.class);
-
-	@Test
-	public void e01_beanBpiBpxCombined_multipleBeanAnnotations_noBeanConfig() throws Exception {
-		String json = SimpleJson.DEFAULT.toString(E.create());
-		assertEquals("{a:1,c:3}", json);
-		E e = SimpleJson.DEFAULT.read(json, E.class);
-		json = SimpleJson.DEFAULT.toString(e);
-		assertEquals("{a:1,c:3}", json);
-	}
-
-	@Test
-	public void e02_beanBpiBpxCombined_multipleBeanAnnotations_beanConfigOverride() throws Exception {
-		AnnotationList al = e.getAnnotationList();
-		JsonSerializer js = JsonSerializer.create().simple().applyAnnotations(al, sr).build();
-		JsonParser jp = JsonParser.create().applyAnnotations(al, sr).build();
-
-		String json = js.serialize(E.create());
-		assertEquals("{b:2,d:4}", json);
-		E e = jp.parse(json, E.class);
-		json = js.serialize(e);
-		assertEquals("{b:2,d:4}", json);
-	}
-
-	@Test
-	public void e03_beanBpiBpxCombined_multipleBeanAnnotations_beanContextBuilderOverride() throws Exception {
-		Bean ba = BeanBuilder.create("E").bpi("b,c,d").bpx("c").build();
-		JsonSerializer js = JsonSerializer.create().simple().annotations(ba).build();
-		JsonParser jp = JsonParser.create().annotations(ba).build();
-
-		String json = js.serialize(E.create());
-		assertEquals("{b:2,d:4}", json);
-		E e = jp.parse(json, E.class);
-		json = js.serialize(e);
-		assertEquals("{b:2,d:4}", json);
-	}
 }
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
index c976b60..1c5e5ac 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanConfigTest.java
@@ -405,7 +405,7 @@ public class BeanConfigTest {
 	}
 
 
-	@Bean(bpi="name,age")
+	@Bean(p="name,age")
 	public static class ReadOnlyPerson {
 		private final String name;
 		private final int age;
@@ -445,7 +445,7 @@ public class BeanConfigTest {
 	}
 
 
-	@BeanConfig(applyBean=@Bean(on="ReadOnlyPerson2",bpi="name,age"),applyBeanc=@Beanc(on="ReadOnlyPerson2(String,int)",properties="name,age"))
+	@BeanConfig(applyBean=@Bean(on="ReadOnlyPerson2",p="name,age"),applyBeanc=@Beanc(on="ReadOnlyPerson2(String,int)",properties="name,age"))
 	public static class ReadOnlyPerson2 {
 		private final String name;
 		private final int age;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapErrorsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapErrorsTest.java
index 516c03b..00d2bf4 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapErrorsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapErrorsTest.java
@@ -43,7 +43,7 @@ public class BeanMapErrorsTest {
 		assertFalse(bm.entrySet().stream().map(x -> x.getKey()).collect(Collectors.toList()).contains("f2"));
 	}
 
-	@Bean(bpi="f1")
+	@Bean(p="f1")
 	public static class A1 {
 		public int f1;
 		private int f2 = -1;
@@ -73,7 +73,7 @@ public class BeanMapErrorsTest {
 
 	@BeanConfig(
 		applyBean={
-			@Bean(on="B1", bpi="f1"),
+			@Bean(on="B1", p="f1"),
 		},
 		applyBeanp={
 			@Beanp(on="B1.f2", value="f2")
@@ -109,7 +109,7 @@ public class BeanMapErrorsTest {
 		assertFalse(bm.entrySet().stream().map(x -> x.getKey()).collect(Collectors.toList()).contains("f2"));
 	}
 
-	@Bean(bpi="f1")
+	@Bean(p="f1")
 	public static class A2 {
 		public int f1;
 
@@ -132,7 +132,7 @@ public class BeanMapErrorsTest {
 
 	@BeanConfig(
 		applyBean={
-			@Bean(on="B2", bpi="f1")
+			@Bean(on="B2", p="f1")
 		},
 		applyBeanp={
 			@Beanp(on="B2.f2", value="f2")
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java
index 205eadf..bfff957 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanMapTest.java
@@ -589,7 +589,7 @@ public class BeanMapTest {
 		assertEquals("{s:['foo'],s2:[['foo']],i:[0,0,0],i2:[[0,0,0],[0,0,0]]}", SimpleJsonSerializer.DEFAULT.serialize(t));
 	}
 
-	@Bean(bpi="s,s2,i,i2")
+	@Bean(p="s,s2,i,i2")
 	public static class E {
 		public String[] s;
 		public String[][] s2;
@@ -1547,7 +1547,6 @@ public class BeanMapTest {
 
 		l = (List)m.cast(session.getClassMeta(List.class, Map.class));
 		assertTrue(l instanceof LinkedList);
-		System.err.println(l.get(0).getClass().getName());
 		assertTrue(l.get(0) instanceof OMap);
 		assertEquals(1, ((Map)l.get(0)).get("f1"));
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java
index 81b392b..183dcc6 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/ReadWriteOnlyPropertiesTest.java
@@ -62,7 +62,7 @@ public class ReadWriteOnlyPropertiesTest {
 	// @Bean(bpro/bpwo)
 	//------------------------------------------------------------------------------------------------------------------
 
-	@Bean(bpro="f1", bpwo="f2")
+	@Bean(readOnlyProperties="f1", writeOnlyProperties="f2")
 	public static class B {
 		@Beanp(ro="true")
 		public int f1;
@@ -91,7 +91,7 @@ public class ReadWriteOnlyPropertiesTest {
 	}
 
 	@BeanConfig(
-		applyBean=@Bean(on="Bc", bpro="f1", bpwo="f2"),
+		applyBean=@Bean(on="Bc", readOnlyProperties="f1", writeOnlyProperties="f2"),
 		applyBeanp={
 			@Beanp(on="Bc.f1", ro="true"),
 			@Beanp(on="Bc.f2", wo="true")
@@ -142,32 +142,32 @@ public class ReadWriteOnlyPropertiesTest {
 		WriterSerializer sw;
 
 		sw = SimpleJsonSerializer.DEFAULT.builder()
-			.bpro(C.class.getName(), "f1")
-			.bpwo(C.class.getName(), "f2")
+			.beanPropertiesReadOnly(C.class.getName(), "f1")
+			.beanPropertiesWriteOnly(C.class.getName(), "f2")
 			.build();
 		assertEquals("{f1:1}", sw.toString(C.create()));
 
 		sw = SimpleJsonSerializer.DEFAULT.builder()
-			.bpro("ReadWriteOnlyPropertiesTest$C", "f1")
-			.bpwo("ReadWriteOnlyPropertiesTest$C", "f2")
+			.beanPropertiesReadOnly("ReadWriteOnlyPropertiesTest$C", "f1")
+			.beanPropertiesWriteOnly("ReadWriteOnlyPropertiesTest$C", "f2")
 			.build();
 		assertEquals("{f1:1}", sw.toString(C.create()));
 
 		sw = SimpleJsonSerializer.DEFAULT.builder()
-			.bpro(C.class, "f1")
-			.bpwo(C.class, "f2")
+			.beanPropertiesReadOnly(C.class, "f1")
+			.beanPropertiesWriteOnly(C.class, "f2")
 			.build();
 		assertEquals("{f1:1}", sw.toString(C.create()));
 
 		sw = SimpleJsonSerializer.DEFAULT.builder()
-			.bpro(AMap.of(C.class.getName(), "f1"))
-			.bpwo(AMap.of(C.class.getName(), "f2"))
+			.beanPropertiesReadOnly(AMap.of(C.class.getName(), "f1"))
+			.beanPropertiesWriteOnly(AMap.of(C.class.getName(), "f2"))
 			.build();
 		assertEquals("{f1:1}", sw.toString(C.create()));
 
 		sw = SimpleJsonSerializer.DEFAULT.builder()
-			.bpro(AMap.of("ReadWriteOnlyPropertiesTest$C", "f1"))
-			.bpwo(AMap.of("ReadWriteOnlyPropertiesTest$C", "f2"))
+			.beanPropertiesReadOnly(AMap.of("ReadWriteOnlyPropertiesTest$C", "f1"))
+			.beanPropertiesWriteOnly(AMap.of("ReadWriteOnlyPropertiesTest$C", "f2"))
 			.build();
 		assertEquals("{f1:1}", sw.toString(C.create()));
 	}
@@ -178,40 +178,40 @@ public class ReadWriteOnlyPropertiesTest {
 		C x;
 
 		rp = JsonParser.DEFAULT.builder()
-			.bpro(C.class.getName(), "f1")
-			.bpwo(C.class.getName(), "f2")
+			.beanPropertiesReadOnly(C.class.getName(), "f1")
+			.beanPropertiesWriteOnly(C.class.getName(), "f2")
 			.build();
 		x = rp.parse("{f1:1,f2:2}", C.class);
 		assertEquals(0, x.f1);
 		assertEquals(2, x.f2);
 
 		rp = JsonParser.DEFAULT.builder()
-			.bpro("ReadWriteOnlyPropertiesTest$C", "f1")
-			.bpwo("ReadWriteOnlyPropertiesTest$C", "f2")
+			.beanPropertiesReadOnly("ReadWriteOnlyPropertiesTest$C", "f1")
+			.beanPropertiesWriteOnly("ReadWriteOnlyPropertiesTest$C", "f2")
 			.build();
 		x = rp.parse("{f1:1,f2:2}", C.class);
 		assertEquals(0, x.f1);
 		assertEquals(2, x.f2);
 
 		rp = JsonParser.DEFAULT.builder()
-			.bpro(C.class, "f1")
-			.bpwo(C.class, "f2")
+			.beanPropertiesReadOnly(C.class, "f1")
+			.beanPropertiesWriteOnly(C.class, "f2")
 			.build();
 		x = rp.parse("{f1:1,f2:2}", C.class);
 		assertEquals(0, x.f1);
 		assertEquals(2, x.f2);
 
 		rp = JsonParser.DEFAULT.builder()
-			.bpro(AMap.of(C.class.getName(), "f1"))
-			.bpwo(AMap.of(C.class.getName(), "f2"))
+			.beanPropertiesReadOnly(AMap.of(C.class.getName(), "f1"))
+			.beanPropertiesWriteOnly(AMap.of(C.class.getName(), "f2"))
 			.build();
 		x = rp.parse("{f1:1,f2:2}", C.class);
 		assertEquals(0, x.f1);
 		assertEquals(2, x.f2);
 
 		rp = JsonParser.DEFAULT.builder()
-			.bpro(AMap.of("ReadWriteOnlyPropertiesTest$C", "f1"))
-			.bpwo(AMap.of("ReadWriteOnlyPropertiesTest$C", "f2"))
+			.beanPropertiesReadOnly(AMap.of("ReadWriteOnlyPropertiesTest$C", "f1"))
+			.beanPropertiesWriteOnly(AMap.of("ReadWriteOnlyPropertiesTest$C", "f2"))
 			.build();
 		x = rp.parse("{f1:1,f2:2}", C.class);
 		assertEquals(0, x.f1);
@@ -222,7 +222,7 @@ public class ReadWriteOnlyPropertiesTest {
 	// @Bean(bpro="*")
 	//------------------------------------------------------------------------------------------------------------------
 
-	@Bean(bpro="*")
+	@Bean(readOnlyProperties="*")
 	public static class D {
 		public int f1;
 		public int f2;
@@ -247,7 +247,7 @@ public class ReadWriteOnlyPropertiesTest {
 		assertEquals(0, x.f2);
 	}
 
-	@BeanConfig(applyBean=@Bean(on="Dc",bpro="*"))
+	@BeanConfig(applyBean=@Bean(on="Dc",readOnlyProperties="*"))
 	public static class Dc {
 		public int f1;
 		public int f2;
@@ -276,7 +276,7 @@ public class ReadWriteOnlyPropertiesTest {
 	// @Bean(bpwo="*")
 	//------------------------------------------------------------------------------------------------------------------
 
-	@Bean(bpwo="*")
+	@Bean(writeOnlyProperties="*")
 	public static class E {
 		public int f1;
 		public int f2;
@@ -301,7 +301,7 @@ public class ReadWriteOnlyPropertiesTest {
 		assertEquals(2, x.f2);
 	}
 
-	@BeanConfig(applyBean=@Bean(on="Ec", bpwo="*"))
+	@BeanConfig(applyBean=@Bean(on="Ec", writeOnlyProperties="*"))
 	public static class Ec {
 		public int f1;
 		public int f2;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
index 9a2d38d..7981a41 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
@@ -450,7 +450,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		assertObject(d).json().is("{f3:'f3',f2:'f2'}");
 	}
 
-	@Bean(bpi="f3,f2")
+	@Bean(p="f3,f2")
 	public static class D1 {
 		public String f1, f2, f3;
 		public D1 init() {
@@ -466,14 +466,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	//====================================================================================================
 	@Test
 	public void testPropertiesUsingBeanFilter() throws Exception {
-		JsonSerializer js = JsonSerializer.create().ssq().bpi(D2.class, "f3,f2").build();
+		JsonSerializer js = JsonSerializer.create().ssq().beanProperties(D2.class, "f3,f2").build();
 
 		// Skip validation-only tests
 		if (isValidationOnly())
 			return;
 
-		Serializer s = getSerializer().builder().bpi(D2.class, "f3,f2").build();
-		Parser p = getParser().builder().bpi(D2.class, "f3,f2").build();
+		Serializer s = getSerializer().builder().beanProperties(D2.class, "f3,f2").build();
+		Parser p = getParser().builder().beanProperties(D2.class, "f3,f2").build();
 
 		D2 d = new D2().init();
 		Object r = s.serialize(d);
@@ -510,7 +510,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		assertObject(e).json().is("{f1:'f1',f3:'f3'}");
 	}
 
-	@Bean(bpx="f2")
+	@Bean(excludeProperties="f2")
 	public static class E1 {
 		public String f1, f2, f3;
 		public E1 init() {
@@ -530,8 +530,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		if (isValidationOnly())
 			return;
 
-		Serializer s = getSerializer().builder().bpx(E2.class, "f2").build();
-		Parser p = getParser().builder().bpx(E2.class, "f2").build();
+		Serializer s = getSerializer().builder().beanPropertiesExcludes(E2.class, "f2").build();
+		Parser p = getParser().builder().beanPropertiesExcludes(E2.class, "f2").build();
 
 		E2 e = new E2().init();
 		Object r = s.serialize(e);
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
index 8f5462f..0cfb0bd 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
@@ -59,7 +59,7 @@ public class RoundTripGenericsTest extends RoundTripTest {
 	}
 
 	// Class with unbound type variables.
-	@Bean(bpi="s,t")
+	@Bean(p="s,t")
 	public static class Pair<S,T> {
 		private S s;
 		private T t;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanBuilder_Test.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanBuilder_Test.java
index a40561e..d436085 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanBuilder_Test.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanBuilder_Test.java
@@ -33,66 +33,78 @@ public class BeanBuilder_Test {
 	//------------------------------------------------------------------------------------------------------------------
 
 	Bean a1 = BeanBuilder.create()
-		.bpi("bpi")
-		.bpro("bpro")
-		.bpwo("bpwo")
-		.bpx("bpx")
 		.dictionary(X1.class)
 		.example("example")
+		.excludeProperties("excludeProperties")
 		.fluentSetters(true)
 		.implClass(X1.class)
 		.interceptor(X2.class)
 		.interfaceClass(X1.class)
 		.on("on")
 		.onClass(X1.class)
+		.p("p")
+		.properties("properties")
 		.propertyNamer(BasicPropertyNamer.class)
+		.readOnlyProperties("readOnlyProperties")
+		.ro("ro")
 		.sort(true)
 		.stopClass(X1.class)
 		.typeName("typeName")
 		.typePropertyName("typePropertyName")
+		.wo("wo")
+		.writeOnlyProperties("writeOnlyProperties")
+		.xp("xp")
 		.build();
 
 	Bean a2 = BeanBuilder.create()
-		.bpi("bpi")
-		.bpro("bpro")
-		.bpwo("bpwo")
-		.bpx("bpx")
 		.dictionary(X1.class)
 		.example("example")
+		.excludeProperties("excludeProperties")
 		.fluentSetters(true)
 		.implClass(X1.class)
 		.interceptor(X2.class)
 		.interfaceClass(X1.class)
 		.on("on")
 		.onClass(X1.class)
+		.p("p")
+		.properties("properties")
 		.propertyNamer(BasicPropertyNamer.class)
+		.readOnlyProperties("readOnlyProperties")
+		.ro("ro")
 		.sort(true)
 		.stopClass(X1.class)
 		.typeName("typeName")
 		.typePropertyName("typePropertyName")
+		.wo("wo")
+		.writeOnlyProperties("writeOnlyProperties")
+		.xp("xp")
 		.build();
 
 	@Test
 	public void a01_basic() {
 		assertObject(a1).stderr().json().is(""
 			+ "{"
-				+ "bpi:'bpi',"
-				+ "bpro:'bpro',"
-				+ "bpwo:'bpwo',"
-				+ "bpx:'bpx',"
 				+ "dictionary:['"+CNAME+"$X1'],"
 				+ "example:'example',"
+				+ "excludeProperties:'excludeProperties',"
 				+ "fluentSetters:true,"
 				+ "implClass:'"+CNAME+"$X1',"
 				+ "interceptor:'"+CNAME+"$X2',"
 				+ "interfaceClass:'"+CNAME+"$X1',"
 				+ "on:['on'],"
 				+ "onClass:['"+CNAME+"$X1'],"
+				+ "p:'p',"
+				+ "properties:'properties',"
 				+ "propertyNamer:'org.apache.juneau.BasicPropertyNamer',"
+				+ "readOnlyProperties:'readOnlyProperties',"
+				+ "ro:'ro',"
 				+ "sort:true,"
 				+ "stopClass:'"+CNAME+"$X1',"
 				+ "typeName:'typeName',"
-				+ "typePropertyName:'typePropertyName'"
+				+ "typePropertyName:'typePropertyName',"
+				+ "wo:'wo',"
+				+ "writeOnlyProperties:'writeOnlyProperties',"
+				+ "xp:'xp'"
 			+ "}"
 		);
 	}
@@ -135,45 +147,53 @@ public class BeanBuilder_Test {
 	//------------------------------------------------------------------------------------------------------------------
 
 	@Bean(
-		bpi="bpi",
-		bpro="bpro",
-		bpwo="bpwo",
-		bpx="bpx",
 		dictionary=X1.class,
 		example="example",
+		excludeProperties="excludeProperties",
 		fluentSetters=true,
 		implClass=X1.class,
 		interceptor=X2.class,
 		interfaceClass=X1.class,
 		on="on",
 		onClass=X1.class,
+		p="p",
+		properties="properties",
 		propertyNamer=BasicPropertyNamer.class,
+		readOnlyProperties="readOnlyProperties",
+		ro="ro",
 		sort=true,
 		stopClass=X1.class,
 		typeName="typeName",
-		typePropertyName="typePropertyName"
+		typePropertyName="typePropertyName",
+		wo="wo",
+		writeOnlyProperties="writeOnlyProperties",
+		xp="xp"
 	)
 	public static class D1 {}
 	Bean d1 = D1.class.getAnnotationsByType(Bean.class)[0];
 
 	@Bean(
-		bpi="bpi",
-		bpro="bpro",
-		bpwo="bpwo",
-		bpx="bpx",
 		dictionary=X1.class,
 		example="example",
+		excludeProperties="excludeProperties",
 		fluentSetters=true,
 		implClass=X1.class,
 		interceptor=X2.class,
 		interfaceClass=X1.class,
 		on="on",
 		onClass=X1.class,
+		p="p",
+		properties="properties",
 		propertyNamer=BasicPropertyNamer.class,
+		readOnlyProperties="readOnlyProperties",
+		ro="ro",
 		sort=true,
 		stopClass=X1.class,
 		typeName="typeName",
-		typePropertyName="typePropertyName"
+		typePropertyName="typePropertyName",
+		wo="wo",
+		writeOnlyProperties="writeOnlyProperties",
+		xp="xp"
 	)
 	public static class D2 {}
 	Bean d2 = D2.class.getAnnotationsByType(Bean.class)[0];
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java
index cbd10ba..a22b695 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/Bean_Test.java
@@ -15,14 +15,18 @@ package org.apache.juneau.annotation;
 import static org.junit.Assert.assertEquals;
 import static org.junit.runners.MethodSorters.*;
 
+import org.apache.juneau.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.marshall.*;
 import org.apache.juneau.reflect.*;
+import org.apache.juneau.svl.*;
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
 public class Bean_Test {
 
+	static VarResolverSession vr = VarResolver.create().vars(XVar.class).build().createSession();
+
 	//------------------------------------------------------------------------------------------------------------------
 	// @Bean annotation overrides visibility rules on class and constructor.
 	//------------------------------------------------------------------------------------------------------------------
@@ -154,5 +158,231 @@ public class Bean_Test {
 		json = js.serialize(b);
 		assertEquals("{f1:1,f2:2}", json);
 	}
+
+	//-----------------------------------------------------------------------------------------------------------------
+	// @Bean(on=X,properties=) should override @Bean(properties=)
+	//-----------------------------------------------------------------------------------------------------------------
+
+	@Bean(properties="a,b,c", excludeProperties="b")
+	static class D1 {
+		public int a, b, c, d;
+
+		public static D1 create() {
+			D1 d = new D1();
+			d.a = 1;
+			d.b = 2;
+			d.c = 3;
+			d.d = 4;
+			return d;
+		}
+	}
+
+	@Bean(p="a,b,c", xp="b")
+	static class D2 {
+		public int a, b, c, d;
+
+		public static D2 create() {
+			D2 d = new D2();
+			d.a = 1;
+			d.b = 2;
+			d.c = 3;
+			d.d = 4;
+			return d;
+		}
+	}
+
+	@Bean(on="Dummy", p="b,c,d", xp="c")
+	@Bean(on="D1", properties="b,c,d", excludeProperties="c")
+	@Bean(on="D2", p="b,c,d", xp="c")
+	static class DConfig {}
+
+	private static ClassInfo dConfig = ClassInfo.of(DConfig.class);
+
+	@Test
+	public void d01_beanPropertiesExcludePropertiesCombined_noBeanConfig() throws Exception {
+		String json = SimpleJson.DEFAULT.toString(D1.create());
+		assertEquals("{a:1,c:3}", json);
+		D1 x = SimpleJson.DEFAULT.read(json, D1.class);
+		json = SimpleJson.DEFAULT.toString(x);
+		assertEquals("{a:1,c:3}", json);
+	}
+
+	@Test
+	public void d02_beanPXpCombined_noBeanConfig() throws Exception {
+		String json = SimpleJson.DEFAULT.toString(D2.create());
+		assertEquals("{a:1,c:3}", json);
+		D2 x = SimpleJson.DEFAULT.read(json, D2.class);
+		json = SimpleJson.DEFAULT.toString(x);
+		assertEquals("{a:1,c:3}", json);
+	}
+
+	@Test
+	public void d03_beanPropertiesExcludePropertiesCombined_beanConfigOverride() throws Exception {
+		AnnotationList al = dConfig.getAnnotationList();
+		JsonSerializer js = JsonSerializer.create().simple().applyAnnotations(al, vr).build();
+		JsonParser jp = JsonParser.create().applyAnnotations(al, vr).build();
+
+		String json = js.serialize(D1.create());
+		assertEquals("{b:2,d:4}", json);
+		D1 d = jp.parse(json, D1.class);
+		json = js.serialize(d);
+		assertEquals("{b:2,d:4}", json);
+	}
+
+	@Test
+	public void d04_beanPXpCombined_beanConfigOverride() throws Exception {
+		AnnotationList al = dConfig.getAnnotationList();
+		JsonSerializer js = JsonSerializer.create().simple().applyAnnotations(al, vr).build();
+		JsonParser jp = JsonParser.create().applyAnnotations(al, vr).build();
+
+		String json = js.serialize(D2.create());
+		assertEquals("{b:2,d:4}", json);
+		D2 d = jp.parse(json, D2.class);
+		json = js.serialize(d);
+		assertEquals("{b:2,d:4}", json);
+	}
+
+	@Test
+	public void d05_beanPropertiesExcludePropertiesCombined_beanContextBuilderOverride() throws Exception {
+		Bean ba = BeanBuilder.create("D1").properties("b,c,d").excludeProperties("c").build();
+		JsonSerializer js = JsonSerializer.create().simple().annotations(ba).build();
+		JsonParser jp = JsonParser.create().annotations(ba).build();
+
+		String json = js.serialize(D1.create());
+		assertEquals("{b:2,d:4}", json);
+		D1 d = jp.parse(json, D1.class);
+		json = js.serialize(d);
+		assertEquals("{b:2,d:4}", json);
+	}
+
+	@Test
+	public void d06_beanPXpCombined_beanContextBuilderOverride() throws Exception {
+		Bean ba = BeanBuilder.create("D2").p("b,c,d").xp("c").build();
+		JsonSerializer js = JsonSerializer.create().simple().annotations(ba).build();
+		JsonParser jp = JsonParser.create().annotations(ba).build();
+
+		String json = js.serialize(D2.create());
+		assertEquals("{b:2,d:4}", json);
+		D2 d = jp.parse(json, D2.class);
+		json = js.serialize(d);
+		assertEquals("{b:2,d:4}", json);
+	}
+
+	//-----------------------------------------------------------------------------------------------------------------
+	// @BeanConfig(bpi/bpx) should override @Bean(bpi/bpx)
+	//-----------------------------------------------------------------------------------------------------------------
+
+	@Bean(properties="a,b,c")
+	static class E1a {
+		public int a, b, c, d;
+	}
+
+	@Bean(excludeProperties="b")
+	static class E1 extends E1a {
+
+		public static E1 create() {
+			E1 e = new E1();
+			e.a = 1;
+			e.b = 2;
+			e.c = 3;
+			e.d = 4;
+			return e;
+		}
+	}
+
+	@Bean(p="a,b,c")
+	static class E2a {
+		public int a, b, c, d;
+	}
+
+	@Bean(xp="b")
+	static class E2 extends E2a {
+
+		public static E2 create() {
+			E2 e = new E2();
+			e.a = 1;
+			e.b = 2;
+			e.c = 3;
+			e.d = 4;
+			return e;
+		}
+	}
+
+	@Bean(on="Dummy", p="b,c,d", xp="c")
+	@Bean(on="E1", properties="b,c,d", excludeProperties="c")
+	@Bean(on="E2", p="b,c,d", xp="c")
+	static class EConfig {}
+
+	private static ClassInfo eConfig = ClassInfo.of(EConfig.class);
+
+	@Test
+	public void e01_beanPropertiesExcludePropertiesCombined_multipleBeanAnnotations_noBeanConfig() throws Exception {
+		String json = SimpleJson.DEFAULT.toString(E1.create());
+		assertEquals("{a:1,c:3}", json);
+		E1 e = SimpleJson.DEFAULT.read(json, E1.class);
+		json = SimpleJson.DEFAULT.toString(e);
+		assertEquals("{a:1,c:3}", json);
+	}
+
+	@Test
+	public void e02_beanPXpCombined_multipleBeanAnnotations_noBeanConfig() throws Exception {
+		String json = SimpleJson.DEFAULT.toString(E2.create());
+		assertEquals("{a:1,c:3}", json);
+		E2 e = SimpleJson.DEFAULT.read(json, E2.class);
+		json = SimpleJson.DEFAULT.toString(e);
+		assertEquals("{a:1,c:3}", json);
+	}
+
+	@Test
+	public void e03_beanPropertiesExcludePropertiesCombined_multipleBeanAnnotations_beanConfigOverride() throws Exception {
+		AnnotationList al = eConfig.getAnnotationList();
+		JsonSerializer js = JsonSerializer.create().simple().applyAnnotations(al, vr).build();
+		JsonParser jp = JsonParser.create().applyAnnotations(al, vr).build();
+
+		String json = js.serialize(E1.create());
+		assertEquals("{b:2,d:4}", json);
+		E1 e = jp.parse(json, E1.class);
+		json = js.serialize(e);
+		assertEquals("{b:2,d:4}", json);
+	}
+
+	@Test
+	public void e04_beanPXpCombined_multipleBeanAnnotations_beanConfigOverride() throws Exception {
+		AnnotationList al = eConfig.getAnnotationList();
+		JsonSerializer js = JsonSerializer.create().simple().applyAnnotations(al, vr).build();
+		JsonParser jp = JsonParser.create().applyAnnotations(al, vr).build();
+
+		String json = js.serialize(E2.create());
+		assertEquals("{b:2,d:4}", json);
+		E2 e = jp.parse(json, E2.class);
+		json = js.serialize(e);
+		assertEquals("{b:2,d:4}", json);
+	}
+
+	@Test
+	public void e05_beanPropertiersExcludePropertiesCombined_multipleBeanAnnotations_beanContextBuilderOverride() throws Exception {
+		Bean ba = BeanBuilder.create("E1").properties("b,c,d").excludeProperties("c").build();
+		JsonSerializer js = JsonSerializer.create().simple().annotations(ba).build();
+		JsonParser jp = JsonParser.create().annotations(ba).build();
+
+		String json = js.serialize(E1.create());
+		assertEquals("{b:2,d:4}", json);
+		E1 e = jp.parse(json, E1.class);
+		json = js.serialize(e);
+		assertEquals("{b:2,d:4}", json);
+	}
+
+	@Test
+	public void e06_beanBpiBpxCombined_multipleBeanAnnotations_beanContextBuilderOverride() throws Exception {
+		Bean ba = BeanBuilder.create("E2").p("b,c,d").xp("c").build();
+		JsonSerializer js = JsonSerializer.create().simple().annotations(ba).build();
+		JsonParser jp = JsonParser.create().annotations(ba).build();
+
+		String json = js.serialize(E2.create());
+		assertEquals("{b:2,d:4}", json);
+		E2 e = jp.parse(json, E2.class);
+		json = js.serialize(e);
+		assertEquals("{b:2,d:4}", json);
+	}
 }
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtml_Test.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtml_Test.java
index 72bdddd..c0d9502 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtml_Test.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtml_Test.java
@@ -3430,7 +3430,7 @@ public class BasicHtml_Test {
 		public String[] b;
 	}
 
-	@Bean(dictionary={A.class},bpi="a,ia,aa,o")
+	@Bean(dictionary={A.class},p="a,ia,aa,o")
 	public static class BeanWithAbstractFields {
 		public A a;
 		public IA ia;
@@ -3446,7 +3446,7 @@ public class BasicHtml_Test {
 		}
 	}
 
-	@Bean(dictionary={A.class},bpi="a,ia1,ia2,aa1,aa2,o1,o2")
+	@Bean(dictionary={A.class},p="a,ia1,ia2,aa1,aa2,o1,o2")
 	public static class BeanWithAbstractArrayFields {
 		public A[] a;
 		public IA[] ia1, ia2;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlSchemaSerializerTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlSchemaSerializerTest.java
index 83e47e4..8c680ac 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlSchemaSerializerTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlSchemaSerializerTest.java
@@ -55,14 +55,14 @@ public class HtmlSchemaSerializerTest {
 	// Documentation examples
 	//====================================================================================================
 
-	@Bean(bpi="name,birthDate,addresses")
+	@Bean(properties="name,birthDate,addresses")
 	public static class Person {
 		public String name;
 		public Calendar birthDate;
 		public List<Address> addresses;
 	}
 
-	@Bean(bpi="street,city,state,zip,isCurrent")
+	@Bean(properties="street,city,state,zip,isCurrent")
 	public static class Address {
 		public String street, city;
 		public StateEnum state;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/Html_Test.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/Html_Test.java
index 0ef6c02..54aa2b0 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/Html_Test.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/Html_Test.java
@@ -411,7 +411,7 @@ public class Html_Test {
 	// @Bean(bpi) on collections of beans
 	//-----------------------------------------------------------------------------------------------------------------
 
-	@Bean(bpi="f3,f2,f1")
+	@Bean(p="f3,f2,f1")
 	public static class E {
 		public Integer f1, f2, f3;
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
index dba5b9a..281d0bf 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
@@ -175,7 +175,7 @@ public class BeanFilterTest {
 		public int getP2() { return 2; }
 	}
 
-	@Bean(bpx="foo")
+	@Bean(xp="foo")
 	public class E3 extends E2 {
 		public int f3 = 3;
 		public int getP3() { return 3; }
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
index d80b62c..9fd4071 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
@@ -46,7 +46,7 @@ public abstract class OneWayStringSwapTest<T> {
 		if (! isEquals(expected, s)) {
 			if (expected.isEmpty()) {
 				if (! label.startsWith("[]"))
-					System.err.println(label.substring(0, label.indexOf(']')+1) + " "+s);
+					System.err.println(label.substring(0, label.indexOf(']')+1) + " "+s);  // NOT DEBUG
 				Assert.fail();
 			} else {
 				fail("Test [{0} swap] failed.  Expected=[{1}], Actual=[{2}]", label, expected, s);
@@ -56,7 +56,7 @@ public abstract class OneWayStringSwapTest<T> {
 
 	private void fail(String msg, Object...args) {
 		String s = format(msg, args);
-		System.err.println(s);
+		System.err.println(s);  // NOT DEBUG
 		Assert.fail(s);
 	}
 }
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java
index 42f81d9..a0eb84c 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java
@@ -46,7 +46,7 @@ public abstract class RoundTripStringSwapTest<T> {
 		if (! isEquals(expected, s)) {
 			if (expected.isEmpty()) {
 				if (! label.startsWith("[]"))
-					System.err.println(label.substring(0, label.indexOf(']')+1) + " "+s);
+					System.err.println(label.substring(0, label.indexOf(']')+1) + " "+s);  // NOT DEBUG
 				Assert.fail();
 			} else {
 				fail("Test [{0} swap] failed.  Expected=[{1}], Actual=[{2}]", label, expected, s);
@@ -62,14 +62,14 @@ public abstract class RoundTripStringSwapTest<T> {
 		if (! isEquals(s, s2)) {
 			if (expected.isEmpty())
 				Assert.fail();
-			System.err.println("s=["+s+"], o=["+o+"], o.type=["+o.getClass().getName()+"], o2=["+o2+"], o2.type=["+o2.getClass().getName()+"]");
+			System.err.println("s=["+s+"], o=["+o+"], o.type=["+o.getClass().getName()+"], o2=["+o2+"], o2.type=["+o2.getClass().getName()+"]");  // NOT DEBUG
 			fail("Test [{0} unswap] failed.  Expected=[{1}], Actual=[{2}]", label, s, s2);
 		}
 	}
 
 	private void fail(String msg, Object...args) {
 		String s = format(msg, args);
-		System.err.println(s);
+		System.err.println(s);  // NOT DEBUG
 		Assert.fail(s);
 	}
 }
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
index 5095aa9..2c03211 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/utils/PojoRestTest.java
@@ -224,7 +224,7 @@ public class PojoRestTest {
 		}
 	}
 
-	@Bean(bpi="street,city,state,zip,isCurrent")
+	@Bean(p="street,city,state,zip,isCurrent")
 	public static class Address {
 		public String street;
 		public String city;
@@ -247,7 +247,7 @@ public class PojoRestTest {
 		}
 	}
 
-	@Bean(typeName="Person",bpi="name,age,addresses")
+	@Bean(typeName="Person",p="name,age,addresses")
 	public static class Person {
 		public String name;
 		public int age;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
index 094d9f9..9230bb9 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
@@ -1560,7 +1560,7 @@ public class BasicXmlTest {
 		public String[] b;
 	}
 
-	@Bean(dictionary={A.class},bpi="a,ia,aa,o")
+	@Bean(dictionary={A.class},p="a,ia,aa,o")
 	public static class BeanWithAbstractFields {
 		public A a;
 		public IA ia;
@@ -1576,7 +1576,7 @@ public class BasicXmlTest {
 		}
 	}
 
-	@Bean(dictionary={A.class},bpi="a,ia1,ia2,aa1,aa2,o1,o2")
+	@Bean(dictionary={A.class},p="a,ia1,ia2,aa1,aa2,o1,o2")
 	public static class BeanWithAbstractArrayFields {
 		public A[] a;
 		public IA[] ia1, ia2;
@@ -1612,7 +1612,7 @@ public class BasicXmlTest {
 		}
 	}
 
-	@Bean(dictionary={A.class},bpi="a,ia,aa,o")
+	@Bean(dictionary={A.class},p="a,ia,aa,o")
 	public static class BeanWithAbstractMapArrayFields {
 		public Map<String,A[]> a;
 		public Map<String,IA[]> ia;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonXmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonXmlTest.java
index 904cb1e..8d38cec 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonXmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/CommonXmlTest.java
@@ -46,7 +46,7 @@ public class CommonXmlTest {
 		XmlUtils.validateXml(t, s);
 	}
 
-	@Bean(bpi="url,id,name")
+	@Bean(p="url,id,name")
 	public static class A {
 		@Xml(format=XmlFormat.ATTR) public URL url;
 		@Xml(format=ATTR) public int id;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java
index b798106..737335b 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java
@@ -182,7 +182,7 @@ public class XmlCollapsedTest {
 		XmlUtils.validateXml(t, s);
 	}
 
-	@Bean(bpi="f1,f2,f3,f4")
+	@Bean(properties="f1,f2,f3,f4")
 	public static class D {
 
 		private List<String> f1 = new LinkedList<>(), f3 = new LinkedList<>();
@@ -238,7 +238,7 @@ public class XmlCollapsedTest {
 		XmlUtils.validateXml(t, s);
 	}
 
-	@Bean(bpi="f1,f2")
+	@Bean(properties="f1,f2")
 	public static class E {
 
 		private ArrayList<String> f1, f2;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java
index 8e6eea5..b5e7f6f 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/xml/XmlTest.java
@@ -160,7 +160,7 @@ public class XmlTest {
 	}
 
 	/** Class with explicitly specified properties */
-	@Bean(typeName="Person1", bpi="name,age")
+	@Bean(typeName="Person1", properties="name,age")
 	public static class Person1 {
 		public int age;
 		private String name;
@@ -437,7 +437,7 @@ public class XmlTest {
 		XmlUtils.validateXml(t, s);
 	}
 
-	@Bean(bpi="url,id,name")
+	@Bean(properties="url,id,name")
 	public static class N {
 		@Rdf(beanUri=true) @Xml(format=ELEMENT) public URL url;
 		public int id;
@@ -470,7 +470,7 @@ public class XmlTest {
 		XmlUtils.validateXml(t, s);
 	}
 
-	@Bean(bpi="url2,id2,name")
+	@Bean(properties="url2,id2,name")
 	public static class O {
 		@Beanp(name="url2") @Xml(format=ELEMENT) public URL url;
 		@Beanp(name="id2") public int id;
@@ -503,7 +503,7 @@ public class XmlTest {
 		XmlUtils.validateXml(t, s);
 	}
 
-	@Bean(bpi="url2,id2,name")
+	@Bean(properties="url2,id2,name")
 	public static class P {
 		@Beanp(name="url2") @Xml(format=ATTR) public URL url;
 		@Beanp(name="id2") @Xml(format=ATTR) public int id;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java
index 6878b6d..760fded 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/Column.java
@@ -26,7 +26,7 @@ import org.apache.juneau.xml.annotation.*;
  * </p>
  */
 @SuppressWarnings({"rawtypes"})
-@Bean(typeName="item", bpi="name,type,length")
+@Bean(typeName="item", p="name,type,length")
 public class Column {
 
 	private String name, type;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/DataSet.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
index 720290a..28b1693 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
@@ -76,7 +76,7 @@ import org.apache.juneau.xml.annotation.*;
  * </p>
  */
 @SuppressWarnings("unchecked")
-@Bean(typeName="dataset", bpi="metadata,data")
+@Bean(typeName="dataset", properties="metadata,data")
 public class DataSet {
 
 	private Column[] metaData;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java
index 10afa40..1fbf719 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/JsonSchema.java
@@ -33,7 +33,7 @@ import org.apache.juneau.transform.*;
  * </ul>
  */
 @Bean(typeName="schema",
-	bpi="id,$schema,$ref, title,description,type,definitions,properties,"
+	properties="id,$schema,$ref, title,description,type,definitions,properties,"
 		+ "patternProperties,dependencies,items,multipleOf,maximum,exclusiveMaximum,"
 		+ "minimum,exclusiveMinimum,maxLength,minLength,pattern,additionalItems,"
 		+ "maxItems,minItems,uniqueItems,maxProperties,minProperties,required,"
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java
index befaad3..5e0247c 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Contact.java
@@ -51,7 +51,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="name,url,email,*")
+@Bean(properties="name,url,email,*")
 public class Contact extends SwaggerElement {
 
 	private String name;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
index 25b4fdc..2eb7757 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ExternalDocumentation.java
@@ -50,7 +50,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="description,url,*")
+@Bean(properties="description,url,*")
 public class ExternalDocumentation extends SwaggerElement {
 
 	private String description;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
index 4f1edbe..e9af078 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/HeaderInfo.java
@@ -50,7 +50,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="description,type,format,items,collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,$ref,x-example,*")
+@Bean(properties="description,type,format,items,collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,$ref,x-example,*")
 @SuppressWarnings({"unchecked"})
 public class HeaderInfo extends SwaggerElement {
 
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java
index 918dd2e..76ba8c9 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Info.java
@@ -70,7 +70,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="title,description,version,contact,license,termsOfService,*")
+@Bean(properties="title,description,version,contact,license,termsOfService,*")
 public class Info extends SwaggerElement {
 
 	private String
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
index 94b5b76..798fa49 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Items.java
@@ -54,7 +54,7 @@ import org.apache.juneau.json.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="type,format,items,collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,$ref,*")
+@Bean(properties="type,format,items,collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,$ref,*")
 public class Items extends SwaggerElement {
 
 	private static final String[] VALID_TYPES = {"string", "number", "integer", "boolean", "array"};
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java
index e8e9f13..8b8d886 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/License.java
@@ -50,7 +50,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="name,url,*")
+@Bean(properties="name,url,*")
 public class License extends SwaggerElement {
 
 	private String name;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
index 9bdae5f..2c978d9 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
@@ -128,7 +128,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="operationId,summary,description,tags,externalDocs,consumes,produces,parameters,responses,schemes,deprecated,security,*")
+@Bean(properties="operationId,summary,description,tags,externalDocs,consumes,produces,parameters,responses,schemes,deprecated,security,*")
 public class Operation extends SwaggerElement {
 
 	private String
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
index e38922b..b67fcbe 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ParameterInfo.java
@@ -91,7 +91,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="in,name,type,description,required,schema,format,allowEmptyValue,items,collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,x-example,x-examples,*")
+@Bean(properties="in,name,type,description,required,schema,format,allowEmptyValue,items,collectionFormat,default,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,enum,multipleOf,x-example,x-examples,*")
 public class ParameterInfo extends SwaggerElement {
 
 	private static final String[] VALID_IN = {"query", "header", "path", "formData", "body"};
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
index a98cae0..7ed5e98 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/ResponseInfo.java
@@ -61,7 +61,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="description,schema,headers,x-example,examples,*")
+@Bean(properties="description,schema,headers,x-example,examples,*")
 public class ResponseInfo extends SwaggerElement {
 
 	private String description;
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java
index 1fd694d..8295643 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SchemaInfo.java
@@ -59,7 +59,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="format,title,description,default,multipleOf,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,maxProperties,minProperties,required,enum,type,items,allOf,properties,additionalProperties,discriminator,readOnly,xml,externalDocs,example,$ref,*")
+@Bean(properties="format,title,description,default,multipleOf,maximum,exclusiveMaximum,minimum,exclusiveMinimum,maxLength,minLength,pattern,maxItems,minItems,uniqueItems,maxProperties,minProperties,required,enum,type,items,allOf,properties,additionalProperties,discriminator,readOnly,xml,externalDocs,example,$ref,*")
 public class SchemaInfo extends SwaggerElement {
 
 	private String
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
index 354460f..9d700d7 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/SecurityScheme.java
@@ -61,7 +61,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="type,description,name,in,flow,authorizationUrl,tokenUrl,scopes,*")
+@Bean(properties="type,description,name,in,flow,authorizationUrl,tokenUrl,scopes,*")
 public class SecurityScheme extends SwaggerElement {
 
 	private static final String[] VALID_TYPES = {"basic", "apiKey", "oauth2"};
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
index 6630d07..4bc9aa7 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Swagger.java
@@ -33,7 +33,7 @@ import org.apache.juneau.utils.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="swagger,info,tags,externalDocs,basePath,schemes,consumes,produces,paths,definitions,parameters,responses,securityDefinitions,security,*")
+@Bean(properties="swagger,info,tags,externalDocs,basePath,schemes,consumes,produces,paths,definitions,parameters,responses,securityDefinitions,security,*")
 public class Swagger extends SwaggerElement {
 
 	/** Represents a null swagger */
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java
index 78fdd47..84dfde5 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Tag.java
@@ -52,7 +52,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="name,description,externalDocs,*")
+@Bean(properties="name,description,externalDocs,*")
 public class Tag extends SwaggerElement {
 
 	private String
diff --git a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java
index edaa565..1ad1505 100644
--- a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java
+++ b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Xml.java
@@ -53,7 +53,7 @@ import org.apache.juneau.internal.*;
  * 	<li class='link'>{@doc DtoSwagger}
  * </ul>
  */
-@Bean(bpi="name,namespace,prefix,attribute,wrapped,*")
+@Bean(properties="name,namespace,prefix,attribute,wrapped,*")
 public class Xml extends SwaggerElement {
 
 	private String
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
index f038c44..1ea49ff 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParserBuilder.java
@@ -943,74 +943,74 @@ public class RdfParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public RdfParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public RdfParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public RdfParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public RdfParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public RdfParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public RdfParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public RdfParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public RdfParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public RdfParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public RdfParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public RdfParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public RdfParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
index d0aeb57..e7aeb0e 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializerBuilder.java
@@ -1103,74 +1103,74 @@ public class RdfSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public RdfSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public RdfSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public RdfSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public RdfSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public RdfSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public RdfSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public RdfSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public RdfSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public RdfSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public RdfSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public RdfSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RdfSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public RdfSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index adfd081..6ef3a5e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -2088,7 +2088,7 @@ public class BeanContext extends Context implements MetaProvider {
 	// This map ensures that if the BeanContext properties in the Context are the same,
 	// then we reuse the same Class->ClassMeta cache map.
 	// This significantly reduces the number of times we need to construct ClassMeta objects which can be expensive.
-	private static final ConcurrentHashMap<Integer,Map<Class,ClassMeta>> cmCacheCache
+	private static final ConcurrentHashMap<PropertyStore,Map<Class,ClassMeta>> cmCacheCache
 		= new ConcurrentHashMap<>();
 
 	/** Default config.  All default settings. */
@@ -2128,7 +2128,6 @@ public class BeanContext extends Context implements MetaProvider {
 	private final BeanRegistry beanRegistry;
 	private final PropertyNamer propertyNamer;
 	private final String typePropertyName;
-	private final int beanHashCode;
 	private final ReflectionMap<Annotation> annotations;
 
 	final Map<Class,ClassMeta> cmCache;
@@ -2152,6 +2151,7 @@ public class BeanContext extends Context implements MetaProvider {
 		if (ps == null)
 			ps = PropertyStore.DEFAULT;
 
+		ps = ps.subset(new String[]{"Context","BeanContext"});
 
 		ReflectionMap.Builder<Annotation> rmb = ReflectionMap.create(Annotation.class);
 		for (Annotation a : ps.getListProperty(BEAN_annotations, Annotation.class)) {
@@ -2180,8 +2180,6 @@ public class BeanContext extends Context implements MetaProvider {
 		}
 		this.annotations = rmb.build();
 
-		beanHashCode = ps.hashCode("BeanContext");
-
 		beansRequireDefaultConstructor = getBooleanProperty(BEAN_beansRequireDefaultConstructor, false);
 		beansRequireSerializable = getBooleanProperty(BEAN_beansRequireSerializable, false);
 		beansRequireSettersForGetters = getBooleanProperty(BEAN_beansRequireSettersForGetters, false);
@@ -2236,13 +2234,13 @@ public class BeanContext extends Context implements MetaProvider {
 		}
 		swaps = lpf.toArray(new PojoSwap[lpf.size()]);
 
-		if (! cmCacheCache.containsKey(beanHashCode)) {
+		if (! cmCacheCache.containsKey(ps)) {
 			ConcurrentHashMap<Class,ClassMeta> cm = new ConcurrentHashMap<>();
 			cm.putIfAbsent(String.class, new ClassMeta(String.class, this, findPojoSwaps(String.class), findChildPojoSwaps(String.class)));
 			cm.putIfAbsent(Object.class, new ClassMeta(Object.class, this, findPojoSwaps(Object.class), findChildPojoSwaps(Object.class)));
-			cmCacheCache.putIfAbsent(beanHashCode, cm);
+			cmCacheCache.putIfAbsent(ps, cm);
 		}
-		cmCache = cmCacheCache.get(beanHashCode);
+		cmCache = cmCacheCache.get(ps);
 		cmString = cmCache.get(String.class);
 		cmObject = cmCache.get(Object.class);
 		cmClass = cmCache.get(Class.class);
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 3b45288..0ef366a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -110,7 +110,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * The following example shows the equivalent methods for applying the {@link Bean @Bean} annotation:
 	 * <p class='bcode w800'>
 	 * 	<jc>// Class with explicit annotation.</jc>
-	 * 	<ja>@Bean</ja>(bpi=<js>"street,city,state"</js>)
+	 * 	<ja>@Bean</ja>(properties=<js>"street,city,state"</js>)
 	 * 	<jk>public class</jk> A {...}
 	 *
 	 * 	<jc>// Class with annotation applied via @BeanConfig</jc>
@@ -120,7 +120,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<ja>@RestMethod</ja>(...)
 	 * 	<ja>@BeanConfig</ja>(
 	 * 		annotations={
-	 * 			<ja>@Bean</ja>(on=<js>"B"</js>, bpi=<js>"street,city,state"</js>)
+	 * 			<ja>@Bean</ja>(on=<js>"B"</js>, properties=<js>"street,city,state"</js>)
 	 * 		}
 	 * 	)
 	 * 	<jk>public void</jk> doFoo() {...}
@@ -132,7 +132,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * directly into builder classes like so:
 	 * <p class='bcode w800'>
 	 * 	<jc>// Create a concrete @Bean annotation.</jc>
-	 * 	BeanAnnotation a = <jk>new</jk> BeanAnnotation(<js>"B"</js>).bpi(<js>"street,city,state"</js>);
+	 * 	BeanAnnotation a = <jk>new</jk> BeanAnnotation(<js>"B"</js>).properties(<js>"street,city,state"</js>);
 	 *
 	 * 	<jc>// Apply it to a serializer.</jc>
 	 * 	WriterSerializer ws = JsonSerializer.<jsm>create</jsm>().annotations(a).build();
@@ -142,7 +142,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * </p>
 	 *
 	 * <p>
-	 * The following is the list of annotations builders provided that can be constructed 
+	 * The following is the list of annotations builders provided that can be constructed
 	 * and passed into the builder class:
 	 * <ul class='javatree'>
 	 * 	<li class='ja'>{@link org.apache.juneau.annotation.BeanBuilder}
@@ -809,7 +809,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * Specifies the set and order of names of properties associated with the bean class.
 	 *
 	 * <p>
-	 * For example, <c>bpi(MyBean.<jk>class</jk>, <js>"foo,bar"</js>)</c> means only serialize the <c>foo</c> and
+	 * For example, <c>beanProperties(MyBean.<jk>class</jk>, <js>"foo,bar"</js>)</c> means only serialize the <c>foo</c> and
 	 * <c>bar</c> properties on the specified bean.  Likewise, parsing will ignore any bean properties not specified
 	 * and either throw an exception or silently ignore them depending on whether {@link #ignoreUnknownBeanProperties()}
 	 * has been called.
@@ -836,7 +836,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer that includes only the 'foo' and 'bar' properties on the MyBean class.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpi(MyBean.<jk>class</jk>, <js>"foo,bar"</js>)
+	 * 		.beanProperties(MyBean.<jk>class</jk>, <js>"foo,bar"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Produces:  {"foo":"foo","bar":"bar"}</jc>
@@ -846,12 +846,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).bpi(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).properties(properties));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link Bean#bpi()} - On an annotation on the bean class itself.
-	 * 	<li class='jm'>{@link BeanConfig#bpi()} - On a bean config annotation (see {@link #annotations(Annotation...)}).
+	 * 	<li class='jm'>{@link Bean#properties()}/{@link Bean#p()} - On an annotation on the bean class itself.
 	 * </ul>
 	 *
 	 * @param beanClass The bean class.
@@ -859,8 +858,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpi(Class<?> beanClass, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).bpi(properties).build());
+	public BeanContextBuilder beanProperties(Class<?> beanClass, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).p(properties).build());
 	}
 
 	/**
@@ -870,7 +869,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * Specifies the set and order of names of properties associated with bean classes.
 	 *
 	 * <p>
-	 * For example, <c>bpi(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"foo,bar"</js>))</c> means only serialize the <c>foo</c> and
+	 * For example, <c>beanProperties(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"foo,bar"</js>))</c> means only serialize the <c>foo</c> and
 	 * <c>bar</c> properties on the specified bean.  Likewise, parsing will ignore any bean properties not specified
 	 * and either throw an exception or silently ignore them depending on whether {@link #ignoreUnknownBeanProperties()}
 	 * has been called.
@@ -897,7 +896,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer that includes only the 'foo' and 'bar' properties on the MyBean class.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpi(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"foo,bar"</js>))
+	 * 		.beanProperties(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"foo,bar"</js>))
 	 * 		.build();
 	 *
 	 * 	<jc>// Produces:  {"foo":"foo","bar":"bar"}</jc>
@@ -907,12 +906,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code for each entry:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).bpi(value.toString()));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).properties(value.toString()));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link Bean#bpi()} - On an annotation on the bean class itself.
-	 * 	<li class='jm'>{@link BeanConfig#bpi()} - On a bean config annotation (see {@link #annotations(Annotation...)}).
+	 * 	<li class='jm'>{@link Bean#properties()} / {@link Bean#p()}- On an annotation on the bean class itself.
 	 * </ul>
 	 *
 	 * @param values
@@ -922,9 +920,9 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpi(Map<String,Object> values) {
+	public BeanContextBuilder beanProperties(Map<String,Object> values) {
 		for (Map.Entry<String,Object> e : values.entrySet())
-			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpi(stringify(e.getValue())).build());
+			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).p(stringify(e.getValue())).build());
 		return this;
 	}
 
@@ -935,7 +933,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * Specifies the set and order of names of properties associated with the bean class.
 	 *
 	 * <p>
-	 * For example, <c>bpi(<js>"MyBean"</js>, <js>"foo,bar"</js>)</c> means only serialize the <c>foo</c> and
+	 * For example, <c>beanProperties(<js>"MyBean"</js>, <js>"foo,bar"</js>)</c> means only serialize the <c>foo</c> and
 	 * <c>bar</c> properties on the specified bean.  Likewise, parsing will ignore any bean properties not specified
 	 * and either throw an exception or silently ignore them depending on whether {@link #ignoreUnknownBeanProperties()}
 	 * has been called.
@@ -962,7 +960,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer that includes only the 'foo' and 'bar' properties on the MyBean class.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpi(<js>"MyBean"</js>, <js>"foo,bar"</js>)
+	 * 		.beanProperties(<js>"MyBean"</js>, <js>"foo,bar"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Produces:  {"foo":"foo","bar":"bar"}</jc>
@@ -972,12 +970,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).bpi(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).properties(properties));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link Bean#bpi()} - On an annotation on the bean class itself.
-	 * 	<li class='jm'>{@link BeanConfig#bpi()} - On a bean config annotation (see {@link #annotations(Annotation...)}).
+	 * 	<li class='jm'>{@link Bean#properties()} / {@link Bean#p()} - On an annotation on the bean class itself.
 	 * </ul>
 	 *
 	 * @param beanClassName
@@ -987,8 +984,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpi(String beanClassName, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).bpi(properties).build());
+	public BeanContextBuilder beanProperties(String beanClassName, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).p(properties).build());
 	}
 
 	/**
@@ -998,7 +995,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * Specifies to exclude the specified list of properties for the specified bean class.
 	 *
 	 * <p>
-	 * Same as {@link #bpi(Class, String)} except you specify a list of bean property names that you want to exclude from
+	 * Same as {@link #beanProperties(Class, String)} except you specify a list of bean property names that you want to exclude from
 	 * serialization.
 	 *
 	 * <p>
@@ -1017,7 +1014,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer that excludes the "bar" and "baz" properties on the MyBean class.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpx(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesExcludes(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Produces:  {"foo":"foo"}</jc>
@@ -1027,12 +1024,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).bpx(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).excludeProperties(properties));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpx()}
-	 * 	<li class='jm'>{@link Bean#bpx()}
+	 * 	<li class='jm'>{@link Bean#excludeProperties()} / {@link Bean#xp()}
 	 * </ul>
 	 *
 	 * @param beanClass The bean class.
@@ -1040,8 +1036,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpx(Class<?> beanClass, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).bpx(properties).build());
+	public BeanContextBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).xp(properties).build());
 	}
 
 	/**
@@ -1051,7 +1047,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * Specifies to exclude the specified list of properties for the specified bean classes.
 	 *
 	 * <p>
-	 * Same as {@link #bpi(Map)} except you specify a list of bean property names that you want to exclude from
+	 * Same as {@link #beanProperties(Map)} except you specify a list of bean property names that you want to exclude from
 	 * serialization.
 	 *
 	 * <p>
@@ -1070,7 +1066,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer that excludes the "bar" and "baz" properties on the MyBean class.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpx(AMap.of(<js>"MyBean"</js>, <js>"bar,baz"</js>))
+	 * 		.beanPropertiesExcludes(AMap.of(<js>"MyBean"</js>, <js>"bar,baz"</js>))
 	 * 		.build();
 	 *
 	 * 	<jc>// Produces:  {"foo":"foo"}</jc>
@@ -1080,12 +1076,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code for each entry:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).bpx(value.toString()));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).excludeProperties(value.toString()));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpx()}
-	 * 	<li class='jm'>{@link Bean#bpx()}
+	 * 	<li class='jm'>{@link Bean#excludeProperties()} / {@link Bean#xp()}
 	 * </ul>
 	 *
 	 * @param values
@@ -1095,9 +1090,9 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpx(Map<String,Object> values) {
+	public BeanContextBuilder beanPropertiesExcludes(Map<String,Object> values) {
 		for (Map.Entry<String,Object> e : values.entrySet())
-			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpx(stringify(e.getValue())).build());
+			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).xp(stringify(e.getValue())).build());
 		return this;
 	}
 
@@ -1108,7 +1103,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * Specifies to exclude the specified list of properties for the specified bean class.
 	 *
 	 * <p>
-	 * Same as {@link #bpx(String, String)} except you specify a list of bean property names that you want to exclude from
+	 * Same as {@link #beanPropertiesExcludes(String, String)} except you specify a list of bean property names that you want to exclude from
 	 * serialization.
 	 *
 	 * <p>
@@ -1127,7 +1122,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer that excludes the "bar" and "baz" properties on the MyBean class.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpx(<js>"MyBean"</js>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesExcludes(<js>"MyBean"</js>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Produces:  {"foo":"foo"}</jc>
@@ -1137,9 +1132,13 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).bpx(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).excludeProperties(properties));
 	 * </p>
 	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jm'>{@link Bean#excludeProperties()} / {@link Bean#xp()}
+	 * </ul>
+	 *
 	 * @param beanClassName
 	 * 	The bean class name.
 	 * 	<br>Can be a simple name, fully-qualified name, or <js>"*"</js> for all bean classes.
@@ -1147,8 +1146,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpx(String beanClassName, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).bpx(properties).build());
+	public BeanContextBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).xp(properties).build());
 	}
 
 	/**
@@ -1157,7 +1156,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * Specifies one or more properties on a bean that are read-only despite having valid getters.
 	 * Serializers will serialize such properties as usual, but parsers will silently ignore them.
-	 * Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
+	 * Note that this is different from the <l>beanProperties</l>/<l>beanPropertiesExcludes</l> settings which include or exclude properties
 	 * for both serializers and parsers.
 	 *
 	 * <h5 class='section'>Example:</h5>
@@ -1170,7 +1169,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer with read-only property settings.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpro(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesReadOnly(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// All 3 properties will be serialized.</jc>
@@ -1179,7 +1178,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a parser with read-only property settings.</jc>
 	 * 	ReaderParser p = JsonParser
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpro(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesReadOnly(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
 	 * 		.ignoreUnknownBeanProperties()
 	 * 		.build();
 	 *
@@ -1190,12 +1189,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).bpro(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName()).readOnlyProperties(properties));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpro()}
-	 * 	<li class='jm'>{@link Bean#bpro()}
+	 * 	<li class='jm'>{@link Bean#readOnlyProperties()} / {@link Bean#ro()}
 	 * </ul>
 	 *
 	 * @param beanClass The bean class.
@@ -1203,8 +1201,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpro(Class<?> beanClass, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).bpro(properties).build());
+	public BeanContextBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).ro(properties).build());
 	}
 
 	/**
@@ -1213,7 +1211,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * Specifies one or more properties on beans that are read-only despite having valid getters.
 	 * Serializers will serialize such properties as usual, but parsers will silently ignore them.
-	 * Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
+	 * Note that this is different from the <l>beanProperties</l>/<l>beanPropertyExcludes</l> settings which include or exclude properties
 	 * for both serializers and parsers.
 	 *
 	 * <h5 class='section'>Example:</h5>
@@ -1226,7 +1224,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer with read-only property settings.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpro(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
+	 * 		.beanPropertiesReadOnly(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
 	 * 		.build();
 	 *
 	 * 	<jc>// All 3 properties will be serialized.</jc>
@@ -1235,7 +1233,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a parser with read-only property settings.</jc>
 	 * 	ReaderParser p = JsonParser
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpro(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
+	 * 		.beanPropertiesReadOnly(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
 	 * 		.ignoreUnknownBeanProperties()
 	 * 		.build();
 	 *
@@ -1246,12 +1244,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code for each entry:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).bpro(value.toString()));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).readOnlyProperties(value.toString()));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpro()}
-	 * 	<li class='jm'>{@link Bean#bpro()}
+	 * 	<li class='jm'>{@link Bean#readOnlyProperties()} / {@link Bean#ro()}
 	 * </ul>
 	 *
 	 * @param values
@@ -1261,9 +1258,9 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpro(Map<String,Object> values) {
+	public BeanContextBuilder beanPropertiesReadOnly(Map<String,Object> values) {
 		for (Map.Entry<String,Object> e : values.entrySet())
-			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpro(stringify(e.getValue())).build());
+			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).ro(stringify(e.getValue())).build());
 		return this;
 	}
 
@@ -1273,7 +1270,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * Specifies one or more properties on a bean that are read-only despite having valid getters.
 	 * Serializers will serialize such properties as usual, but parsers will silently ignore them.
-	 * Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
+	 * Note that this is different from the <l>beanProperties</l>/<l>beanPropertyExcludes</l> settings which include or exclude properties
 	 * for both serializers and parsers.
 	 *
 	 * <h5 class='section'>Example:</h5>
@@ -1286,7 +1283,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer with read-only property settings.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpro(<js>"MyBean"</js>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesReadOnly(<js>"MyBean"</js>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// All 3 properties will be serialized.</jc>
@@ -1295,7 +1292,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a parser with read-only property settings.</jc>
 	 * 	ReaderParser p = JsonParser
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpro(<js>"MyBean"</js>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesReadOnly(<js>"MyBean"</js>, <js>"bar,baz"</js>)
 	 * 		.ignoreUnknownBeanProperties()
 	 * 		.build();
 	 *
@@ -1306,12 +1303,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName).bpro(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName).readOnlyProperties(properties));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpro()}
-	 * 	<li class='jm'>{@link Bean#bpro()}
+	 * 	<li class='jm'>{@link Bean#readOnlyProperties()} / {@link Bean#ro()}
 	 * </ul>
 	 *
 	 * @param beanClassName
@@ -1321,8 +1317,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpro(String beanClassName, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).bpro(properties).build());
+	public BeanContextBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).ro(properties).build());
 	}
 
 	/**
@@ -1331,7 +1327,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * Specifies one or more properties on a bean that are write-only despite having valid setters.
 	 * Parsers will parse such properties as usual, but serializers will silently ignore them.
-	 * Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
+	 * Note that this is different from the <l>beanProperties</l>/<l>beanPropertiesExcludes</l> settings which include or exclude properties
 	 * for both serializers and parsers.
 	 *
 	 * <h5 class='section'>Example:</h5>
@@ -1344,7 +1340,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer with write-only property settings.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpwo(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesWriteOnly(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Only foo will be serialized.</jc>
@@ -1353,7 +1349,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a parser with write-only property settings.</jc>
 	 * 	ReaderParser p = JsonParser
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpwo(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesWriteOnly(MyBean.<jk>class</jk>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Parser parses all 3 properties.</jc>
@@ -1363,12 +1359,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName).bpwo(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClass.getName).writeOnlyProperties(properties));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpwo()}
-	 * 	<li class='jm'>{@link Bean#bpwo()}
+	 * 	<li class='jm'>{@link Bean#writeOnlyProperties()} / {@link Bean#wo()}
 	 * </ul>
 	 *
 	 * @param beanClass The bean class.
@@ -1376,8 +1371,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpwo(Class<?> beanClass, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).bpwo(properties).build());
+	public BeanContextBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClass).wo(properties).build());
 	}
 
 	/**
@@ -1386,7 +1381,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * Specifies one or more properties on a bean that are write-only despite having valid setters.
 	 * Parsers will parse such properties as usual, but serializers will silently ignore them.
-	 * Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
+	 * Note that this is different from the <l>beanProperties</l>/<l>beanPropertiesExcludes</l> settings which include or exclude properties
 	 * for both serializers and parsers.
 	 *
 	 * <h5 class='section'>Example:</h5>
@@ -1399,7 +1394,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer with write-only property settings.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpwo(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
+	 * 		.beanPropertiesWriteOnly(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
 	 * 		.build();
 	 *
 	 * 	<jc>// Only foo will be serialized.</jc>
@@ -1408,7 +1403,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a parser with write-only property settings.</jc>
 	 * 	ReaderParser p = JsonParser
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpwo(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
+	 * 		.beanPropertiesWriteOnly(AMap.<jsm>of</jsm>(<js>"MyBean"</js>, <js>"bar,baz"</js>))
 	 * 		.build();
 	 *
 	 * 	<jc>// Parser parses all 3 properties.</jc>
@@ -1418,12 +1413,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code for each entry:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).bpwo(value.toString()));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(key).writeOnlyProperties(value.toString()));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpwo()}
-	 * 	<li class='jm'>{@link Bean#bpwo()}
+	 * 	<li class='jm'>{@link Bean#writeOnlyProperties()} / {@link Bean#wo()}
 	 * </ul>
 	 *
 	 * @param values
@@ -1433,9 +1427,9 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpwo(Map<String,Object> values) {
+	public BeanContextBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
 		for (Map.Entry<String,Object> e : values.entrySet())
-			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpwo(stringify(e.getValue())).build());
+			prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).wo(stringify(e.getValue())).build());
 		return this;
 	}
 
@@ -1445,7 +1439,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * Specifies one or more properties on a bean that are write-only despite having valid setters.
 	 * Parsers will parse such properties as usual, but serializers will silently ignore them.
-	 * Note that this is different from the <l>bpi</l>/<l>bpx</l> settings which include or exclude properties
+	 * Note that this is different from the <l>beanProperties</l>/<l>beanPropertiesExcludes</l> settings which include or exclude properties
 	 * for both serializers and parsers.
 	 *
 	 * <h5 class='section'>Example:</h5>
@@ -1458,7 +1452,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a serializer with write-only property settings.</jc>
 	 * 	WriterSerializer s = JsonSerializer
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpwo(<js>"MyBean"</js>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesWriteOnly(<js>"MyBean"</js>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Only foo will be serialized.</jc>
@@ -1467,7 +1461,7 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * 	<jc>// Create a parser with write-only property settings.</jc>
 	 * 	ReaderParser p = JsonParser
 	 * 		.<jsm>create</jsm>()
-	 * 		.bpwo(<js>"MyBean"</js>, <js>"bar,baz"</js>)
+	 * 		.beanPropertiesWriteOnly(<js>"MyBean"</js>, <js>"bar,baz"</js>)
 	 * 		.build();
 	 *
 	 * 	<jc>// Parser parses all 3 properties.</jc>
@@ -1477,12 +1471,11 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * <p>
 	 * This method is functionally equivalent to the following code:
 	 * <p class='bcode w800'>
-	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).bpwo(properties));
+	 * 	builder.annotations(<jk>new</jk> BeanAnnotation(beanClassName).writeOnlyProperties(properties));
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanConfig#bpwo()}
-	 * 	<li class='jm'>{@link Bean#bpwo()}
+	 * 	<li class='jm'>{@link Bean#writeOnlyProperties()} / {@link Bean#wo()}
 	 * </ul>
 	 *
 	 * @param beanClassName
@@ -1492,8 +1485,8 @@ public class BeanContextBuilder extends ContextBuilder {
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public BeanContextBuilder bpwo(String beanClassName, String properties) {
-		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).bpwo(properties).build());
+	public BeanContextBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		return prependTo(BEAN_annotations, BeanBuilder.create(beanClassName).wo(properties).build());
 	}
 
 	/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java
index a93a50f..ca9ad13 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java
@@ -36,7 +36,7 @@ import org.apache.juneau.transform.*;
 public final class BeanFilter {
 
 	private final Class<?> beanClass;
-	private final Set<String> bpi, bpx, bpro, bpwo;
+	private final Set<String> properties, excludeProperties, readOnlyProperties, writeOnlyProperties;
 	private final PropertyNamer propertyNamer;
 	private final Class<?> implClass, interfaceClass, stopClass;
 	private final boolean sortProperties, fluentSetters;
@@ -51,10 +51,10 @@ public final class BeanFilter {
 	BeanFilter(BeanFilterBuilder builder) {
 		this.beanClass = builder.beanClass;
 		this.typeName = builder.typeName;
-		this.bpi = new LinkedHashSet<>(builder.bpi);
-		this.bpx = new LinkedHashSet<>(builder.bpx);
-		this.bpro = new LinkedHashSet<>(builder.bpro);
-		this.bpwo = new LinkedHashSet<>(builder.bpwo);
+		this.properties = new LinkedHashSet<>(builder.properties);
+		this.excludeProperties = new LinkedHashSet<>(builder.excludeProperties);
+		this.readOnlyProperties = new LinkedHashSet<>(builder.readOnlyProperties);
+		this.writeOnlyProperties = new LinkedHashSet<>(builder.writeOnlyProperties);
 		this.example = builder.example;
 		this.implClass = builder.implClass;
 		this.interfaceClass = builder.interfaceClass;
@@ -117,8 +117,8 @@ public final class BeanFilter {
 	 * 	The names of the properties associated with a bean class, or and empty set if all bean properties should
 	 * 	be used.
 	 */
-	public Set<String> getBpi() {
-		return bpi;
+	public Set<String> getProperties() {
+		return properties;
 	}
 
 	/**
@@ -126,8 +126,8 @@ public final class BeanFilter {
 	 *
 	 * @return The names of the properties to ignore on a bean, or an empty set to not ignore any properties.
 	 */
-	public Set<String> getBpx() {
-		return bpx;
+	public Set<String> getExcludeProperties() {
+		return excludeProperties;
 	}
 
 	/**
@@ -135,8 +135,8 @@ public final class BeanFilter {
 	 *
 	 * @return The names of the read-only properties on a bean, or an empty set to not have any read-only properties.
 	 */
-	public Set<String> getBpro() {
-		return bpro;
+	public Set<String> getReadOnlyProperties() {
+		return readOnlyProperties;
 	}
 
 	/**
@@ -144,15 +144,15 @@ public final class BeanFilter {
 	 *
 	 * @return The names of the write-only properties on a bean, or an empty set to not have any write-only properties.
 	 */
-	public Set<String> getBpwo() {
-		return bpwo;
+	public Set<String> getWriteOnlyProperties() {
+		return writeOnlyProperties;
 	}
 
 	/**
 	 * Returns <jk>true</jk> if the properties defined on this bean class should be ordered alphabetically.
 	 *
 	 * <p>
-	 * This method is only used when the {@link #getBpi()} method returns <jk>null</jk>.
+	 * This method is only used when the {@link #getProperties()} method returns <jk>null</jk>.
 	 * Otherwise, the ordering of the properties in the returned value is used.
 	 *
 	 * @return <jk>true</jk> if bean properties should be sorted.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java
index 45141f6..6952ff5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilterBuilder.java
@@ -32,10 +32,10 @@ public class BeanFilterBuilder {
 	Class<?> beanClass;
 	String typeName, example;
 	ASet<String>
-		bpi = ASet.of(),
-		bpx = ASet.of(),
-		bpro = ASet.of(),
-		bpwo = ASet.of();
+		properties = ASet.of(),
+		excludeProperties = ASet.of(),
+		readOnlyProperties = ASet.of(),
+		writeOnlyProperties = ASet.of();
 	Class<?> implClass, interfaceClass, stopClass;
 	boolean sortProperties, fluentSetters;
 	Object propertyNamer;
@@ -61,8 +61,8 @@ public class BeanFilterBuilder {
 
 		for (Bean b : annotations) {
 
-			if (! b.bpi().isEmpty())
-				bpi(split(b.bpi()));
+			if (! (b.properties().isEmpty() && b.p().isEmpty()))
+				properties(b.properties(), b.p());
 
 			if (! b.typeName().isEmpty())
 				typeName(b.typeName());
@@ -73,14 +73,14 @@ public class BeanFilterBuilder {
 			if (b.fluentSetters())
 				fluentSetters(true);
 
-			if (! b.bpx().isEmpty())
-				bpx(split(b.bpx()));
+			if (! (b.excludeProperties().isEmpty() && b.xp().isEmpty()))
+				excludeProperties(b.excludeProperties(), b.xp());
 
-			if (! b.bpro().isEmpty())
-				bpro(split(b.bpro()));
+			if (! (b.readOnlyProperties().isEmpty() && b.ro().isEmpty()))
+				readOnlyProperties(b.readOnlyProperties(), b.ro());
 
-			if (! b.bpwo().isEmpty())
-				bpwo(split(b.bpwo()));
+			if (! (b.writeOnlyProperties().isEmpty() && b.wo().isEmpty()))
+				writeOnlyProperties(b.writeOnlyProperties(), b.wo());
 
 			if (b.propertyNamer() != BasicPropertyNamer.class)
 				propertyNamer(b.propertyNamer());
@@ -452,10 +452,10 @@ public class BeanFilterBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='ja'>{@link Bean#bpi()}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(Map)}
+	 * 	<li class='ja'>{@link Bean#properties()}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanProperties(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanProperties(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanProperties(Map)}
 	 * </ul>
 	 *
 	 * @param value
@@ -463,10 +463,11 @@ public class BeanFilterBuilder {
 	 * 	<br>Values can contain comma-delimited list of property names.
 	 * @return This object (for method chaining).
 	 */
-	public BeanFilterBuilder bpi(String...value) {
-		this.bpi = ASet.of();
+	public BeanFilterBuilder properties(String...value) {
+		this.properties = ASet.of();
 		for (String v : value)
-			bpi.a(split(v));
+			if (!v.isEmpty())
+				properties.a(split(v));
 		return this;
 	}
 
@@ -496,10 +497,10 @@ public class BeanFilterBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='ja'>{@link Bean#bpx()}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(Map)}
+	 * 	<li class='ja'>{@link Bean#excludeProperties()}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesExcludes(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesExcludes(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesExcludes(Map)}
 	 * </ul>
 	 *
 	 * @param value
@@ -507,10 +508,11 @@ public class BeanFilterBuilder {
 	 * 	<br>Values can contain comma-delimited list of property names.
 	 * @return This object (for method chaining).
 	 */
-	public BeanFilterBuilder bpx(String...value) {
-		this.bpx = ASet.of();
+	public BeanFilterBuilder excludeProperties(String...value) {
+		this.excludeProperties = ASet.of();
 		for (String v : value)
-			bpx.a(split(v));
+			if (! v.isEmpty())
+				excludeProperties.a(split(v));
 		return this;
 	}
 
@@ -541,11 +543,11 @@ public class BeanFilterBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='ja'>{@link Bean#bpro()}
+	 * 	<li class='ja'>{@link Bean#readOnlyProperties()}
 	 * 	<li class='ja'>{@link Beanp#ro()}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Map)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(Map)}
 	 * </ul>
 	 *
 	 * @param value
@@ -553,10 +555,11 @@ public class BeanFilterBuilder {
 	 * 	<br>Values can contain comma-delimited list of property names.
 	 * @return This object (for method chaining).
 	 */
-	public BeanFilterBuilder bpro(String...value) {
-		this.bpro = ASet.of();
+	public BeanFilterBuilder readOnlyProperties(String...value) {
+		this.readOnlyProperties = ASet.of();
 		for (String v : value)
-			bpro.a(split(v));
+			if (! v.isEmpty())
+				readOnlyProperties.a(split(v));
 		return this;
 	}
 
@@ -587,11 +590,11 @@ public class BeanFilterBuilder {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='ja'>{@link Bean#bpwo()}
+	 * 	<li class='ja'>{@link Bean#writeOnlyProperties()}
 	 * 	<li class='ja'>{@link Beanp#wo()}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Map)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(Map)}
 	 * </ul>
 	 *
 	 * @param value
@@ -599,10 +602,11 @@ public class BeanFilterBuilder {
 	 * 	<br>Values can contain comma-delimited list of property names.
 	 * @return This object (for method chaining).
 	 */
-	public BeanFilterBuilder bpwo(String...value) {
-		this.bpwo = ASet.of();
+	public BeanFilterBuilder writeOnlyProperties(String...value) {
+		this.writeOnlyProperties = ASet.of();
 		for (String v : value)
-			bpwo.a(split(v));
+			if (! v.isEmpty())
+				writeOnlyProperties.a(split(v));
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
index 0cb4c41..6312293 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
@@ -298,7 +298,7 @@ public class BeanMeta<T> {
 
 				if (beanFilter != null) {
 
-					Set<String> bfbpi = beanFilter.getBpi();
+					Set<String> bfbpi = beanFilter.getProperties();
 
 					filterProps.addAll(bfbpi);
 
@@ -309,8 +309,8 @@ public class BeanMeta<T> {
 					if (beanFilter.getPropertyNamer() != null)
 						propertyNamer = beanFilter.getPropertyNamer();
 
-					bpro.addAll(beanFilter.getBpro());
-					bpwo.addAll(beanFilter.getBpwo());
+					bpro.addAll(beanFilter.getReadOnlyProperties());
+					bpwo.addAll(beanFilter.getWriteOnlyProperties());
 				}
 
 				fixedBeanProps.addAll(bpi);
@@ -458,8 +458,8 @@ public class BeanMeta<T> {
 				if (beanFilter != null) {
 
 					// Eliminated excluded properties if BeanFilter.excludeKeys is specified.
-					Set<String> bfbpi = beanFilter.getBpi();
-					Set<String> bfbpx = beanFilter.getBpx();
+					Set<String> bfbpi = beanFilter.getProperties();
+					Set<String> bfbpx = beanFilter.getExcludeProperties();
 
 					if (bpi.isEmpty() && ! bfbpi.isEmpty()) {
 						// Only include specified properties if BeanFilter.includeKeys is specified.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
index f94aaea..4b97eac 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseBuilder.java
@@ -385,74 +385,74 @@ public class BeanTraverseBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public BeanTraverseBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public BeanTraverseBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public BeanTraverseBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public BeanTraverseBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public BeanTraverseBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public BeanTraverseBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public BeanTraverseBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public BeanTraverseBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public BeanTraverseBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public BeanTraverseBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public BeanTraverseBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public BeanTraverseBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public BeanTraverseBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index 554748d..e35aabb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -56,7 +56,7 @@ import org.apache.juneau.transform.*;
  *
  * @param <T> The class type of the wrapped class.
  */
-@Bean(bpi="innerClass,classCategory,elementType,keyType,valueType,notABeanReason,initException,beanMeta")
+@Bean(properties="innerClass,classCategory,elementType,keyType,valueType,notABeanReason,initException,beanMeta")
 public final class ClassMeta<T> implements Type {
 
 	/** Class categories. */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index a7e014f..8735b4c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -763,7 +763,7 @@ public abstract class Context {
 
 	/**
 	 * Constructs the specified context class using the property store of this context class.
-	 * 
+	 *
 	 * @param c The context class to instantiate.
 	 * @param <T> The context class to instantiate.
 	 * @return The instantiated context class.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
index 9245e10..cfa7bd7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextCache.java
@@ -38,9 +38,7 @@ public class ContextCache {
 	 */
 	public static final ContextCache INSTANCE = new ContextCache();
 
-	private final static boolean USE_DEEP_MATCHING = Boolean.getBoolean("ContextCache.useDeepMatching");
-
-	private final ConcurrentHashMap<Class<?>,ConcurrentHashMap<Integer,CacheEntry>> contextCache = new ConcurrentHashMap<>();
+	private final ConcurrentHashMap<Class<?>,ConcurrentHashMap<PropertyStore,Context>> contextCache = new ConcurrentHashMap<>();
 	private final ConcurrentHashMap<Class<?>,String[]> prefixCache = new ConcurrentHashMap<>();
 
 	// When enabled, this will spit out cache-hit metrics to the console on shutdown.
@@ -104,22 +102,20 @@ public class ContextCache {
 		if (prefixes == null)
 			return instantiate(c, ps);
 
-		ConcurrentHashMap<Integer,CacheEntry> m = getContextCache(c);
+		ConcurrentHashMap<PropertyStore,Context> m = getContextCache(c);
 
-		Integer hashCode = ps.hashCode(prefixes);
-		CacheEntry ce = m.get(hashCode);
+		ps = ps.subset(prefixes);
 
-		if (ce != null && USE_DEEP_MATCHING && ! ce.ps.equals(ps))
-			throw new ContextRuntimeException("Property store hashcode mismatch!", new Object[0]);
+		Context context = m.get(ps);
 
-		logCache(c, ce != null);
+		logCache(c, context != null);
 
-		if (ce == null) {
-			ce = new CacheEntry(ps, instantiate(c, ps));
-			m.putIfAbsent(hashCode, ce);
+		if (context == null) {
+			context = instantiate(c, ps);
+			m.putIfAbsent(ps, context);
 		}
 
-		return (T)ce.context;
+		return (T)context;
 	}
 
 	private <T extends Context> T instantiate(Class<T> c, PropertyStore ps) {
@@ -132,11 +128,11 @@ public class ContextCache {
 		}
 	}
 
-	private ConcurrentHashMap<Integer,CacheEntry> getContextCache(Class<?> c) {
-		ConcurrentHashMap<Integer,CacheEntry> m = contextCache.get(c);
+	private ConcurrentHashMap<PropertyStore,Context> getContextCache(Class<?> c) {
+		ConcurrentHashMap<PropertyStore,Context> m = contextCache.get(c);
 		if (m == null) {
 			m = new ConcurrentHashMap<>();
-			ConcurrentHashMap<Integer,CacheEntry> m2 = contextCache.putIfAbsent(c, m);
+			ConcurrentHashMap<PropertyStore,Context> m2 = contextCache.putIfAbsent(c, m);
 			if (m2 != null)
 				m = m2;
 		}
@@ -171,14 +167,4 @@ public class ContextCache {
 	private <T> T newInstance(Class<T> cc, PropertyStore ps) throws Exception {
 		return (T)castOrCreate(Context.class, cc, true, ps);
 	}
-
-	private static class CacheEntry {
-		final PropertyStore ps;
-		final Context context;
-
-		CacheEntry(PropertyStore ps, Context context) {
-			this.ps = ps;
-			this.context = context;
-		}
-	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
index 3bc60be..6b054c8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
@@ -208,6 +208,30 @@ public final class PropertyStore {
 		this.hashCode = groups.hashCode();
 	}
 
+	
+	/**
+	 * Returns a subset of this property store consisting of just the specified group names.
+	 * 
+	 * @param groups The group names to include. 
+	 * @return A new property store.
+	 */
+	public PropertyStore subset(String[] groups) {
+		TreeMap<String,PropertyGroup> m = new TreeMap<>();
+		for (String g : groups) {
+			PropertyGroup g2 = this.groups.get(g);
+			if (g2 != null)
+				m.put(g, g2);
+		}
+
+		return new PropertyStore(m);
+	}
+
+	private PropertyStore(SortedMap<String,PropertyGroup> propertyMaps) {
+		this.groups = Collections.unmodifiableSortedMap(propertyMaps);
+		this.hashCode = groups.hashCode();
+	}
+
+
 	/**
 	 * Creates a new empty builder for a property store.
 	 *
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
index 069d665..501ae23 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
@@ -41,107 +41,10 @@ import org.apache.juneau.transform.*;
 @Retention(RUNTIME)
 @Inherited
 @Repeatable(BeanArray.class)
+@PropertyStoreApply(BeanApply.class)
 public @interface Bean {
 
 	/**
-	 * Bean property includes.
-	 *
-	 * <p>
-	 * The set and order of names of properties associated with a bean class.
-	 *
-	 * <p>
-	 * The order specified is the same order that the entries will be returned by the {@link BeanMap#entrySet()} and
-	 * related methods.
-	 *
-	 * <p>
-	 * This value is entirely optional if you simply want to expose all the getters and public fields on
-	 * a class as bean properties.
-	 * <br>However, it's useful if you want certain getters to be ignored or you want the properties to be
-	 * serialized in a particular order.
-	 * <br>Note that on IBM JREs, the property order is the same as the order in the source code,
-	 * whereas on Oracle JREs, the order is entirely random.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Address class with only street/city/state properties (in that order).</jc>
-	 * 	<ja>@Bean</ja>(bpi=<js>"street,city,state"</js>)
-	 * 	<jk>public class</jk> Address {...}
-	 * </p>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(Map)}
-	 * </ul>
-	 */
-	String bpi() default "";
-
-	/**
-	 * Read-only bean properties.
-	 *
-	 * <p>
-	 * Specifies one or more properties on a bean that are read-only despite having valid getters.
-	 * Serializers will serialize such properties as usual, but parsers will silently ignore them.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Exclude the 'city' and 'state' properties from being parsed, but not serialized.</jc>
-	 * 	<ja>@Bean</ja>(bpro=<js>"city,state"</js>})
-	 * 	<jk>public class</jk> Address {...}
-	 * </p>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Map)}
-	 * </ul>
-	 */
-	String bpro() default "";
-
-	/**
-	 * Write-only bean properties.
-	 *
-	 * <p>
-	 * Specifies one or more properties on a bean that are write-only despite having valid setters.
-	 * Parsers will parse such properties as usual, but serializers will silently ignore them.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Exclude the 'city' and 'state' properties from being serialized, but not parsed.</jc>
-	 * 	<ja>@Bean</ja>(bpro=<js>"city,state"</js>})
-	 * 	<jk>public class</jk> Address {...}
-	 * </p>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Map)}
-	 * </ul>
-	 */
-	String bpwo() default "";
-
-	/**
-	 * Bean property excludes.
-	 *
-	 * <p>
-	 * Specifies a list of properties that should be excluded from {@link BeanMap#entrySet()}.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Exclude the 'city' and 'state' properties from the Address class.</jc>
-	 * 	<ja>@Bean</ja>(bpx=<js>"city,state"</js>})
-	 * 	<jk>public class</jk> Address {...}
-	 * </p>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(Map)}
-	 * </ul>
-	 */
-	String bpx() default "";
-
-	/**
 	 * Bean dictionary.
 	 *
 	 * <p>
@@ -192,6 +95,32 @@ public @interface Bean {
 	String example() default "";
 
 	/**
+	 * Bean property excludes.
+	 *
+	 * <p>
+	 * Specifies a list of properties that should be excluded from {@link BeanMap#entrySet()}.
+	 *
+	 * <h5 class='section'>Example:</h5>
+	 * <p class='bcode w800'>
+	 * 	<jc>// Exclude the 'city' and 'state' properties from the Address class.</jc>
+	 * 	<ja>@Bean</ja>(excludeProperties=<js>"city,state"</js>})
+	 * 	<jk>public class</jk> Address {...}
+	 * </p>
+	 *
+	 * <ul class='notes'>
+	 * 	<li>
+	 * 		{@link #xp()} is a shortened synonym for this value.
+	 * </ul>
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesExcludes(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesExcludes(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesExcludes(Map)}
+	 * </ul>
+	 */
+	String excludeProperties() default "";
+
+	/**
 	 * Find fluent setters.
 	 *
 	 * <p>
@@ -303,6 +232,49 @@ public @interface Bean {
 	Class<?>[] onClass() default {};
 
 	/**
+	 * Synonym for {@link #properties()}.
+	 */
+	String p() default "";
+
+	/**
+	 * Bean property includes.
+	 *
+	 * <p>
+	 * The set and order of names of properties associated with a bean class.
+	 *
+	 * <p>
+	 * The order specified is the same order that the entries will be returned by the {@link BeanMap#entrySet()} and
+	 * related methods.
+	 *
+	 * <p>
+	 * This value is entirely optional if you simply want to expose all the getters and public fields on
+	 * a class as bean properties.
+	 * <br>However, it's useful if you want certain getters to be ignored or you want the properties to be
+	 * serialized in a particular order.
+	 * <br>Note that on IBM JREs, the property order is the same as the order in the source code,
+	 * whereas on Oracle JREs, the order is entirely random.
+	 *
+	 * <h5 class='section'>Example:</h5>
+	 * <p class='bcode w800'>
+	 * 	<jc>// Address class with only street/city/state properties (in that order).</jc>
+	 * 	<ja>@Bean</ja>(properties=<js>"street,city,state"</js>)
+	 * 	<jk>public class</jk> Address {...}
+	 * </p>
+	 *
+	 * <ul class='notes'>
+	 * 	<li>
+	 * 		{@link #p()} is a shortened synonym for this value.
+	 * </ul>
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanProperties(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanProperties(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanProperties(Map)}
+	 * </ul>
+	 */
+	String properties() default "";
+
+	/**
 	 * Associates a {@link PropertyNamer} with this bean to tailor the names of the bean properties.
 	 *
 	 * <p>
@@ -322,6 +294,38 @@ public @interface Bean {
 	Class<? extends PropertyNamer> propertyNamer() default BasicPropertyNamer.class;
 
 	/**
+	 * Read-only bean properties.
+	 *
+	 * <p>
+	 * Specifies one or more properties on a bean that are read-only despite having valid getters.
+	 * Serializers will serialize such properties as usual, but parsers will silently ignore them.
+	 *
+	 * <h5 class='section'>Example:</h5>
+	 * <p class='bcode w800'>
+	 * 	<jc>// Exclude the 'city' and 'state' properties from being parsed, but not serialized.</jc>
+	 * 	<ja>@Bean</ja>(readOnlyProperties=<js>"city,state"</js>})
+	 * 	<jk>public class</jk> Address {...}
+	 * </p>
+	 *
+	 * <ul class='notes'>
+	 * 	<li>
+	 * 		{@link #ro()} is a shortened synonym for this value.
+	 * </ul>
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(Map)}
+	 * </ul>
+	 */
+	String readOnlyProperties() default "";
+
+	/**
+	 * Synonym for {@link #readOnlyProperties()}.
+	 */
+	String ro() default "";
+
+	/**
 	 * Sort bean properties in alphabetical order.
 	 *
 	 * <p>
@@ -413,4 +417,41 @@ public @interface Bean {
 	 * </ul>
 	 */
 	String typePropertyName() default "";
+
+	/**
+	 * Synonym for {@link #writeOnlyProperties()}.
+	 */
+	String wo() default "";
+
+	/**
+	 * Write-only bean properties.
+	 *
+	 * <p>
+	 * Specifies one or more properties on a bean that are write-only despite having valid setters.
+	 * Parsers will parse such properties as usual, but serializers will silently ignore them.
+	 *
+	 * <h5 class='section'>Example:</h5>
+	 * <p class='bcode w800'>
+	 * 	<jc>// Exclude the 'city' and 'state' properties from being serialized, but not parsed.</jc>
+	 * 	<ja>@Bean</ja>(writeOnlyProperties=<js>"city,state"</js>})
+	 * 	<jk>public class</jk> Address {...}
+	 * </p>
+	 *
+	 * <ul class='notes'>
+	 * 	<li>
+	 * 		{@link #wo()} is a shortened synonym for this value.
+	 * </ul>
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(Map)}
+	 * </ul>
+	 */
+	String writeOnlyProperties() default "";
+
+	/**
+	 * Synonym for {@link #excludeProperties()}.
+	 */
+	String xp() default "";
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanApply.java
similarity index 51%
copy from juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
copy to juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanApply.java
index d80b62c..6594b27 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanApply.java
@@ -1,62 +1,70 @@
-// ***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
-// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
-// * with the License.  You may obtain a copy of the License at                                                              *
-// *                                                                                                                         *
-// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
-// *                                                                                                                         *
-// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
-// * specific language governing permissions and limitations under the License.                                              *
-// ***************************************************************************************************************************
-package org.apache.juneau.transforms;
-
-import static org.apache.juneau.internal.StringUtils.*;
-import static org.junit.runners.MethodSorters.*;
-
-import org.apache.juneau.*;
-import org.apache.juneau.transform.*;
-import org.junit.*;
-
-/**
- * Tests designed to serialize and parse objects to make sure we end up
- * with the same objects for all serializers and parsers.
- */
-@FixMethodOrder(NAME_ASCENDING)
-public abstract class OneWayStringSwapTest<T> {
-
-	private final String label;
-	private final T o;
-	private final StringSwap<T> ss;
-	private final String expected;
-	private final BeanSession bs;
-
-	public OneWayStringSwapTest(String label, T o, StringSwap<T> ss, String expected, BeanSession bs) throws Exception {
-		this.label = label;
-		this.o = o;
-		this.ss = ss;
-		this.expected = expected;
-		this.bs = bs;
-	}
-
-	@Test
-	public void testSwap() throws Exception {
-		String s = (String)ss.swap(bs, o);
-		if (! isEquals(expected, s)) {
-			if (expected.isEmpty()) {
-				if (! label.startsWith("[]"))
-					System.err.println(label.substring(0, label.indexOf(']')+1) + " "+s);
-				Assert.fail();
-			} else {
-				fail("Test [{0} swap] failed.  Expected=[{1}], Actual=[{2}]", label, expected, s);
-			}
-		}
-	}
-
-	private void fail(String msg, Object...args) {
-		String s = format(msg, args);
-		System.err.println(s);
-		Assert.fail(s);
-	}
-}
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.annotation;
+
+import static org.apache.juneau.BeanContext.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.reflect.*;
+import org.apache.juneau.svl.*;
+
+/**
+ * Applies targeted {@link Bean} annotations to a {@link PropertyStoreBuilder}.
+ */
+public class BeanApply extends ConfigApply<Bean> {
+
+	/**
+	 * Constructor.
+	 *
+	 * @param c The annotation class.
+	 * @param r The resolver for resolving values in annotations.
+	 */
+	public BeanApply(Class<Bean> c, VarResolverSession r) {
+		super(c, r);
+	}
+
+	@Override
+	public void apply(AnnotationInfo<Bean> ai, PropertyStoreBuilder psb) {
+		Bean a = ai.getAnnotation();
+
+		if (a.on().length == 0 && a.onClass().length == 0)
+			return;
+
+		Bean copy = BeanBuilder
+			.create()
+			.dictionary(a.dictionary())
+			.example(string(a.example()))
+			.excludeProperties(string(a.excludeProperties()))
+			.fluentSetters(a.fluentSetters())
+			.implClass(a.implClass())
+			.interceptor(a.interceptor())
+			.interfaceClass(a.interfaceClass())
+			.on(strings(a.on()))
+			.onClass(a.onClass())
+			.p(string(a.p()))
+			.properties(string(a.properties()))
+			.propertyNamer(a.propertyNamer())
+			.readOnlyProperties(string(a.readOnlyProperties()))
+			.ro(string(a.ro()))
+			.sort(a.sort())
+			.stopClass(a.stopClass())
+			.typeName(string(a.typeName()))
+			.typePropertyName(string(a.typePropertyName()))
+			.wo(string(a.wo()))
+			.writeOnlyProperties(string(a.writeOnlyProperties()))
+			.xp(string(a.xp()))
+			.build();
+
+		psb.prependTo(BEAN_annotations, copy);
+	}
+}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanBuilder.java
index d532809..e880f91 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanBuilder.java
@@ -67,49 +67,33 @@ public class BeanBuilder extends TargetedAnnotationTBuilder {
 		private final Class<? extends PropertyNamer> propertyNamer;
 		private final Class<?> implClass, interfaceClass, stopClass;
 		private final Class<?>[] dictionary;
-		private final String bpi, bpx, bpro, bpwo, example, typeName, typePropertyName;
+		private final String example, excludeProperties, p, properties, readOnlyProperties, ro, typeName, typePropertyName, wo, writeOnlyProperties, xp;
 
 		Impl(BeanBuilder b) {
 			super(b);
-			this.bpi = b.bpi;
-			this.bpro = b.bpro;
-			this.bpwo = b.bpwo;
-			this.bpx = b.bpx;
 			this.dictionary = copyOf(b.dictionary);
 			this.example = b.example;
+			this.excludeProperties = b.excludeProperties;
 			this.fluentSetters = b.fluentSetters;
 			this.implClass = b.implClass;
 			this.interceptor = b.interceptor;
 			this.interfaceClass = b.interfaceClass;
+			this.p = b.p;
+			this.properties = b.properties;
 			this.propertyNamer = b.propertyNamer;
+			this.readOnlyProperties = b.readOnlyProperties;
+			this.ro = b.ro;
 			this.sort = b.sort;
 			this.stopClass = b.stopClass;
 			this.typeName = b.typeName;
 			this.typePropertyName = b.typePropertyName;
+			this.wo = b.wo;
+			this.writeOnlyProperties = b.writeOnlyProperties;
+			this.xp = b.xp;
 			postConstruct();
 		}
 
 		@Override /* Bean */
-		public String bpi() {
-			return bpi;
-		}
-
-		@Override /* Bean */
-		public String bpro() {
-			return bpro;
-		}
-
-		@Override /* Bean */
-		public String bpwo() {
-			return bpwo;
-		}
-
-		@Override /* Bean */
-		public String bpx() {
-			return bpx;
-		}
-
-		@Override /* Bean */
 		public Class<?>[] dictionary() {
 			return dictionary;
 		}
@@ -120,6 +104,11 @@ public class BeanBuilder extends TargetedAnnotationTBuilder {
 		}
 
 		@Override /* Bean */
+		public String excludeProperties() {
+			return excludeProperties;
+		}
+
+		@Override /* Bean */
 		public boolean fluentSetters() {
 			return fluentSetters;
 		}
@@ -140,11 +129,31 @@ public class BeanBuilder extends TargetedAnnotationTBuilder {
 		}
 
 		@Override /* Bean */
+		public String p() {
+			return p;
+		}
+
+		@Override /* Bean */
+		public String properties() {
+			return properties;
+		}
+
+		@Override /* Bean */
 		public Class<? extends PropertyNamer> propertyNamer() {
 			return propertyNamer;
 		}
 
 		@Override /* Bean */
+		public String readOnlyProperties() {
+			return readOnlyProperties;
+		}
+
+		@Override /* Bean */
+		public String ro() {
+			return ro;
+		}
+
+		@Override /* Bean */
 		public boolean sort() {
 			return sort;
 		}
@@ -163,6 +172,21 @@ public class BeanBuilder extends TargetedAnnotationTBuilder {
 		public String typePropertyName() {
 			return typePropertyName;
 		}
+
+		@Override /* Bean */
+		public String writeOnlyProperties() {
+			return writeOnlyProperties;
+		}
+
+		@Override /* Bean */
+		public String wo() {
+			return wo;
+		}
+
+		@Override /* Bean */
+		public String xp() {
+			return xp;
+		}
 	}
 
 
@@ -170,7 +194,7 @@ public class BeanBuilder extends TargetedAnnotationTBuilder {
 	Class<?> implClass=Null.class, interfaceClass=Null.class, stopClass=Null.class;
 	Class<? extends BeanInterceptor<?>> interceptor=BeanInterceptor.Default.class;
 	Class<? extends PropertyNamer> propertyNamer=BasicPropertyNamer.class;
-	String bpi="", bpx="", bpro="", bpwo="", example="", typeName="", typePropertyName="";
+	String example="", excludeProperties="", p="", properties="", readOnlyProperties="", ro="", typeName="", typePropertyName="", wo="", writeOnlyProperties="", xp="";
 	boolean fluentSetters, sort;
 
 	/**
@@ -190,123 +214,134 @@ public class BeanBuilder extends TargetedAnnotationTBuilder {
 	}
 
 	/**
-	 * Sets the {@link Bean#bpi()} property on this annotation.
+	 * Sets the {@link Bean#dictionary()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder bpi(String value) {
-		this.bpi = value;
+	public BeanBuilder dictionary(Class<?>...value) {
+		this.dictionary = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#bpro()} property on this annotation.
+	 * Sets the {@link Bean#example()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder bpro(String value) {
-		this.bpro = value;
+	public BeanBuilder example(String value) {
+		this.example = value;
 		return this;
 	}
 
 	/**
-	 * Sets the{@link Bean#bpwo()} property on this annotation.
+	 * Sets the {@link Bean#excludeProperties()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder bpwo(String value) {
-		this.bpwo = value;
+	public BeanBuilder excludeProperties(String value) {
+		this.excludeProperties = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#bpx()} property on this annotation.
+	 * Sets the {@link Bean#fluentSetters()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder bpx(String value) {
-		this.bpx = value;
+	public BeanBuilder fluentSetters(boolean value) {
+		this.fluentSetters = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#dictionary()} property on this annotation.
+	 * Sets the {@link Bean#implClass()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder dictionary(Class<?>...value) {
-		this.dictionary = value;
+	public BeanBuilder implClass(Class<?> value) {
+		this.implClass = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#example()} property on this annotation.
+	 * Sets the {@link Bean#interceptor()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder example(String value) {
-		this.example = value;
+	public BeanBuilder interceptor(Class<? extends BeanInterceptor<?>> value) {
+		this.interceptor = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#fluentSetters()} property on this annotation.
+	 * Sets the {@link Bean#interfaceClass()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder fluentSetters(boolean value) {
-		this.fluentSetters = value;
+	public BeanBuilder interfaceClass(Class<?> value) {
+		this.interfaceClass = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#implClass()} property on this annotation.
+	 * Sets the {@link Bean#properties()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder implClass(Class<?> value) {
-		this.implClass = value;
+	public BeanBuilder properties(String value) {
+		this.properties = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#interceptor()} property on this annotation.
+	 * Sets the {@link Bean#p()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder interceptor(Class<? extends BeanInterceptor<?>> value) {
-		this.interceptor = value;
+	public BeanBuilder p(String value) {
+		this.p = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#interfaceClass()} property on this annotation.
+	 * Sets the {@link Bean#propertyNamer()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder interfaceClass(Class<?> value) {
-		this.interfaceClass = value;
+	public BeanBuilder propertyNamer(Class<? extends PropertyNamer> value) {
+		this.propertyNamer = value;
 		return this;
 	}
 
 	/**
-	 * Sets the {@link Bean#propertyNamer()} property on this annotation.
+	 * Sets the {@link Bean#readOnlyProperties()} property on this annotation.
 	 *
 	 * @param value The new value for this property.
 	 * @return This object (for method chaining).
 	 */
-	public BeanBuilder propertyNamer(Class<? extends PropertyNamer> value) {
-		this.propertyNamer = value;
+	public BeanBuilder readOnlyProperties(String value) {
+		this.readOnlyProperties = value;
+		return this;
+	}
+
+	/**
+	 * Sets the {@link Bean#ro()} property on this annotation.
+	 *
+	 * @param value The new value for this property.
+	 * @return This object (for method chaining).
+	 */
+	public BeanBuilder ro(String value) {
+		this.ro = value;
 		return this;
 	}
 
@@ -354,6 +389,39 @@ public class BeanBuilder extends TargetedAnnotationTBuilder {
 		return this;
 	}
 
+	/**
+	 * Sets the{@link Bean#wo()} property on this annotation.
+	 *
+	 * @param value The new value for this property.
+	 * @return This object (for method chaining).
+	 */
+	public BeanBuilder wo(String value) {
+		this.wo = value;
+		return this;
+	}
+
+	/**
+	 * Sets the{@link Bean#writeOnlyProperties()} property on this annotation.
+	 *
+	 * @param value The new value for this property.
+	 * @return This object (for method chaining).
+	 */
+	public BeanBuilder writeOnlyProperties(String value) {
+		this.writeOnlyProperties = value;
+		return this;
+	}
+
+	/**
+	 * Sets the {@link Bean#xp()} property on this annotation.
+	 *
+	 * @param value The new value for this property.
+	 * @return This object (for method chaining).
+	 */
+	public BeanBuilder xp(String value) {
+		this.xp = value;
+		return this;
+	}
+
 	// <FluentSetters>
 
 	@Override /* GENERATED - TargetedAnnotationBuilder */
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
index 1ea4101..e2b5703 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfig.java
@@ -18,7 +18,6 @@ import static java.lang.annotation.RetentionPolicy.*;
 import java.io.*;
 import java.lang.annotation.*;
 import java.lang.reflect.*;
-import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.parser.*;
@@ -446,220 +445,6 @@ public @interface BeanConfig {
 	String typePropertyName() default "";
 
 	/**
-	 * Configuration property:  Bean property includes.
-	 *
-	 * Shortcut for specifying the {@link Bean#bpi()} annotation for all serializers.
-	 *
-	 * <p>
-	 * The typical use case is when you're rendering summary and details views of the same bean in a resource and
-	 * you want to expose or hide specific properties depending on the level of detail you want.
-	 *
-	 * <p>
-	 * In the example below, our 'summary' view is a list of beans where we only want to show the ID property,
-	 * and our detail view is a single bean where we want to expose different fields:
-	 * <p class='bcode w800'>
-	 * 	<jc>// Our bean</jc>
-	 * 	<jk>public class</jk> MyBean {
-	 *
-	 * 		<jc>// Summary properties</jc>
-	 * 		<ja>@Html</ja>(link=<js>"servlet:/mybeans/{id}"</js>)
-	 * 		<jk>public</jk> String <jf>id</jf>;
-	 *
-	 * 		<jc>// Detail properties</jc>
-	 * 		<jk>public</jk> String <jf>a</jf>, <jf>b</jf>;
-	 * 	}
-	 *
-	 * 	<jc>// Only render "id" property.</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/mybeans"</js>)
-	 * 	<ja>@BeanConfig</ja>(bpi=<js>"MyBean: id"</js>)
-	 * 	<jk>public</jk> List&lt;MyBean&gt; getBeanSummary() {...}
-	 *
-	 * 	<jc>// Only render "a" and "b" properties.</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/mybeans/{id}"</js>)
-	 * 	<ja>@BeanConfig</ja>(bpi=<js>"MyBean: a,b"</js>)
-	 * 	<jk>public</jk> MyBean getBeanDetails(<ja>@Path</ja> String id) {...}
-	 * </p>
-	 *
-	 * <ul class='notes'>
-	 * 	<li>
-	 * 		The format of each value is: <js>"Key: comma-delimited-tokens"</js>.
-	 * 	<li>
-	 * 		Keys can be fully-qualified or short class names or <js>"*"</js> to represent all classes.
-	 * 	<li>
-	 * 		Values are comma-delimited lists of bean property names.
-	 * 	<li>
-	 * 		Properties apply to specified class and all subclasses.
-	 * 	<li>
-	 * 		Semicolons can be used as an additional separator for multiple values:
-	 * 		<p class='bcode w800'>
-	 * 	<jc>// Equivalent</jc>
-	 * 	bpi={<js>"Bean1: foo"</js>,<js>"Bean2: bar,baz"</js>}
-	 * 	bpi=<js>"Bean1: foo; Bean2: bar,baz"</js>
-	 * 		</p>
-	 * 	<li>
-	 * 		Supports {@doc DefaultVarResolver} (e.g. <js>"$C{myConfigVar}"</js>).
-	 * </ul>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpi(Map)}
-	 * </ul>
-	 */
-	String[] bpi() default {};
-
-	/**
-	 * Configuration property:  Bean property excludes.
-	 *
-	 * Shortcut for specifying the {@link Bean#bpx()} annotation for all serializers.
-	 *
-	 * <p>
-	 * Same as {@link #bpi()} except you specify a list of bean property names that you want to exclude from
-	 * serialization.
-	 *
-	 * <p>
-	 * In the example below, our 'summary' view is a list of beans where we want to exclude some properties:
-	 * <p class='bcode w800'>
-	 * 	<jc>// Our bean</jc>
-	 * 	<jk>public class</jk> MyBean {
-	 *
-	 * 		<jc>// Summary properties</jc>
-	 * 		<ja>@Html</ja>(link=<js>"servlet:/mybeans/{id}"</js>)
-	 * 		<jk>public</jk> String <jf>id</jf>;
-	 *
-	 * 		<jc>// Detail properties</jc>
-	 * 		<jk>public</jk> String <jf>a</jf>, <jf>b</jf>;
-	 * 	}
-	 *
-	 * 	<jc>// Don't show "a" and "b" properties.</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/mybeans"</js>)
-	 * 	<ja>@BeanConfig</ja>(bpx=<js>"MyBean: a,b"</js>)
-	 * 	<jk>public</jk> List&lt;MyBean&gt; getBeanSummary() {...}
-	 *
-	 * 	<jc>// Render all properties.</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/mybeans/{id}"</js>)
-	 * 	<jk>public</jk> MyBean getBeanDetails(<ja>@Path</ja> String id) {...}
-	 * </p>
-	 *
-	 * <ul class='notes'>
-	 * 	<li>
-	 * 		The format of each value is: <js>"Key: comma-delimited-tokens"</js>.
-	 * 	<li>
-	 * 		Keys can be fully-qualified or short class names or <js>"*"</js> to represent all classes.
-	 * 	<li>
-	 * 		Values are comma-delimited lists of bean property names.
-	 * 	<li>
-	 * 		Properties apply to specified class and all subclasses.
-	 * 	<li>
-	 * 		Semicolons can be used as an additional separator for multiple values:
-	 * 		<p class='bcode w800'>
-	 * 	<jc>// Equivalent</jc>
-	 * 	bpx={<js>"Bean1: foo"</js>,<js>"Bean2: bar,baz"</js>}
-	 * 	bpx=<js>"Bean1: foo; Bean2: bar,baz"</js>
-	 * 		</p>
-	 * 	<li>
-	 * 		Supports {@doc DefaultVarResolver} (e.g. <js>"$C{myConfigVar}"</js>).
-	 * </ul>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpx(Map)}
-	 * </ul>
-	 */
-	String[] bpx() default {};
-
-	/**
-	 * Configuration property:  Read-only bean properties.
-	 *
-	 * Shortcut for specifying the {@link Bean#bpwo()} annotation for all parsers.
-	 *
-	 * <p>
-	 * Specifies one or more properties on a bean that are read-only despite having valid getters.
-	 * Serializers will serialize such properties as usual, but parsers will silently ignore them.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Ignore 'a' and 'b' properties if they're present in the HTTP request body.</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>POST</jsf>, path=<js>"/mybeans"</js>)
-	 * 	<ja>@BeanConfig</ja>(bpro=<js>"MyBean: a,b"</js>)
-	 * 	<jk>public void</jk> postMyBeans(List&lt;MyBean&gt; l) {...}
-	 * </p>
-	 *
-	 * <ul class='notes'>
-	 * 	<li>
-	 * 		The format of each value is: <js>"Key: comma-delimited-tokens"</js>.
-	 * 	<li>
-	 * 		Keys can be fully-qualified or short class names or <js>"*"</js> to represent all classes.
-	 * 	<li>
-	 * 		Values are comma-delimited lists of bean property names.
-	 * 	<li>
-	 * 		Properties apply to specified class and all subclasses.
-	 * 	<li>
-	 * 		Semicolons can be used as an additional separator for multiple values:
-	 * 		<p class='bcode w800'>
-	 * 	<jc>// Equivalent</jc>
-	 * 	bpro={<js>"Bean1: foo"</js>,<js>"Bean2: bar,baz"</js>}
-	 * 	bpro=<js>"Bean1: foo; Bean2: bar,baz"</js>
-	 * 		</p>
-	 * 	<li>
-	 * 		Supports {@doc DefaultVarResolver} (e.g. <js>"$C{myConfigVar}"</js>).
-	 * </ul>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Map)}
-	 * </ul>
-	 */
-	String[] bpro() default {};
-
-	/**
-	 * Configuration property:  Write-only bean properties.
-	 *
-	 * Shortcut for specifying the {@link Bean#bpwo()} annotation for all serializers.
-	 *
-	 * <p>
-	 * Specifies one or more properties on a bean that are write-only despite having valid setters.
-	 * Parsers will parse such properties as usual, but serializers will silently ignore them.
-	 *
-	 * <h5 class='section'>Example:</h5>
-	 * <p class='bcode w800'>
-	 * 	<jc>// Ignore 'a' and 'b' properties when serializing the response body.</jc>
-	 * 	<ja>@RestMethod</ja>(name=<jsf>GET</jsf>, path=<js>"/mybeans"</js>)
-	 * 	<ja>@BeanConfig</ja>(bpwo=<js>"MyBean: a,b"</js>)
-	 * 	<jk>public</jk> List&lt;MyBean&gt; getMyBeans() {...}
-	 * </p>
-	 *
-	 * <ul class='notes'>
-	 * 	<li>
-	 * 		The format of each value is: <js>"Key: comma-delimited-tokens"</js>.
-	 * 	<li>
-	 * 		Keys can be fully-qualified or short class names or <js>"*"</js> to represent all classes.
-	 * 	<li>
-	 * 		Values are comma-delimited lists of bean property names.
-	 * 	<li>
-	 * 		Properties apply to specified class and all subclasses.
-	 * 	<li>
-	 * 		Semicolons can be used as an additional separator for multiple values:
-	 * 		<p class='bcode w800'>
-	 * 	<jc>// Equivalent</jc>
-	 * 	bpwo={<js>"Bean1: foo"</js>,<js>"Bean2: bar,baz"</js>}
-	 * 	bpwo=<js>"Bean1: foo; Bean2: bar,baz"</js>
-	 * 		</p>
-	 * 	<li>
-	 * 		Supports {@doc DefaultVarResolver} (e.g. <js>"$C{myConfigVar}"</js>).
-	 * </ul>
-	 *
-	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Map)}
-	 * </ul>
-	 */
-	String[] bpwo() default {};
-
-	/**
 	 * Configuration property:  Debug mode.
 	 *
 	 * <p>
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java
index 19b8201..610b7a4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanConfigApply.java
@@ -148,25 +148,8 @@ public class BeanConfigApply extends ConfigApply<BeanConfig> {
 			psb.prependTo(BEAN_annotations, a.applyURI());
 		if (a.applySwap().length > 0)
 			psb.prependTo(BEAN_annotations, a.applySwap());
-
-		if (a.bpi().length > 0)
-			for (Map.Entry<String,String> e : stringsMap(a.bpi(), "bpi").entrySet())
-				psb.prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpi(e.getValue()).build());
-
-		if (a.bpx().length > 0)
-			for (Map.Entry<String,String> e : stringsMap(a.bpx(), "bpx").entrySet())
-				psb.prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpx(e.getValue()).build());
-
-		if (a.bpro().length > 0)
-			for (Map.Entry<String,String> e : stringsMap(a.bpro(), "bpro").entrySet())
-				psb.prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpro(e.getValue()).build());
-
-		if (a.bpwo().length > 0)
-			for (Map.Entry<String,String> e : stringsMap(a.bpwo(), "bpwo").entrySet())
-				psb.prependTo(BEAN_annotations, BeanBuilder.create(e.getKey()).bpwo(e.getValue()).build());
 	}
 
-
 	private Locale locale(String in) {
 		return Locale.forLanguageTag(string(in));
 	}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
index 181b5a6..d08c708 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
@@ -364,9 +364,9 @@ public @interface Beanp {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpro(Map)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesReadOnly(Map)}
 	 * </ul>
 	 */
 	String ro() default "";
@@ -440,9 +440,9 @@ public @interface Beanp {
 	 * </p>
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Class, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(String, String)}
-	 * 	<li class='jm'>{@link BeanContextBuilder#bpwo(Map)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(Class, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(String, String)}
+	 * 	<li class='jm'>{@link BeanContextBuilder#beanPropertiesWriteOnly(Map)}
 	 * </ul>
 	 */
 	String wo() default "";
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
index 5df9d96..a73ab24 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/Assertion.java
@@ -90,9 +90,9 @@ public class Assertion {
 		if (this.msg != null)
 			msg = format(this.msg, this.msgArgs).replace("<<<MSG>>>", msg);
 		if (stdout)
-			System.out.println(msg);
+			System.out.println(msg);  // NOT DEBUG
 		if (stderr)
-			System.err.println(msg);
+			System.err.println(msg);  // NOT DEBUG
 		return new BasicAssertionError(msg);
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
index eb831d7..e7beb4d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvParserBuilder.java
@@ -224,74 +224,74 @@ public class CsvParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public CsvParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public CsvParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public CsvParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public CsvParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public CsvParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public CsvParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public CsvParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public CsvParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public CsvParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public CsvParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public CsvParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public CsvParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
index 9ef4133..e5e1a38 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
@@ -224,74 +224,74 @@ public class CsvSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public CsvSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public CsvSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public CsvSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public CsvSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public CsvSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public CsvSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public CsvSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public CsvSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public CsvSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public CsvSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public CsvSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public CsvSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public CsvSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
index 9e3c979..2250556 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializerBuilder.java
@@ -750,74 +750,74 @@ public class HtmlDocSerializerBuilder extends HtmlStrippedDocSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public HtmlDocSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public HtmlDocSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public HtmlDocSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public HtmlDocSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public HtmlDocSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public HtmlDocSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public HtmlDocSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public HtmlDocSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public HtmlDocSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public HtmlDocSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public HtmlDocSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlDocSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public HtmlDocSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
index 84b1855..26c4aa1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserBuilder.java
@@ -227,74 +227,74 @@ public class HtmlParserBuilder extends XmlParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public HtmlParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public HtmlParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public HtmlParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public HtmlParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public HtmlParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public HtmlParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public HtmlParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public HtmlParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public HtmlParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public HtmlParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public HtmlParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public HtmlParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
index 2f61eb9..5348acb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSchemaSerializerBuilder.java
@@ -403,74 +403,74 @@ public class HtmlSchemaSerializerBuilder extends HtmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public HtmlSchemaSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public HtmlSchemaSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public HtmlSchemaSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public HtmlSchemaSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public HtmlSchemaSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public HtmlSchemaSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public HtmlSchemaSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public HtmlSchemaSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public HtmlSchemaSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public HtmlSchemaSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public HtmlSchemaSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSchemaSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public HtmlSchemaSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
index 166c303..cf21e09 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -320,74 +320,74 @@ public class HtmlSerializerBuilder extends XmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public HtmlSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public HtmlSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public HtmlSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public HtmlSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public HtmlSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public HtmlSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public HtmlSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public HtmlSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public HtmlSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public HtmlSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public HtmlSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public HtmlSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
index dcf2f5f..4399f0a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlStrippedDocSerializerBuilder.java
@@ -224,74 +224,74 @@ public class HtmlStrippedDocSerializerBuilder extends HtmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public HtmlStrippedDocSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public HtmlStrippedDocSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public HtmlStrippedDocSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public HtmlStrippedDocSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public HtmlStrippedDocSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/AnnotationUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/AnnotationUtils.java
index 0ea4d6a..5eeff57 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/AnnotationUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/AnnotationUtils.java
@@ -17,6 +17,8 @@ import java.lang.reflect.*;
 import java.util.*;
 import java.util.stream.*;
 
+import org.apache.juneau.reflect.*;
+
 /**
  * Annotation utilities.
  */
@@ -183,4 +185,22 @@ public class AnnotationUtils {
 			return Arrays.hashCode((boolean[]) o);
 		return Arrays.hashCode((Object[]) o);
 	}
+
+	/**
+	 * If the annotation is an array of other annotations, returns the inner annotations.
+	 * 
+	 * @param a The annotation to split if repeated.
+	 * @return The nested annotations, or a singleton array of the same annotation if it's not repeated.
+	 */
+	public static Annotation[] splitRepeated(Annotation a) {
+		try {
+			ClassInfo ci = ClassInfo.ofc(a.annotationType());
+			MethodInfo mi = ci.getRepeatedAnnotationMethod();
+			if (mi != null)
+				return mi.invoke(a);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return new Annotation[]{a};
+	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
index dbb00c6..2b80658 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoParserBuilder.java
@@ -223,74 +223,74 @@ public class JsoParserBuilder extends InputStreamParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public JsoParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public JsoParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public JsoParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public JsoParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public JsoParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public JsoParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public JsoParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public JsoParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public JsoParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public JsoParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public JsoParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public JsoParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
index 4233165..63d406c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
@@ -223,74 +223,74 @@ public class JsoSerializerBuilder extends OutputStreamSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public JsoSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public JsoSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public JsoSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public JsoSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public JsoSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public JsoSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public JsoSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public JsoSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public JsoSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public JsoSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public JsoSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsoSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public JsoSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
index 74a1529..29bfcdc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParserBuilder.java
@@ -244,74 +244,74 @@ public class JsonParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public JsonParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public JsonParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public JsonParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public JsonParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public JsonParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public JsonParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public JsonParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public JsonParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public JsonParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public JsonParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public JsonParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public JsonParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
index 4851a0e..93a8685 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
@@ -402,74 +402,74 @@ public class JsonSchemaSerializerBuilder extends JsonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public JsonSchemaSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public JsonSchemaSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public JsonSchemaSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public JsonSchemaSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public JsonSchemaSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public JsonSchemaSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public JsonSchemaSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public JsonSchemaSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public JsonSchemaSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public JsonSchemaSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public JsonSchemaSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public JsonSchemaSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
index df28335..3b36779 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
@@ -280,74 +280,74 @@ public class JsonSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public JsonSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public JsonSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public JsonSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public JsonSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public JsonSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public JsonSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public JsonSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public JsonSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public JsonSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public JsonSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public JsonSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public JsonSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java
index 1711abb..bf29b82 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParserBuilder.java
@@ -223,74 +223,74 @@ public class SimpleJsonParserBuilder extends JsonParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public SimpleJsonParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public SimpleJsonParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public SimpleJsonParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public SimpleJsonParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public SimpleJsonParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public SimpleJsonParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public SimpleJsonParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public SimpleJsonParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public SimpleJsonParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public SimpleJsonParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public SimpleJsonParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public SimpleJsonParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java
index 69a02f2..6ceeb7b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializerBuilder.java
@@ -223,74 +223,74 @@ public class SimpleJsonSerializerBuilder extends JsonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public SimpleJsonSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public SimpleJsonSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public SimpleJsonSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public SimpleJsonSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public SimpleJsonSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public SimpleJsonSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public SimpleJsonSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public SimpleJsonSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public SimpleJsonSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public SimpleJsonSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public SimpleJsonSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SimpleJsonSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public SimpleJsonSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
index 8ca07c3..439fde0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorBuilder.java
@@ -432,74 +432,74 @@ public class JsonSchemaGeneratorBuilder extends BeanTraverseBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public JsonSchemaGeneratorBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public JsonSchemaGeneratorBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public JsonSchemaGeneratorBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public JsonSchemaGeneratorBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public JsonSchemaGeneratorBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public JsonSchemaGeneratorBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public JsonSchemaGeneratorBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public JsonSchemaGeneratorBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public JsonSchemaGeneratorBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public JsonSchemaGeneratorBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public JsonSchemaGeneratorBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public JsonSchemaGeneratorBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public JsonSchemaGeneratorBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java
index f8a5414..cef6ff1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java
@@ -197,7 +197,7 @@ public abstract class Marshall {
 	 * @return This object (for method chaining).
 	 */
 	public final Marshall err(String msg, Object...args) {
-		System.err.println(format(msg, args));
+		System.err.println(format(msg, args));  // NOT DEBUG
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
index 95172b8..17aa2f3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParserBuilder.java
@@ -223,74 +223,74 @@ public class MsgPackParserBuilder extends InputStreamParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public MsgPackParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public MsgPackParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public MsgPackParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public MsgPackParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public MsgPackParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public MsgPackParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public MsgPackParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public MsgPackParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public MsgPackParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public MsgPackParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public MsgPackParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public MsgPackParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
index 09601ef..e7fe6ee 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
@@ -223,74 +223,74 @@ public class MsgPackSerializerBuilder extends OutputStreamSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public MsgPackSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public MsgPackSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public MsgPackSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public MsgPackSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public MsgPackSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public MsgPackSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public MsgPackSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public MsgPackSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public MsgPackSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public MsgPackSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public MsgPackSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MsgPackSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public MsgPackSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionInfo.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionInfo.java
index 22e814b..3a08b30 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionInfo.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionInfo.java
@@ -19,7 +19,7 @@ import org.apache.juneau.annotation.*;
 /**
  * Stores information about an exception.
  */
-@Bean(bpi="hash,exceptionClass,message,stackTrace,causedBy", fluentSetters=true)
+@Bean(properties="hash,exceptionClass,message,stackTrace,causedBy", fluentSetters=true)
 public class ExceptionInfo implements Cloneable {
 
 	private String hash;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionStats.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionStats.java
index c8125e8..1cbed8a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionStats.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ExceptionStats.java
@@ -20,7 +20,7 @@ import org.apache.juneau.annotation.*;
 /**
  * Represents an entry in {@link ExceptionStore}.
  */
-@Bean(bpi="hash,count,exceptionClass,message,stackTrace,causedBy", fluentSetters=true)
+@Bean(properties="hash,count,exceptionClass,message,stackTrace,causedBy", fluentSetters=true)
 public class ExceptionStats extends ExceptionInfo implements Comparable<ExceptionStats> {
 	private final AtomicInteger count = new AtomicInteger(0);
 	private transient long timeout = -1;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java
index 598c53a..62cfbf4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/MethodExecStats.java
@@ -25,7 +25,7 @@ import org.apache.juneau.utils.*;
  *
  * Keeps track of number of starts/finishes on tasks and keeps an average run time.
  */
-@Bean(bpi="method,runs,running,errors,minTime,maxTime,avgTime,totalTime,exceptions")
+@Bean(properties="method,runs,running,errors,minTime,maxTime,avgTime,totalTime,exceptions")
 public class MethodExecStats implements Comparable<MethodExecStats> {
 
 	private String method;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
index ec2ecc5..5078ceb 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
@@ -339,74 +339,74 @@ public class OpenApiParserBuilder extends UonParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public OpenApiParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public OpenApiParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public OpenApiParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public OpenApiParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public OpenApiParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public OpenApiParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public OpenApiParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public OpenApiParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public OpenApiParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public OpenApiParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public OpenApiParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public OpenApiParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
index d9e1d5c..adec1b9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
@@ -350,74 +350,74 @@ public class OpenApiSerializerBuilder extends UonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public OpenApiSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public OpenApiSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public OpenApiSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public OpenApiSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public OpenApiSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public OpenApiSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public OpenApiSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public OpenApiSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public OpenApiSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public OpenApiSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public OpenApiSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OpenApiSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public OpenApiSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
index 9b43b54..13f3931 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParserBuilder.java
@@ -254,74 +254,74 @@ public class InputStreamParserBuilder extends ParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public InputStreamParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public InputStreamParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public InputStreamParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public InputStreamParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public InputStreamParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public InputStreamParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public InputStreamParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public InputStreamParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public InputStreamParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public InputStreamParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public InputStreamParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public InputStreamParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public InputStreamParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
index 59c885e..e961944 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserBuilder.java
@@ -502,74 +502,74 @@ public class ParserBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public ParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public ParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public ParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public ParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public ParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public ParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public ParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public ParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public ParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public ParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public ParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public ParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
index ce0a2fb..2a8076d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserGroupBuilder.java
@@ -541,74 +541,74 @@ public class ParserGroupBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public ParserGroupBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public ParserGroupBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public ParserGroupBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public ParserGroupBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public ParserGroupBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public ParserGroupBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public ParserGroupBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public ParserGroupBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public ParserGroupBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public ParserGroupBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public ParserGroupBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ParserGroupBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public ParserGroupBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
index 3fd7485..3af8b76 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParserBuilder.java
@@ -291,74 +291,74 @@ public abstract class ReaderParserBuilder extends ParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public ReaderParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public ReaderParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public ReaderParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public ReaderParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public ReaderParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public ReaderParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public ReaderParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public ReaderParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public ReaderParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public ReaderParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public ReaderParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public ReaderParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public ReaderParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
index 80df196..50d0277 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextParserBuilder.java
@@ -224,74 +224,74 @@ public class PlainTextParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public PlainTextParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public PlainTextParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public PlainTextParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public PlainTextParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public PlainTextParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public PlainTextParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public PlainTextParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public PlainTextParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public PlainTextParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public PlainTextParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public PlainTextParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public PlainTextParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
index 39a4610..9506f57 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
@@ -224,74 +224,74 @@ public class PlainTextSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public PlainTextSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public PlainTextSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public PlainTextSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public PlainTextSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public PlainTextSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public PlainTextSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public PlainTextSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public PlainTextSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public PlainTextSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public PlainTextSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public PlainTextSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public PlainTextSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public PlainTextSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
index a42bc1f..ba4e5db 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/ClassInfo.java
@@ -61,8 +61,10 @@ public final class ClassInfo {
 	final Class<?> c;
 	private ClassInfo proxyFor;
 	private final boolean isParameterizedType;
+	private Boolean isRepeatedAnnotation;
 	private ClassInfo[] interfaces, declaredInterfaces, parents, allParents;
 	private MethodInfo[] publicMethods, declaredMethods, allMethods, allMethodsParentFirst;
+	private MethodInfo repeatedAnnotationMethod;
 	private ConstructorInfo[] publicConstructors, declaredConstructors;
 	private FieldInfo[] publicFields, declaredFields, allFields, allFieldsParentFirst;
 	private int dim = -1;
@@ -1324,16 +1326,20 @@ public final class ClassInfo {
 		Package p = c.getPackage();
 		if (p != null)
 			for (Annotation a : p.getDeclaredAnnotations())
-				m.add(AnnotationInfo.of(p, a));
+				for (Annotation a2 : AnnotationUtils.splitRepeated(a))
+					m.add(AnnotationInfo.of(p, a2));
 		for (ClassInfo ci : getInterfacesParentFirst())
 			for (Annotation a : ci.c.getDeclaredAnnotations())
-				m.add(AnnotationInfo.of(ci, a));
+				for (Annotation a2 : AnnotationUtils.splitRepeated(a))
+					m.add(AnnotationInfo.of(ci, a2));
 		for (ClassInfo ci : getParentsParentFirst())
 			for (Annotation a : ci.c.getDeclaredAnnotations())
-				m.add(AnnotationInfo.of(ci, a));
+				for (Annotation a2 : AnnotationUtils.splitRepeated(a))
+					m.add(AnnotationInfo.of(ci, a2));
 		return m;
 	}
 
+
 	<T extends Annotation> T findAnnotation(Class<T> a, MetaProvider mp) {
 		if (a == null)
 			return null;
@@ -2219,6 +2225,72 @@ public final class ClassInfo {
 		return c != null && c.isEnum();
 	}
 
+	/**
+	 * Returns <jk>true</jk> if this is a repeated annotation class.
+	 *
+	 * <p>
+	 * A repeated annotation has a single <code>value()</code> method that returns an array
+	 * of annotations who themselves are marked with the {@link Repeatable @Repeatable} annotation
+	 * of this class.
+	 *
+	 * @return <jk>true</jk> if this is a repeated annotation class.
+	 */
+	public boolean isRepeatedAnnotation() {
+		if (isRepeatedAnnotation == null) {
+			boolean b = false;
+			MethodInfo mi = getMethod("value");
+			if (mi != null) {
+				ClassInfo rt = mi.getReturnType();
+				if (rt.isArray()) {
+					ClassInfo rct = rt.getComponentType();
+					if (rct.hasAnnotation(Repeatable.class)) {
+						Repeatable r = rct.getLastAnnotation(Repeatable.class) ;
+							b = r.value().equals(c);
+					}
+				}
+			}
+			isRepeatedAnnotation = b;
+		}
+		return isRepeatedAnnotation;
+	}
+
+	/**
+	 * Returns the repeated annotation method on this class.
+	 *
+	 * <p>
+	 * The repeated annotation method is the <code>value()</code> method that returns an array
+	 * of annotations who themselves are marked with the {@link Repeatable @Repeatable} annotation
+	 * of this class.
+	 *
+	 * @return The repeated annotation method on this class, or <jk>null</jk> if it doesn't exist.
+	 */
+	public MethodInfo getRepeatedAnnotationMethod() {
+		if (isRepeatedAnnotation()) {
+			if (repeatedAnnotationMethod == null)
+				repeatedAnnotationMethod = getMethod("value");
+			return repeatedAnnotationMethod;
+		}
+		return null;
+	}
+
+	/**
+	 * Returns <jk>true</jk> if this class is an array.
+	 *
+	 * @return <jk>true</jk> if this class is an array.
+	 */
+	public boolean isArray() {
+		return c != null && c.isArray();
+	}
+
+	/**
+	 * Returns <jk>true</jk> if this class is an annotation.
+	 *
+	 * @return <jk>true</jk> if this class is an annotation.
+	 */
+	public boolean isAnnotation() {
+		return c != null && c.isAnnotation();
+	}
+
 	//-----------------------------------------------------------------------------------------------------------------
 	// Instantiation
 	//-----------------------------------------------------------------------------------------------------------------
@@ -2354,4 +2426,5 @@ public final class ClassInfo {
 	public boolean equals(Object o) {
 		return (o instanceof ClassInfo) && eq(this, (ClassInfo)o, (x,y)->eq(x.t, y.t));
 	}
+
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
index d096b7a..d531555 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
@@ -257,74 +257,74 @@ public class OutputStreamSerializerBuilder extends SerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public OutputStreamSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public OutputStreamSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public OutputStreamSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public OutputStreamSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public OutputStreamSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public OutputStreamSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public OutputStreamSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public OutputStreamSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public OutputStreamSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public OutputStreamSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public OutputStreamSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public OutputStreamSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public OutputStreamSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
index acaa853..42f9dc3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerBuilder.java
@@ -722,74 +722,74 @@ public class SerializerBuilder extends BeanTraverseBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public SerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public SerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public SerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public SerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public SerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public SerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public SerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public SerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public SerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public SerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public SerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public SerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
index 5c4d451..f3db041 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerGroupBuilder.java
@@ -117,9 +117,9 @@ public class SerializerGroupBuilder extends BeanTraverseBuilder {
 	@SuppressWarnings("unchecked")
 	public SerializerGroup build() {
 		List<Serializer> l = new ArrayList<>();
+		PropertyStore ps = getPropertyStore();
 		for (Object s : serializers) {
 			Class<? extends Serializer> c = null;
-			PropertyStore ps = getPropertyStore();
 			if (s instanceof Class) {
 				c = (Class<? extends Serializer>)s;
 				l.add(ContextCache.INSTANCE.create(c, ps));
@@ -679,74 +679,74 @@ public class SerializerGroupBuilder extends BeanTraverseBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public SerializerGroupBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public SerializerGroupBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public SerializerGroupBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public SerializerGroupBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public SerializerGroupBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public SerializerGroupBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public SerializerGroupBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public SerializerGroupBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public SerializerGroupBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public SerializerGroupBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public SerializerGroupBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SerializerGroupBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public SerializerGroupBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
index f9dcb9d..52832de 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializerBuilder.java
@@ -471,74 +471,74 @@ public class WriterSerializerBuilder extends SerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public WriterSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public WriterSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public WriterSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public WriterSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public WriterSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public WriterSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public WriterSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public WriterSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public WriterSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public WriterSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public WriterSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public WriterSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public WriterSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
index 1faf56b..badadb3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/SoapXmlSerializerBuilder.java
@@ -244,74 +244,74 @@ public class SoapXmlSerializerBuilder extends XmlSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public SoapXmlSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public SoapXmlSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public SoapXmlSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public SoapXmlSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public SoapXmlSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public SoapXmlSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public SoapXmlSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public SoapXmlSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public SoapXmlSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public SoapXmlSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public SoapXmlSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public SoapXmlSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public SoapXmlSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
index 85ccb17..7aac3aa 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserBuilder.java
@@ -283,74 +283,74 @@ public class UonParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public UonParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public UonParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public UonParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public UonParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public UonParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public UonParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public UonParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public UonParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public UonParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public UonParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public UonParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public UonParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
index b02e3eb..abc21ef 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializerBuilder.java
@@ -404,74 +404,74 @@ public class UonSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public UonSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public UonSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public UonSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public UonSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public UonSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public UonSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public UonSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public UonSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public UonSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public UonSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public UonSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UonSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public UonSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
index d9e805d..c7740c2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserBuilder.java
@@ -244,74 +244,74 @@ public class UrlEncodingParserBuilder extends UonParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public UrlEncodingParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public UrlEncodingParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public UrlEncodingParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public UrlEncodingParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public UrlEncodingParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public UrlEncodingParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public UrlEncodingParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public UrlEncodingParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public UrlEncodingParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public UrlEncodingParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public UrlEncodingParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public UrlEncodingParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
index 2857729..978be65 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerBuilder.java
@@ -244,74 +244,74 @@ public class UrlEncodingSerializerBuilder extends UonSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public UrlEncodingSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public UrlEncodingSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public UrlEncodingSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public UrlEncodingSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public UrlEncodingSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public UrlEncodingSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public UrlEncodingSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public UrlEncodingSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public UrlEncodingSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public UrlEncodingSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public UrlEncodingSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public UrlEncodingSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public UrlEncodingSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/BeanDiff.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/BeanDiff.java
index 842c065..c5c0084 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/BeanDiff.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/BeanDiff.java
@@ -43,7 +43,7 @@ import org.apache.juneau.marshall.SimpleJson;
  * 	System.<jsf>err</jsf>.println(bf);
  * </p>
  */
-@Bean(bpi="v1,v2")
+@Bean(properties="v1,v2")
 public class BeanDiff {
 
 	private OMap v1 = new OMap(), v2 = new OMap();
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StackTraceInfo.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StackTraceInfo.java
index 6c42b27..2d213ad 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StackTraceInfo.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StackTraceInfo.java
@@ -19,7 +19,7 @@ import org.apache.juneau.annotation.*;
 /**
  * Represents an entry in {@link StackTraceDatabase}.
  */
-@Bean(bpi="exception,hash,count")
+@Bean(properties="exception,hash,count")
 public class StackTraceInfo implements Comparable<StackTraceInfo> {
 	final AtomicInteger count;
 	final long timeout;
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
index 884bed4..0b7c33f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParserBuilder.java
@@ -372,74 +372,74 @@ public class XmlParserBuilder extends ReaderParserBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public XmlParserBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public XmlParserBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public XmlParserBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public XmlParserBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public XmlParserBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public XmlParserBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public XmlParserBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public XmlParserBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public XmlParserBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public XmlParserBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public XmlParserBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlParserBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public XmlParserBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
index 8323a13..12ab6e7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerBuilder.java
@@ -351,74 +351,74 @@ public class XmlSerializerBuilder extends WriterSerializerBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public XmlSerializerBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public XmlSerializerBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public XmlSerializerBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public XmlSerializerBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public XmlSerializerBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public XmlSerializerBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public XmlSerializerBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public XmlSerializerBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public XmlSerializerBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public XmlSerializerBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public XmlSerializerBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public XmlSerializerBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public XmlSerializerBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/Console.java b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/Console.java
index af1c066..4e79dbe 100644
--- a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/Console.java
+++ b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/Console.java
@@ -37,7 +37,7 @@ public class Console {
 	 * @param args Message arguments.
 	 */
 	public static void warning(String msg, Object...args) {
-		System.err.println("[WARNING] " + format(msg, args));
+		System.err.println("[WARNING] " + format(msg, args));  // NOT DEBUG
 		System.err.flush();
 	}
 
@@ -48,7 +48,7 @@ public class Console {
 	 * @param args Message arguments.
 	 */
 	public static void error(String msg, Object...args) {
-		System.err.println("[ERROR] " + format(msg, args));
+		System.err.println("[ERROR] " + format(msg, args));  // NOT DEBUG
 		System.err.flush();
 	}
 
diff --git a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/FragmentTag.java b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/FragmentTag.java
index 4158c12..d49b12b 100644
--- a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/FragmentTag.java
+++ b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/FragmentTag.java
@@ -87,7 +87,7 @@ public class FragmentTag implements Taglet {
 			e.printStackTrace(System.err);
 		}
 		if (s == null)
-			System.err.println("Unknown fragment '"+tag.text()+"'");
+			System.err.println("Unknown fragment '"+tag.text()+"'");  // NOT DEBUG
 		return s == null ? tag.text() : s;
 	}
 
diff --git a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/PropertyTag.java b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/PropertyTag.java
index de08ce1..556d00d 100644
--- a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/PropertyTag.java
+++ b/juneau-doc/src/main/java/org/apache/juneau/doc/internal/PropertyTag.java
@@ -75,7 +75,7 @@ public class PropertyTag implements Taglet {
 	public String toString(Tag tag) {
 		String s = System.getProperty(tag.text());
 		if (s == null)
-			System.err.println("Unknown system property '"+tag.text()+"'");
+			System.err.println("Unknown system property '"+tag.text()+"'");  // NOT DEBUG
 		return s == null ? tag.text() : s;
 	}
 
diff --git a/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/TestUtils.java b/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/TestUtils.java
index 4dd3421..bf01065 100644
--- a/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/TestUtils.java
+++ b/juneau-examples/juneau-examples-rest-jetty-ftest/src/test/java/org/apache/juneau/examples/rest/TestUtils.java
@@ -308,11 +308,11 @@ public class TestUtils {
 	public static final void assertContains(Object value, String...substrings) {
 		for (String substring : substrings)
 			if (! contains(toString(value), substring)) {
-				System.err.println("Text did not contain expected substring: '" + toString(substring) + "'");
-				System.err.println("=== TEXT ===");
-				System.err.println(toString(value));
-				System.err.println("============");
-				throw new ComparisonFailure("Text did not contain expected substring.", toString(substring), toString(value));
+				System.err.println("Text did not contain expected substring: '" + toString(substring) + "'");  // NOT DEBUG
+				System.err.println("=== TEXT ===");  // NOT DEBUG
+				System.err.println(toString(value));  // NOT DEBUG
+				System.err.println("============");  // NOT DEBUG
+				throw new ComparisonFailure("Text did not contain expected substring.", toString(substring), toString(value));  // NOT DEBUG
 			}
 	}
 }
diff --git a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java
index c52421a..678b069 100644
--- a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java
+++ b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/App.java
@@ -42,7 +42,7 @@ public class App {
 			.initializers(new JuneauRestInitializer(App.class))
 			.run(args);
 
-		System.err.println(System.getProperty("server.port"));
+		System.err.println(System.getProperty("server.port"));  // NOT DEBUG
 	}
 
 	/**
diff --git a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
index 49b6cf3..89a387d 100755
--- a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
+++ b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
@@ -227,7 +227,7 @@ public class DirectoryResource extends BasicRestServlet {
 	}
 
 	@Response(description="File or directory details")
-	@Bean(bpi="type,name,size,lastModified,actions,files")
+	@Bean(properties="type,name,size,lastModified,actions,files")
 	public class FileResource {
 		private final File f;
 		private final String path;
diff --git a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
index 86978dc..69564f0 100755
--- a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
+++ b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
@@ -265,7 +265,7 @@ public class LogsResource extends BasicRestServlet {
 	}
 
 	@Response(description="File or directory details")
-	@Bean(bpi="type,name,size,lastModified,actions,files")
+	@Bean(properties="type,name,size,lastModified,actions,files")
 	public static class FileResource {
 		private final File f;
 		private final String path;
diff --git a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
index 84109b3..7e55205 100644
--- a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
+++ b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/TestMicroservice.java
@@ -109,7 +109,7 @@ public class TestMicroservice {
 					new HttpRequestRetryHandler() {
 						@Override
 						public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
-							System.err.println("*** ERROR ***");
+							System.err.println("*** ERROR ***");  // NOT DEBUG
 							TestMicroservice.jettyDump(currentRequest[0], currentResponse[0]);
 							return (executionCount < 3);
 						}
diff --git a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
index 3f2de02..fcd844c 100644
--- a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
+++ b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
@@ -101,7 +101,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
 			iteration.set(i);
 			String s = proxy.setInt3dArray(new int[][][]{{{i},null},null}, i);
 			if (i % 1000 == 0)
-				System.err.println("response="+s);
+				System.err.println("response="+s);  // NOT DEBUG
 			time.set(System.currentTimeMillis());
 		}
 		timer.cancel();
diff --git a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/Console.java b/juneau-releng/juneau-all/src/java/main/FieldSorter.java
similarity index 60%
copy from juneau-doc/src/main/java/org/apache/juneau/doc/internal/Console.java
copy to juneau-releng/juneau-all/src/java/main/FieldSorter.java
index af1c066..81896ff 100644
--- a/juneau-doc/src/main/java/org/apache/juneau/doc/internal/Console.java
+++ b/juneau-releng/juneau-all/src/java/main/FieldSorter.java
@@ -10,51 +10,13 @@
 // * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
 // * specific language governing permissions and limitations under the License.                                              *
 // ***************************************************************************************************************************
-package org.apache.juneau.doc.internal;
+import java.util.*;
+import java.util.stream.*;
 
-import java.text.*;
+public class FieldSorter {
 
-/**
- * Console utilities.
- */
-public class Console {
-
-	/**
-	 * Print a console [INFO] message.
-	 *
-	 * @param msg Message.
-	 * @param args Message arguments.
-	 */
-	public static void info(String msg, Object...args) {
-		System.out.println("[INFO] " + format(msg, args));
-		System.out.flush();
-	}
-
-	/**
-	 * Print a console [WARNING] message.
-	 *
-	 * @param msg Message.
-	 * @param args Message arguments.
-	 */
-	public static void warning(String msg, Object...args) {
-		System.err.println("[WARNING] " + format(msg, args));
-		System.err.flush();
-	}
-
-	/**
-	 * Print a console [ERROR] message.
-	 *
-	 * @param msg Message.
-	 * @param args Message arguments.
-	 */
-	public static void error(String msg, Object...args) {
-		System.err.println("[ERROR] " + format(msg, args));
-		System.err.flush();
-	}
-
-	private static String format(String msg, Object...args) {
-		if (args.length == 0)
-			return msg;
-		return MessageFormat.format(msg, args);
+	public static void main(String[] args) {
+		String in = "properties, p, excludeProperties, x, readOnlyProperties, ro, writeOnlyProperties, wo, example, typeName, typePropertyName";
+		System.err.println(Arrays.asList(in.split("[\\s\\,]+")).stream().sorted().collect(Collectors.joining(", ")));
 	}
 }
diff --git a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
index deea54a..094fe39 100644
--- a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
+++ b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
@@ -155,19 +155,19 @@ public class RestClient_Config_BeanContext_Test {
 
 	@Test
 	public void a04_beanFilters() throws Exception {
-		RestResponse x = client(A2b.class).bpi(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
+		RestResponse x = client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
 		assertEquals(0,x.getBody().as(A4b.class).f2);
 		assertEquals(0,x.getHeader("X").as(A4b.class).f2);
 
-		x = client(A2b.class).bpi(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
+		x = client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
 		assertEquals(0,x.getBody().as(A4b.class).f2);
 		assertEquals(0,x.getHeader("X").as(A4b.class).f2);
 
-		x = client(A2b.class).bpi(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
+		x = client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
 		assertEquals(0,x.getBody().as(A4b.class).f2);
 		assertEquals(0,x.getHeader("X").as(A4b.class).f2);
 
-		x = client(A2b.class).bpi(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
+		x = client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
 		assertEquals(0,x.getBody().as(A4b.class).f2);
 		assertEquals(0,x.getHeader("X").as(A4b.class).f2);
 
@@ -270,25 +270,25 @@ public class RestClient_Config_BeanContext_Test {
 
 	@Test
 	public void a10_bpi() throws Exception {
-		client(A2b.class).bpi(OMap.of("A9","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
-		client(A2b.class).bpi(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
-		client(A2b.class).bpi("A9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
-		client(A2b.class).bpi(A9.class.getName(),"f2").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanProperties(OMap.of("A9","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanProperties(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanProperties("A9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanProperties(A9.class.getName(),"f2").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
 	}
 
 	@Test
 	public void a11_bpro() throws Exception {
 		RestResponse x = null;
 
-		x = client(A2b.class).bpro(OMap.of("09","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
+		x = client(A2b.class).beanPropertiesReadOnly(OMap.of("09","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
 		assertEquals("1/0",x.getBody().as(A9.class).toString());
 		assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
 
-		x = client(A2b.class).bpro(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
+		x = client(A2b.class).beanPropertiesReadOnly(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
 		assertEquals("1/0",x.getBody().as(A9.class).toString());
 		assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
 
-		x = client(A2b.class).bpro("O9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
+		x = client(A2b.class).beanPropertiesReadOnly("O9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
 		assertEquals("1/0",x.getBody().as(A9.class).toString());
 		assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
 	}
@@ -297,25 +297,25 @@ public class RestClient_Config_BeanContext_Test {
 	public void a12_bpwo() throws Exception {
 		RestResponse x = null;
 
-		x = client(A2b.class).bpwo(OMap.of("A9","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
+		x = client(A2b.class).beanPropertiesWriteOnly(OMap.of("A9","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
 		assertEquals("1/0",x.getBody().as(A9.class).toString());
 		assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
 
-		x = client(A2b.class).bpwo(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
+		x = client(A2b.class).beanPropertiesWriteOnly(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
 		assertEquals("1/0",x.getBody().as(A9.class).toString());
 		assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
 
-		x = client(A2b.class).bpwo("A9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
+		x = client(A2b.class).beanPropertiesWriteOnly("A9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
 		assertEquals("1/0",x.getBody().as(A9.class).toString());
 		assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
 	}
 
 	@Test
 	public void a13_bpx() throws Exception {
-		client(A2b.class).bpx(OMap.of("A9","f1")).build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
-		client(A2b.class).bpx(A9.class,"f1").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
-		client(A2b.class).bpx("A9","f1").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
-		client(A2b.class).bpx(A9.class.getName(),"f1").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanPropertiesExcludes(OMap.of("A9","f1")).build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanPropertiesExcludes(A9.class,"f1").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanPropertiesExcludes("A9","f1").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
+		client(A2b.class).beanPropertiesExcludes(A9.class.getName(),"f1").build().post("/test",A9.get()).header("X",A9.get()).run().assertBody().is("{f2:2}").assertStringHeader("X").is("f2=2");
 	}
 
 	public static class A14 {
diff --git a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index 8f25e7e..a14c2c0 100644
--- a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -4807,74 +4807,74 @@ public class RestClientBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public RestClientBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public RestClientBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public RestClientBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public RestClientBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public RestClientBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public RestClientBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public RestClientBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public RestClientBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public RestClientBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public RestClientBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public RestClientBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestClientBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public RestClientBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
index 9151972..a7cb3b5 100644
--- a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
+++ b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockRestClientBuilder.java
@@ -385,74 +385,74 @@ public class MockRestClientBuilder extends RestClientBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public MockRestClientBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public MockRestClientBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public MockRestClientBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public MockRestClientBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public MockRestClientBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public MockRestClientBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public MockRestClientBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public MockRestClientBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public MockRestClientBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public MockRestClientBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public MockRestClientBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public MockRestClientBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public MockRestClientBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethod_BeanConfig_Test.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethod_BeanConfig_Test.java
index fd43c95..e365f46 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethod_BeanConfig_Test.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation/RestMethod_BeanConfig_Test.java
@@ -30,17 +30,17 @@ public class RestMethod_BeanConfig_Test {
 
 	public static class A1 extends BasicRestServlet {
 		@RestMethod
-		@BeanConfig(bpi="X1: a,_b")
+		@Bean(onClass=X1.class, properties="a,_b")
 		public Object a() throws Exception {
 			return new X1().init();
 		}
 		@RestMethod
-		@BeanConfig(bpi="X1: a")
+		@Bean(onClass=X1.class, p="a")
 		public Object b() throws Exception {
 			return new X1().init();
 		}
 		@RestMethod
-		@BeanConfig(bpi="X1: _b")
+		@Bean(onClass=X1.class, p="_b")
 		public Object c() throws Exception {
 			return new X1().init();
 		}
@@ -72,17 +72,17 @@ public class RestMethod_BeanConfig_Test {
 
 	public static class A2 extends BasicRestServlet {
 		@RestMethod
-		@BeanConfig(bpx="X1: a,_b")
+		@Bean(on="X1", excludeProperties="a,_b")
 		public Object a() throws Exception {
 			return new X1().init();
 		}
 		@RestMethod
-		@BeanConfig(bpx="X1: a")
+		@Bean(on="X1", xp="a")
 		public Object b() throws Exception {
 			return new X1().init();
 		}
 		@RestMethod
-		@BeanConfig(bpx="X1: _b")
+		@Bean(on="X1", xp="_b")
 		public Object c() throws Exception {
 			return new X1().init();
 		}
@@ -114,17 +114,17 @@ public class RestMethod_BeanConfig_Test {
 
 	public static class A3 extends BasicRestServlet {
 		@RestMethod
-		@BeanConfig(bpi="X2: a,_b")
+		@Bean(onClass=X2.class, p="a,_b")
 		public Object a() throws Exception {
 			return new X2().init();
 		}
 		@RestMethod
-		@BeanConfig(bpi="X2: a")
+		@Bean(onClass=X2.class, p="a")
 		public Object b() throws Exception {
 			return new X2().init();
 		}
 		@RestMethod
-		@BeanConfig(bpi="X2: _b")
+		@Bean(onClass=X2.class, p="_b")
 		public Object c() throws Exception {
 			return new X2().init();
 		}
@@ -156,17 +156,17 @@ public class RestMethod_BeanConfig_Test {
 
 	public static class A4 extends BasicRestServlet {
 		@RestMethod
-		@BeanConfig(bpx="X2: a,_b")
+		@Bean(onClass=X2.class, xp="a,_b")
 		public Object a() throws Exception {
 			return new X2().init();
 		}
 		@RestMethod
-		@BeanConfig(bpx="X2: a")
+		@Bean(onClass=X2.class, xp="a")
 		public Object b() throws Exception {
 			return new X2().init();
 		}
 		@RestMethod
-		@BeanConfig(bpx="X2: _b")
+		@Bean(onClass=X2.class, xp="_b")
 		public Object c() throws Exception {
 			return new X2().init();
 		}
@@ -198,7 +198,7 @@ public class RestMethod_BeanConfig_Test {
 
 	public static class A5 extends BasicRestServlet {
 		@RestMethod
-		@BeanConfig(bpi="*: a")
+		@Bean(on="*", p="a")
 		public Object a() throws Exception {
 			return new X1().init();
 		}
@@ -220,7 +220,7 @@ public class RestMethod_BeanConfig_Test {
 
 	public static class A6 extends BasicRestServlet {
 		@RestMethod
-		@BeanConfig(bpi="org.apache.juneau.rest.annotation.RestMethod_BeanConfig_Test$X1: a")
+		@Bean(on="org.apache.juneau.rest.annotation.RestMethod_BeanConfig_Test$X1", p="a")
 		public Object a() throws Exception {
 			return new X1().init();
 		}
@@ -242,13 +242,13 @@ public class RestMethod_BeanConfig_Test {
 
 	public static class A7 extends BasicRestServlet {
 		@RestMethod
-		@BeanConfig(bpi="MyBean: a")
+		@Bean(on="MyBean", p="a")
 		public Object a() throws Exception {
 			// Should not match.
 			return new X1().init();
 		}
 		@RestMethod
-		@BeanConfig(bpi="MyBean*: a")
+		@Bean(on="MyBean", p="a")
 		public Object b() throws Exception {
 			// Should not match.  We don't support meta-matches in class names.
 			return new X1().init();
@@ -285,7 +285,7 @@ public class RestMethod_BeanConfig_Test {
 		}
 	}
 
-	@Bean(bpi="_b,a")
+	@Bean(properties="_b,a")
 	public static class X2 {
 		public int a;
 		@Beanp("_b") public String b;
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 7ed6af2..2c3118b 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -2952,7 +2952,7 @@ public class RestContext extends BeanContext {
 	 * 	<li><b>Methods:</b>
 	 * 		<ul>
 	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContextBuilder#property(String,Object)}
-	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContextBuilder#properties(Map)}
+	 * 			<li class='jm'>{@link org.apache.juneau.rest.RestContextBuilder#beanProperties(Map)}
 	 * 		</ul>
 	 * </ul>
 	 *
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 266b097..b6feefe 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -2117,7 +2117,7 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 	 * @return This object (for method chaining).
 	 */
 	@FluentSetter
-	public RestContextBuilder properties(Map<String,Object> values) {
+	public RestContextBuilder restProperties(Map<String,Object> values) {
 		return putAllTo(REST_properties, values);
 	}
 
@@ -2436,74 +2436,74 @@ public class RestContextBuilder extends BeanContextBuilder implements ServletCon
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public RestContextBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public RestContextBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public RestContextBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public RestContextBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public RestContextBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public RestContextBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public RestContextBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public RestContextBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public RestContextBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public RestContextBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public RestContextBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestContextBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public RestContextBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextStats.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextStats.java
index 3ea0569..a1148f9 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextStats.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextStats.java
@@ -22,7 +22,7 @@ import org.apache.juneau.transforms.*;
 /**
  * A snapshot of execution statistics for REST resource classes.
  */
-@Bean(bpi="startTime,upTime,methodStats")
+@Bean(properties="startTime,upTime,methodStats")
 public class RestContextStats {
 	private final Instant startTime;
 	private final List<MethodExecStats> methodStats;
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java
index 6fde4da..a100d98 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMethodContextBuilder.java
@@ -248,74 +248,74 @@ public class RestMethodContextBuilder extends BeanContextBuilder {
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpi(Map<String,Object> values) {
-		super.bpi(values);
+	public RestMethodContextBuilder beanProperties(Map<String,Object> values) {
+		super.beanProperties(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpi(Class<?> beanClass, String properties) {
-		super.bpi(beanClass, properties);
+	public RestMethodContextBuilder beanProperties(Class<?> beanClass, String properties) {
+		super.beanProperties(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpi(String beanClassName, String properties) {
-		super.bpi(beanClassName, properties);
+	public RestMethodContextBuilder beanProperties(String beanClassName, String properties) {
+		super.beanProperties(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpro(Map<String,Object> values) {
-		super.bpro(values);
+	public RestMethodContextBuilder beanPropertiesReadOnly(Map<String,Object> values) {
+		super.beanPropertiesReadOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpro(Class<?> beanClass, String properties) {
-		super.bpro(beanClass, properties);
+	public RestMethodContextBuilder beanPropertiesReadOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesReadOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpro(String beanClassName, String properties) {
-		super.bpro(beanClassName, properties);
+	public RestMethodContextBuilder beanPropertiesReadOnly(String beanClassName, String properties) {
+		super.beanPropertiesReadOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpwo(Map<String,Object> values) {
-		super.bpwo(values);
+	public RestMethodContextBuilder beanPropertiesWriteOnly(Map<String,Object> values) {
+		super.beanPropertiesWriteOnly(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpwo(Class<?> beanClass, String properties) {
-		super.bpwo(beanClass, properties);
+	public RestMethodContextBuilder beanPropertiesWriteOnly(Class<?> beanClass, String properties) {
+		super.beanPropertiesWriteOnly(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpwo(String beanClassName, String properties) {
-		super.bpwo(beanClassName, properties);
+	public RestMethodContextBuilder beanPropertiesWriteOnly(String beanClassName, String properties) {
+		super.beanPropertiesWriteOnly(beanClassName, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpx(Map<String,Object> values) {
-		super.bpx(values);
+	public RestMethodContextBuilder beanPropertiesExcludes(Map<String,Object> values) {
+		super.beanPropertiesExcludes(values);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpx(Class<?> beanClass, String properties) {
-		super.bpx(beanClass, properties);
+	public RestMethodContextBuilder beanPropertiesExcludes(Class<?> beanClass, String properties) {
+		super.beanPropertiesExcludes(beanClass, properties);
 		return this;
 	}
 
 	@Override /* GENERATED - BeanContextBuilder */
-	public RestMethodContextBuilder bpx(String beanClassName, String properties) {
-		super.bpx(beanClassName, properties);
+	public RestMethodContextBuilder beanPropertiesExcludes(String beanClassName, String properties) {
+		super.beanPropertiesExcludes(beanClassName, properties);
 		return this;
 	}
 
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StatusStats.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StatusStats.java
index d42050a..ecef4d7 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StatusStats.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/StatusStats.java
@@ -20,7 +20,7 @@ import org.apache.juneau.annotation.*;
  * TODO
  *
  */
-@Bean(bpi="resource,methods")
+@Bean(properties="resource,methods")
 @SuppressWarnings("javadoc")
 public class StatusStats implements Comparable<StatusStats> {
 
@@ -52,7 +52,7 @@ public class StatusStats implements Comparable<StatusStats> {
 		return new TreeSet<>(methods.values());
 	}
 
-	@Bean(bpi="method,codes")
+	@Bean(properties="method,codes")
 	public static class Method implements Comparable<Method> {
 		private java.lang.reflect.Method method;
 		private Set<Status> codes = new TreeSet<>();
@@ -72,7 +72,7 @@ public class StatusStats implements Comparable<StatusStats> {
 		}
 	}
 
-	@Bean(bpi="code,count")
+	@Bean(properties="code,count")
 	public static class Status implements Comparable<Status> {
 		private int code;
 		private int count;
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/BeanDescription.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/BeanDescription.java
index 2c95371..4b41aa4 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/BeanDescription.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/BeanDescription.java
@@ -29,7 +29,7 @@ import org.apache.juneau.annotation.*;
  * 	<li class='link'>{@doc RestmPredefinedHelperBeans}
  * </ul>
  */
-@Bean(bpi="type,properties")
+@Bean(properties="type,properties")
 public final class BeanDescription {
 
 	/** The bean class type. */
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/ResourceDescription.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/ResourceDescription.java
index 6d60558..429564d 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/ResourceDescription.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/helper/ResourceDescription.java
@@ -34,7 +34,7 @@ import org.apache.juneau.jsonschema.annotation.Schema;
  * 	<li class='link'>{@doc RestmPredefinedHelperBeans}
  * </ul>
  */
-@Bean(bpi="name,description", fluentSetters=true)
+@Bean(properties="name,description", fluentSetters=true)
 @Response(schema=@Schema(ignore=true))
 public final class ResourceDescription implements Comparable<ResourceDescription> {