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 bbe9bfd..d0f26b8 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
@@ -75,7 +75,7 @@
 	}
 
 	/** Class with explicitly specified properties */
-	@BeanConfig(annotateBean=@Bean(on="Person1a",bpi="age,name"))
+	@BeanConfig(applyBean=@Bean(on="Person1a",bpi="age,name"))
 	public static class Person1a {
 		public int age;
 		private String name;
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 7b79cbd..cf82a2e 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
@@ -446,7 +446,7 @@
 	}
 
 
-	@BeanConfig(annotateBean=@Bean(on="ReadOnlyPerson2",bpi="name,age"),annotateBeanc=@Beanc(on="ReadOnlyPerson2(String,int)",properties="name,age"))
+	@BeanConfig(applyBean=@Bean(on="ReadOnlyPerson2",bpi="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/BeanFilterTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanFilterTest.java
index c1d086a..24e304b 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanFilterTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/BeanFilterTest.java
@@ -111,7 +111,7 @@
 	}
 
 	@BeanConfig(
-		annotateBean={
+		applyBean={
 			@Bean(on="E", dictionary={E1.class, E2.class}),
 			@Bean(on="E1", typeName="E1"),
 			@Bean(on="E2", typeName="E2"),
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 8ede0fb..9842600 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
@@ -60,10 +60,10 @@
 	}
 
 	@BeanConfig(
-		annotateBean={
+		applyBean={
 			@Bean(on="B1", bpi="f1"),
 		},
-		annotateBeanp={
+		applyBeanp={
 			@Beanp(on="B1.f2", value="f2")
 		}
 	)
@@ -110,10 +110,10 @@
 	}
 
 	@BeanConfig(
-		annotateBean={
+		applyBean={
 			@Bean(on="B2", bpi="f1")
 		},
-		annotateBeanp={
+		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 1f45b27..dcab6e1 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
@@ -553,7 +553,7 @@
 	}
 
 	@BeanConfig(
-		annotateBean={
+		applyBean={
 			@Bean(on="D2c", typeName="D2")
 		}
 	)
@@ -1140,7 +1140,7 @@
 		assertEquals(6, b.bingBooURL);
 	}
 
-	@BeanConfig(annotateBean=@Bean(on="P1c", propertyNamer=PropertyNamerDLC.class))
+	@BeanConfig(applyBean=@Bean(on="P1c", propertyNamer=PropertyNamerDLC.class))
 	public static class P1c {
 		public int foo, barBaz, bingBooURL;
 	}
@@ -1878,7 +1878,7 @@
 		assertEquals("b(setter)", t.b);
 	}
 
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="Uc.getB,Uc.c,Uc.getD,Uc.setD"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="Uc.getB,Uc.c,Uc.getD,Uc.setD"))
 	public static class Uc {
 		public String a, b;
 
@@ -1941,7 +1941,7 @@
 		assertEquals("{a3:'3',a4:'4',a5:'5',a6:'6'}", ws.toString(new V3c()));
 	}
 
-	@BeanConfig(annotateBean=@Bean(on="V3c", stopClass=Vc.class))
+	@BeanConfig(applyBean=@Bean(on="V3c", stopClass=Vc.class))
 	public static class Vc {
 		public String a1="1", a2="2";
 	}
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
index 0a033b4..d9f332c 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/PropertyStoreTest.java
@@ -1874,9 +1874,9 @@
 		assertTrue(s2.getPropertyStore().equals(s3.getPropertyStore()));
 	}
 
-	@HtmlConfig(annotateHtml={@Html(on="B1", format=HtmlFormat.XML)})
+	@HtmlConfig(applyHtml={@Html(on="B1", format=HtmlFormat.XML)})
 	public static class B1 {}
-	@HtmlConfig(annotateHtml={@Html(on="B2", format=HtmlFormat.HTML)})
+	@HtmlConfig(applyHtml={@Html(on="B2", format=HtmlFormat.HTML)})
 	public static class B2 {}
 
 	//-------------------------------------------------------------------------------------------------------------------
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 e6cd5fd..463e3c0 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
@@ -90,8 +90,8 @@
 	}
 
 	@BeanConfig(
-		annotateBean=@Bean(on="Bc", bpro="f1", bpwo="f2"),
-		annotateBeanp={
+		applyBean=@Bean(on="Bc", bpro="f1", bpwo="f2"),
+		applyBeanp={
 			@Beanp(on="Bc.f1", ro="true"),
 			@Beanp(on="Bc.f2", wo="true")
 		}
@@ -246,7 +246,7 @@
 		assertEquals(0, x.f2);
 	}
 
-	@BeanConfig(annotateBean=@Bean(on="Dc",bpro="*"))
+	@BeanConfig(applyBean=@Bean(on="Dc",bpro="*"))
 	public static class Dc {
 		public int f1;
 		public int f2;
@@ -300,7 +300,7 @@
 		assertEquals(2, x.f2);
 	}
 
-	@BeanConfig(annotateBean=@Bean(on="Ec", bpwo="*"))
+	@BeanConfig(applyBean=@Bean(on="Ec", bpwo="*"))
 	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 ae9810b..6e206e8 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
@@ -939,7 +939,7 @@
 		roundTrip(m, LinkedHashMap.class, String.class, L2.class);
 	}
 
-	@JsonConfig(annotateJson=@Json(on="L2",wrapperAttr="foo"))
+	@JsonConfig(applyJson=@Json(on="L2",wrapperAttr="foo"))
 	public static class L2 {
 		public int f1;
 
@@ -995,7 +995,7 @@
 		roundTrip(m, LinkedHashMap.class, String.class, M2.class);
 	}
 
-	@JsonConfig(annotateJson=@Json(on="M2",wrapperAttr="foo"))
+	@JsonConfig(applyJson=@Json(on="M2",wrapperAttr="foo"))
 	public static class M2 {
 		int f1;
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RountTripBeansWithBuilders.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RountTripBeansWithBuilders.java
index 446e9d6..4988b69 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RountTripBeansWithBuilders.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/a/rttests/RountTripBeansWithBuilders.java
@@ -81,7 +81,7 @@
 		assertObjectEquals("{f1:1}", a);
 	}
 
-	@BeanConfig(annotateBean=@Bean(on="Builder", fluentSetters=true))
+	@BeanConfig(applyBean=@Bean(on="Builder", fluentSetters=true))
 	public static class Ac {
 		private final int f1;
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanIgnoreTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanIgnoreTest.java
index 1893314..cae7ec5 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanIgnoreTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/annotation/BeanIgnoreTest.java
@@ -44,7 +44,7 @@
 	}
 
 	@BeanConfig(
-		annotateBeanIgnore={
+		applyBeanIgnore={
 			@BeanIgnore(on="Ac.getB"),
 			@BeanIgnore(on="Ac.d")
 		}
@@ -96,7 +96,7 @@
 		assertObjectEquals("{f2:2,f3:'xxx',f4:'xxx'}", new B());
 	}
 
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="B1c"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="B1c"))
 	public static class B1c {
 		public int f = 1;
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
index 605e3a2..f8b8139 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
@@ -3369,8 +3369,8 @@
 		}
 	}
 
-	@HtmlConfig(annotateHtml={@Html(on="BeanWithWhitespaceTextFields2",format=XML)})
-	@XmlConfig(annotateXml={@Xml(on="BeanWithWhitespaceTextFields2.a",format=XmlFormat.TEXT)})
+	@HtmlConfig(applyHtml={@Html(on="BeanWithWhitespaceTextFields2",format=XML)})
+	@XmlConfig(applyXml={@Xml(on="BeanWithWhitespaceTextFields2.a",format=XmlFormat.TEXT)})
 	public static class BeanWithWhitespaceTextFields2 {
 		public String a;
 
@@ -3380,8 +3380,8 @@
 		}
 	}
 
-	@HtmlConfig(annotateHtml={@Html(on="BeanWithWhitespaceTextPwsFields2",format=XML)})
-	@XmlConfig(annotateXml={@Xml(on="BeanWithWhitespaceTextPwsFields2.a",format=XmlFormat.TEXT_PWS)})
+	@HtmlConfig(applyHtml={@Html(on="BeanWithWhitespaceTextPwsFields2",format=XML)})
+	@XmlConfig(applyXml={@Xml(on="BeanWithWhitespaceTextPwsFields2.a",format=XmlFormat.TEXT_PWS)})
 	public static class BeanWithWhitespaceTextPwsFields2 {
 		public String a;
 
@@ -3391,8 +3391,8 @@
 		}
 	}
 
-	@HtmlConfig(annotateHtml={@Html(on="BeanWithWhitespaceMixedFields2",format=XML)})
-	@XmlConfig(annotateXml={@Xml(on="BeanWithWhitespaceMixedFields2.a",format=XmlFormat.MIXED)})
+	@HtmlConfig(applyHtml={@Html(on="BeanWithWhitespaceMixedFields2",format=XML)})
+	@XmlConfig(applyXml={@Xml(on="BeanWithWhitespaceMixedFields2.a",format=XmlFormat.MIXED)})
 	public static class BeanWithWhitespaceMixedFields2 {
 		public String[] a;
 
@@ -3402,8 +3402,8 @@
 		}
 	}
 
-	@HtmlConfig(annotateHtml={@Html(on="BeanWithWhitespaceMixedPwsFields2",format=XML)})
-	@XmlConfig(annotateXml={@Xml(on="BeanWithWhitespaceMixedPwsFields2.a",format=XmlFormat.MIXED_PWS)})
+	@HtmlConfig(applyHtml={@Html(on="BeanWithWhitespaceMixedPwsFields2",format=XML)})
+	@XmlConfig(applyXml={@Xml(on="BeanWithWhitespaceMixedPwsFields2.a",format=XmlFormat.MIXED_PWS)})
 	@Html(format=XML)
 	public static class BeanWithWhitespaceMixedPwsFields2 {
 		public String[] a;
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java
index 811545d..127c552 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/html/HtmlTest.java
@@ -253,7 +253,7 @@
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><f1></td></tr></table>", r);
 	}
 
-	@HtmlConfig(annotateHtml=@Html(on="B3", format=PLAIN_TEXT))
+	@HtmlConfig(applyHtml=@Html(on="B3", format=PLAIN_TEXT))
 	public static class B3 {
 		public String f1 = "<f1>";
 		@Override /* Object */
@@ -262,7 +262,7 @@
 		}
 	}
 
-	@HtmlConfig(annotateHtml=@Html(on="B4.f1", format=PLAIN_TEXT))
+	@HtmlConfig(applyHtml=@Html(on="B4.f1", format=PLAIN_TEXT))
 	public static class B4 {
 		public String f1 = "<f1>";
 	}
@@ -310,7 +310,7 @@
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td>&lt;f1&gt;</td></tr></table>", r);
 	}
 
-	@HtmlConfig(annotateHtml=@Html(on="C3,C4.f1",format=XML))
+	@HtmlConfig(applyHtml=@Html(on="C3,C4.f1",format=XML))
 	public static class C3 {
 		public String f1 = "<f1>";
 	}
@@ -351,6 +351,6 @@
 		assertEquals("<ul><li><table><tr><td>foo</td><td>bar</td></tr></table></li></ul>", r);
 	}
 
-	@HtmlConfig(annotateHtml=@Html(on="org.apache.juneau.html.HtmlTest$MyMap2", noTables=true, noTableHeaders=true))
+	@HtmlConfig(applyHtml=@Html(on="org.apache.juneau.html.HtmlTest$MyMap2", noTables=true, noTableHeaders=true))
 	public static class MyMap2 extends LinkedHashMap<String,String> {}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java
index 4435545..f50d0a7 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/json/JsonTest.java
@@ -245,7 +245,7 @@
 		assertEquals(1, m.get("bar").f1);
 	}
 
-	@JsonConfig(annotateJson=@Json(on="A2",wrapperAttr="foo"))
+	@JsonConfig(applyJson=@Json(on="A2",wrapperAttr="foo"))
 	public static class A2 {
 		public int f1;
 
@@ -323,7 +323,7 @@
 		assertEquals(1, m.get("bar").f1);
 	}
 
-	@JsonConfig(annotateJson=@Json(on="B2",wrapperAttr="foo"))
+	@JsonConfig(applyJson=@Json(on="B2",wrapperAttr="foo"))
 	public static class B2 {
 		int f1;
 
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
index bb054dc..c79dccd 100755
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorTest.java
@@ -1148,7 +1148,7 @@
 		assertObjectEquals("{description:'baz',format:'bar',type:'foo','x-example':'{f1:123}',properties:{f1:{type:'integer',format:'int32'}}}", s.getSchema(A1a.class));
 	}
 
-	@JsonSchemaConfig(annotateSchema=@Schema(on="A1a",type="foo",format="bar",description="baz",example="{f1:123}"))
+	@JsonSchemaConfig(applySchema=@Schema(on="A1a",type="foo",format="bar",description="baz",example="{f1:123}"))
 	public static class A1a {
 		public int f1;
 	}
@@ -1170,7 +1170,7 @@
 		assertObjectEquals("{type:'object',properties:{f1:{description:'baz',format:'bar',type:'foo','x-example':'123'}}}", s.getSchema(A2a.class));
 	}
 
-	@JsonSchemaConfig(annotateSchema=@Schema(on="A2a.f1",type="foo",format="bar",description="baz",example="123"))
+	@JsonSchemaConfig(applySchema=@Schema(on="A2a.f1",type="foo",format="bar",description="baz",example="123"))
 	public static class A2a {
 		public int f1;
 	}
@@ -1194,7 +1194,7 @@
 		assertObjectEquals("{type:'object',properties:{f1:{description:'baz',format:'bar',type:'foo','x-example':'123'}}}", s.getSchema(A3a.class));
 	}
 
-	@JsonSchemaConfig(annotateSchema=@Schema(on="A3a.getF1",type="foo",format="bar",description="baz",example="123"))
+	@JsonSchemaConfig(applySchema=@Schema(on="A3a.getF1",type="foo",format="bar",description="baz",example="123"))
 	public static class A3a {
 		public int getF1() {
 			return 123;
@@ -1222,7 +1222,7 @@
 		assertObjectEquals("{type:'object',properties:{f1:{description:'baz',format:'bar',type:'foo','x-example':'123'}}}", s.getSchema(A4a.class));
 	}
 
-	@JsonSchemaConfig(annotateSchema=@Schema(on="A4a.setF1",type="foo",format="bar",description="baz",example="123"))
+	@JsonSchemaConfig(applySchema=@Schema(on="A4a.setF1",type="foo",format="bar",description="baz",example="123"))
 	public static class A4a {
 		public int getF1() {
 			return 123;
@@ -1258,6 +1258,6 @@
 		assertObjectEquals("{type:'array',items:{type:'array',items:{description:'baz',format:'bar',type:'foo','x-example':'123'}}}", s.getSchema(SimpleBean[][].class));
 	}
 
-	@JsonSchemaConfig(annotateSchema=@Schema(on="SwapWithAnnotation2", type="foo",format="bar",description="baz",example="123"))
+	@JsonSchemaConfig(applySchema=@Schema(on="SwapWithAnnotation2", type="foo",format="bar",description="baz",example="123"))
 	public static class SwapWithAnnotation2 extends PojoSwap<SimpleBean,Integer> {}
 }
\ No newline at end of file
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java
index a5c51d7..ab4840d 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoListSwapTest.java
@@ -194,7 +194,7 @@
 		assertNull(find(D02.D02A.class));
 	}
 
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="D01c"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="D01c"))
 	public static class D01c {
 		public List<String> toList() {
 			return STRINGLIST;
@@ -228,7 +228,7 @@
 			return STRINGLIST;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="E01c.toList"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="E01c.toList"))
 	public static class E01c {
 		public List<String> toList() {
 			return STRINGLIST;
@@ -299,7 +299,7 @@
 			return null;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="F01c.create"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="F01c.create"))
 	public static class F01c {
 		public List<String> toList() {
 			return STRINGLIST;
@@ -397,7 +397,7 @@
 		}
 	}
 
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="G01c(List)"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="G01c(List)"))
 	public static class G01c {
 		public G01c(List<String> o) {}
 		public List<String> toList() {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java
index 2761e11..6fd082e 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoMapSwapTest.java
@@ -176,7 +176,7 @@
 			return STRINGMAP;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="D01c"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="D01c"))
 	public static class D01c {
 		public Map<String,String> toMap() {
 			return STRINGMAP;
@@ -215,7 +215,7 @@
 			return STRINGMAP;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="E01c.toMap"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="E01c.toMap"))
 	public static class E01c {
 		public Map<String,String> toMap() {
 			return STRINGMAP;
@@ -286,7 +286,7 @@
 			return null;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="F01c.create(Map)"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="F01c.create(Map)"))
 	public static class F01c {
 		public Map<String,String> toMap() {
 			return STRINGMAP;
@@ -384,7 +384,7 @@
 		}
 	}
 
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="G01c(Map)"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="G01c(Map)"))
 	public static class G01c {
 		public G01c(Map<String,String> o) {}
 		public Map<String,String> toMap() {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoNumberSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoNumberSwapTest.java
index 099a644..b44f933 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoNumberSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoNumberSwapTest.java
@@ -602,7 +602,7 @@
 			return 1;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="D01c"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="D01c"))
 	public static class D01c {
 		public Integer toInteger() {
 			return 1;
@@ -653,7 +653,7 @@
 			return 1;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="E01c.toInteger"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="E01c.toInteger"))
 	public static class E01c {
 		public Integer toInteger() {
 			return 1;
@@ -724,7 +724,7 @@
 			return null;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="F01c.create(java.lang.Integer)"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="F01c.create(java.lang.Integer)"))
 	public static class F01c {
 		public Integer toInteger() {
 			return 1;
@@ -822,7 +822,7 @@
 		}
 	}
 
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="G01c(java.lang.Integer)"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="G01c(java.lang.Integer)"))
 	public static class G01c {
 		public G01c(Integer o) {}
 		public Integer toInteger() {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java
index 6fa75d9..899b94e 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/transform/AutoObjectSwapTest.java
@@ -179,7 +179,7 @@
 			return STRINGMAP;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="D01c"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="D01c"))
 	public static class D01c {
 		public Map<String,String> swap() {
 			return STRINGMAP;
@@ -218,7 +218,7 @@
 			return STRINGMAP;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="E01c.swap"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="E01c.swap"))
 	public static class E01c {
 		public Map<String,String> swap() {
 			return STRINGMAP;
@@ -279,7 +279,7 @@
 			return null;
 		}
 	}
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="F01c.create(java.util.Map)"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="F01c.create(java.util.Map)"))
 	public static class F01c {
 		public Map<String,String> swap() {
 			return STRINGMAP;
@@ -377,7 +377,7 @@
 		}
 	}
 
-	@BeanConfig(annotateBeanIgnore=@BeanIgnore(on="G01c(Map)"))
+	@BeanConfig(applyBeanIgnore=@BeanIgnore(on="G01c(Map)"))
 	public static class G01c {
 		public G01c(Map<String,String> o) {}
 		public Map<String,String> swap() {
diff --git a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/DTOs2.java b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/DTOs2.java
index 2ca047c..d41aec5 100644
--- a/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/DTOs2.java
+++ b/juneau-core/juneau-core-utest/src/test/java/org/apache/juneau/urlencoding/DTOs2.java
@@ -20,8 +20,8 @@
 
 public class DTOs2 {
 
-	@BeanConfig(annotateBean={@Bean(on="A,B,C",sort=true)})
-	@UrlEncodingConfig(annotateUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
+	@BeanConfig(applyBean={@Bean(on="A,B,C",sort=true)})
+	@UrlEncodingConfig(applyUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
 	public static class Annotations {}
 
 	public static class A {
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java
index 25309b8..f7f2973 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java
@@ -70,7 +70,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link RdfConfig#annotateRdf()}.
+	 * Used in conjunction with the {@link RdfConfig#applyRdf()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfig.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfig.java
index e49da2b..16aed62 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfig.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfig.java
@@ -49,17 +49,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link Rdf @Rdf} annotations to classes/methods.
+	 * Dynamically applies {@link Rdf @Rdf} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Rdf#on() @Rdf.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Rdf#on() @Rdf.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Rdf[] annotateRdf() default {};
+	Rdf[] applyRdf() default {};
 
 	/**
 	 * Configuration property:  RDF language.
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigApply.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigApply.java
index 4952524..a42bf08 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigApply.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfConfigApply.java
@@ -109,7 +109,7 @@
 		if (! a.trimWhitespace().isEmpty())
 			psb.set(RDF_trimWhitespace, bool(a.trimWhitespace()));
 
-		if (a.annotateRdf().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateRdf());
+		if (a.applyRdf().length > 0)
+			psb.addTo(BEAN_annotations, a.applyRdf());
 	}
 }
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 b17fd38..05a688c 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
@@ -162,8 +162,8 @@
 	 * 	<li><b>Default:</b>  Empty list.
 	 * 	<li><b>Annotations:</b>
 	 * 		<ul>
-	 * 			<li class='ja'>{@link org.apache.juneau.annotation.BeanConfig#annotateBean()}
-	 * 			<li class='ja'>{@link org.apache.juneau.annotation.BeanConfig#annotateBeanp()}
+	 * 			<li class='ja'>{@link org.apache.juneau.annotation.BeanConfig#applyBean()}
+	 * 			<li class='ja'>{@link org.apache.juneau.annotation.BeanConfig#applyBeanp()}
 	 * 		</ul>
 	 * 	<li><b>Methods:</b>
 	 * 		<ul>
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 ac8f525..7dd1b21 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
@@ -230,7 +230,7 @@
 	 * Dynamically apply this annotation to the specified classes.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link BeanConfig#annotateBean()}.
+	 * Used in conjunction with the {@link BeanConfig#applyBean()}.
 	 * It is ignored when the annotation is applied directly to classes.
 	 *
 	 * <p>
@@ -246,7 +246,7 @@
 	 * 	<jc>// Java REST method with @BeanConfig annotation.</jc>
 	 * 	<ja>@RestMethod</ja>(...)
 	 * 	<ja>@BeanConfig</ja>(
-	 * 		annotateBean={
+	 * 		applyBean={
 	 * 			<ja>@Bean</ja>(on=<js>"B"</js>, bpi=<jk>"street,city,state"</js>)
 	 * 		}
 	 * 	)
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 3a59ac8..24044d4 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
@@ -60,7 +60,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Bean[] annotateBean() default {};
+	Bean[] applyBean() default {};
 
 	/**
 	 * Dynamically applies {@link Beanc @Beanc} annotations to specified constructors.
@@ -73,7 +73,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Beanc[] annotateBeanc() default {};
+	Beanc[] applyBeanc() default {};
 
 	/**
 	 * Dynamically applies {@link Beanp @Beanp} annotations to specified methods.
@@ -86,7 +86,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Beanp[] annotateBeanp() default {};
+	Beanp[] applyBeanp() default {};
 
 	/**
 	 * Dynamically applies {@link BeanIgnore @BeanIgnore} annotations to specified classes/methods/fields/constructors.
@@ -99,7 +99,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	BeanIgnore[] annotateBeanIgnore() default {};
+	BeanIgnore[] applyBeanIgnore() default {};
 
 	/**
 	 * Dynamically applies {@link Example @Example} annotations to specified classes/methods/fields.
@@ -112,7 +112,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Example[] annotateExample() default {};
+	Example[] applyExample() default {};
 
 	/**
 	 * Dynamically applies {@link Name @Name} annotations to specified methods/fields.
@@ -125,7 +125,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Name[] annotateName() default {};
+	Name[] applyName() default {};
 
 	/**
 	 * Dynamically applies {@link NameProperty @NameProperty} annotations to specified methods/fields.
@@ -138,7 +138,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	NameProperty[] annotateNameProperty() default {};
+	NameProperty[] applyNameProperty() default {};
 
 	/**
 	 * Dynamically applies {@link ParentProperty @ParentProperty} annotations to specified methods/fields.
@@ -151,7 +151,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	ParentProperty[] annotateParentProperty() default {};
+	ParentProperty[] applyParentProperty() default {};
 
 	/**
 	 * Dynamically applies {@link Swap @Swap} annotations to specified classes/methods/fields.
@@ -164,7 +164,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Swap[] annotateSwap() default {};
+	Swap[] applySwap() default {};
 
 	/**
 	 * Dynamically applies {@link URI @URI} annotations to specified classes/methods/fields.
@@ -177,7 +177,7 @@
 	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	URI[] annotateURI() default {};
+	URI[] applyURI() default {};
 
 	/**
 	 * Configuration property:  Minimum bean class visibility.
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 c78993c..716b836 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
@@ -166,26 +166,26 @@
 		if (! a.maxDepth().isEmpty())
 			psb.set(BEANTRAVERSE_maxDepth, integer(a.maxDepth(), "maxDepth"));
 
-		if (a.annotateBean().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateBean());
-		if (a.annotateBeanp().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateBeanp());
-		if (a.annotateBeanc().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateBeanc());
-		if (a.annotateBeanIgnore().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateBeanIgnore());
-		if (a.annotateExample().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateExample());
-		if (a.annotateName().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateName());
-		if (a.annotateNameProperty().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateNameProperty());
-		if (a.annotateParentProperty().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateParentProperty());
-		if (a.annotateURI().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateURI());
-		if (a.annotateSwap().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateSwap());
+		if (a.applyBean().length > 0)
+			psb.addTo(BEAN_annotations, a.applyBean());
+		if (a.applyBeanp().length > 0)
+			psb.addTo(BEAN_annotations, a.applyBeanp());
+		if (a.applyBeanc().length > 0)
+			psb.addTo(BEAN_annotations, a.applyBeanc());
+		if (a.applyBeanIgnore().length > 0)
+			psb.addTo(BEAN_annotations, a.applyBeanIgnore());
+		if (a.applyExample().length > 0)
+			psb.addTo(BEAN_annotations, a.applyExample());
+		if (a.applyName().length > 0)
+			psb.addTo(BEAN_annotations, a.applyName());
+		if (a.applyNameProperty().length > 0)
+			psb.addTo(BEAN_annotations, a.applyNameProperty());
+		if (a.applyParentProperty().length > 0)
+			psb.addTo(BEAN_annotations, a.applyParentProperty());
+		if (a.applyURI().length > 0)
+			psb.addTo(BEAN_annotations, a.applyURI());
+		if (a.applySwap().length > 0)
+			psb.addTo(BEAN_annotations, a.applySwap());
 	}
 
 	private Locale locale(String in) {
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java
index b01afbd..811bd4c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java
@@ -44,7 +44,7 @@
 	 * Dynamically apply this annotation to the specified classes/methods/fields/constructors.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link BeanConfig#annotateBeanIgnore()}.
+	 * Used in conjunction with the {@link BeanConfig#applyBeanIgnore()}.
 	 * It is ignored when the annotation is applied directly to classes/methods/fields/constructors.
 	 *
 	 * The valid pattern matches are:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java
index bec5ca5..160d55b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java
@@ -56,7 +56,7 @@
 	 * Dynamically apply this annotation to the specified constructors.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link BeanConfig#annotateBeanc()}.
+	 * Used in conjunction with the {@link BeanConfig#applyBeanc()}.
 	 * It is ignored when the annotation is applied directly to constructors.
 	 *
 	 * <p>
@@ -84,7 +84,7 @@
 	 *			}
 	 *		}
 	 *
-	 *		<ja>@BeanConfig</ja>(annotateBeanc=<ja>@Beanc</ja>(on="Person(String,int)", properties=<js>"name,age"</js>))
+	 *		<ja>@BeanConfig</ja>(applyBeanc=<ja>@Beanc</ja>(on="Person(String,int)", properties=<js>"name,age"</js>))
 	 *		public static class X {}
 	 * </p>
 	 * <p class='bpcode w800'>
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 3a79aa3..0565fca 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
@@ -206,7 +206,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link BeanConfig#annotateBeanp()}.
+	 * Used in conjunction with the {@link BeanConfig#applyBeanp()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java
index e41a045..3af72d1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java
@@ -35,7 +35,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link CsvConfig#annotateCsv()}.
+	 * Used in conjunction with the {@link CsvConfig#applyCsv()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfig.java
index e382a97..83ceb7b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfig.java
@@ -46,17 +46,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link Csv @Csv} annotations to classes/methods.
+	 * Dynamically applies {@link Csv @Csv} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Csv#on() @Csv.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Csv#on() @Csv.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Csv[] annotateCsv() default {};
+	Csv[] applyCsv() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// CsvSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigApply.java
index a1a5343..f7b261d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvConfigApply.java
@@ -37,7 +37,7 @@
 	public void apply(AnnotationInfo<CsvConfig> ai, PropertyStoreBuilder psb) {
 		CsvConfig a = ai.getAnnotation();
 
-		if (a.annotateCsv().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateCsv());
+		if (a.applyCsv().length > 0)
+			psb.addTo(BEAN_annotations, a.applyCsv());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
index b9e1073..fa57496 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
@@ -105,7 +105,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link HtmlConfig#annotateHtml()}.
+	 * Used in conjunction with the {@link HtmlConfig#applyHtml()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java
index 6103ae1..7c72b14 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfig.java
@@ -47,17 +47,30 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link Html @Html} annotations to classes/methods.
+	 * Dynamically applies {@link Html @Html} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Html#on() @Html.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Html#on() @Html.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Html[] annotateHtml() default {};
+	Html[] applyHtml() default {};
+
+	/**
+	 * Dynamically applies {@link HtmlLink @HtmlLink} annotations to specified classes.
+	 *
+	 * <p>
+	 * Provides an alternate approach for applying annotations using {@link HtmlLink#on() @HtmlLink.on} to specify the names
+	 * to apply the annotation to.
+	 *
+	 * <ul class='seealso'>
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
+	 * </ul>
+	 */
+	HtmlLink[] applyHtmlLink() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// HtmlSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigApply.java
index cc3acad..025f292 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlConfigApply.java
@@ -48,7 +48,9 @@
 		if (! a.uriAnchorText().isEmpty())
 			psb.set(HTML_uriAnchorText, string(a.uriAnchorText()));
 
-		if (a.annotateHtml().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateHtml());
+		if (a.applyHtml().length > 0)
+			psb.addTo(BEAN_annotations, a.applyHtml());
+		if (a.applyHtmlLink().length > 0)
+			psb.addTo(BEAN_annotations, a.applyHtmlLink());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java
index 2bce85a..d984db0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java
@@ -35,7 +35,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link JsoConfig#annotateJso()}.
+	 * Used in conjunction with the {@link JsoConfig#applyJso()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfig.java
index 56345fa..a2ff7df 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfig.java
@@ -46,17 +46,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link Jso @Jso} annotations to classes/methods.
+	 * Dynamically applies {@link Jso @Jso} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Jso#on() @Jso.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Jso#on() @Jso.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Jso[] annotateJso() default {};
+	Jso[] applyJso() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// JsoSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigApply.java
index 29d3c60..16c1072 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoConfigApply.java
@@ -37,7 +37,7 @@
 	public void apply(AnnotationInfo<JsoConfig> ai, PropertyStoreBuilder psb) {
 		JsoConfig a = ai.getAnnotation();
 
-		if (a.annotateJso().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateJso());
+		if (a.applyJso().length > 0)
+			psb.addTo(BEAN_annotations, a.applyJso());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java
index d231e09..175e76d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java
@@ -40,7 +40,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link JsonConfig#annotateJson()}.
+	 * Used in conjunction with the {@link JsonConfig#applyJson()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java
index ba77eb8..f6c0de2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfig.java
@@ -47,17 +47,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link Json @Json} annotations to classes/methods.
+	 * Dynamically applies {@link Json @Json} annotations to specified classes.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Json#on() @Json.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Json#on() @Json.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Json[] annotateJson() default {};
+	Json[] applyJson() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// JsonParser
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigApply.java
index c540676..19f3be7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonConfigApply.java
@@ -46,7 +46,7 @@
 		if (! a.validateEnd().isEmpty())
 			psb.set(JSON_validateEnd, bool(a.validateEnd()));
 
-		if (a.annotateJson().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateJson());
+		if (a.applyJson().length > 0)
+			psb.addTo(BEAN_annotations, a.applyJson());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
index 6877c2d..f6ea3bf 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfig.java
@@ -171,17 +171,17 @@
 	String allowNestedExamples() default "";
 
 	/**
-	 * Indirectly applies {@link Schema @Schema} annotations to classes/methods.
+	 * Dynamically applies {@link Schema @Schema} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Schema#on() @Schema.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Schema#on() @Schema.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Schema[] annotateSchema() default {};
+	Schema[] applySchema() default {};
 
 	/**
 	 * Configuration property:  Bean schema definition mapper.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java
index 5655039..bd7acbd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/JsonSchemaConfigApply.java
@@ -54,7 +54,7 @@
 		if (! a.useBeanDefs().isEmpty())
 			psb.set(JSONSCHEMA_useBeanDefs, bool(a.useBeanDefs()));
 
-		if (a.annotateSchema().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateSchema());
+		if (a.applySchema().length > 0)
+			psb.addTo(BEAN_annotations, a.applySchema());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java
index 9afcbda..3519ba0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java
@@ -724,7 +724,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link JsonSchemaConfig#annotateSchema()}.
+	 * Used in conjunction with the {@link JsonSchemaConfig#applySchema()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java
index a2272b7..d2f7185 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java
@@ -35,7 +35,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link MsgPackConfig#annotateMsgPack()}.
+	 * Used in conjunction with the {@link MsgPackConfig#applyMsgPack()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
index a4016cf..5672d53 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
@@ -47,17 +47,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link MsgPack @MsgPack} annotations to classes/methods.
+	 * Dynamically applies {@link MsgPack @MsgPack} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link MsgPack#on() @MsgPack.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link MsgPack#on() @MsgPack.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	MsgPack[] annotateMsgPack() default {};
+	MsgPack[] applyMsgPack() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// MsgPackSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigApply.java
index 5f9671c..97c24d3 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigApply.java
@@ -39,7 +39,7 @@
 		if (! a.addBeanTypes().isEmpty())
 			psb.set(MSGPACK_addBeanTypes, bool(a.addBeanTypes()));
 
-		if (a.annotateMsgPack().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateMsgPack());
+		if (a.applyMsgPack().length > 0)
+			psb.addTo(BEAN_annotations, a.applyMsgPack());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java
index a19e6a1..523f7b4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java
@@ -35,7 +35,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link OpenApiConfig#annotateOpenApi()}.
+	 * Used in conjunction with the {@link OpenApiConfig#applyOpenApi()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java
index 5e51f24..c1a5200 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java
@@ -46,17 +46,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link OpenApi @OpenApi} annotations to classes/methods.
+	 * Dynamically applies {@link OpenApi @OpenApi} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link OpenApi#on() @OpenApi.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link OpenApi#on() @OpenApi.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	OpenApi[] annotateOpenApi() default {};
+	OpenApi[] applyOpenApi() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// OpenApiSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigApply.java
index 2fee43f..032d814 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigApply.java
@@ -37,7 +37,7 @@
 	public void apply(AnnotationInfo<OpenApiConfig> ai, PropertyStoreBuilder psb) {
 		OpenApiConfig a = ai.getAnnotation();
 
-		if (a.annotateOpenApi().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateOpenApi());
+		if (a.applyOpenApi().length > 0)
+			psb.addTo(BEAN_annotations, a.applyOpenApi());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java
index 871fda0..175d5db 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java
@@ -35,7 +35,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link PlainTextConfig#annotatePlainText()}.
+	 * Used in conjunction with the {@link PlainTextConfig#applyPlainText()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfig.java
index f829dbe..faca83f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfig.java
@@ -46,17 +46,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link PlainText @PlainText} annotations to classes/methods.
+	 * Dynamically applies {@link PlainText @PlainText} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link PlainText#on() @PlainText.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link PlainText#on() @PlainText.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	PlainText[] annotatePlainText() default {};
+	PlainText[] applyPlainText() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// PlainTextSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigApply.java
index 4b4855a..12e52bd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextConfigApply.java
@@ -37,7 +37,7 @@
 	public void apply(AnnotationInfo<PlainTextConfig> ai, PropertyStoreBuilder psb) {
 		PlainTextConfig a = ai.getAnnotation();
 
-		if (a.annotatePlainText().length > 0)
-			psb.addTo(BEAN_annotations, a.annotatePlainText());
+		if (a.applyPlainText().length > 0)
+			psb.addTo(BEAN_annotations, a.applyPlainText());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java
index 3c2bcf4..6970204 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java
@@ -35,7 +35,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link SoapXmlConfig#annotateSoapXml()}.
+	 * Used in conjunction with the {@link SoapXmlConfig#applySoapXml()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfig.java
index b61de24..ff70da7 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfig.java
@@ -46,17 +46,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link SoapXml @SoapXml} annotations to classes/methods.
+	 * Dynamically applies {@link SoapXml @SoapXml} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link SoapXml#on() @SoapXml.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link SoapXml#on() @SoapXml.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	SoapXml[] annotateSoapXml() default {};
+	SoapXml[] applySoapXml() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// SoapXmlSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigApply.java
index 8a72dfe..aaa71cd 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlConfigApply.java
@@ -39,7 +39,7 @@
 		if (! a.soapAction().isEmpty())
 			psb.set(SOAPXML_SOAPAction, string(a.soapAction()));
 
-		if (a.annotateSoapXml().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateSoapXml());
+		if (a.applySoapXml().length > 0)
+			psb.addTo(BEAN_annotations, a.applySoapXml());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java
index cca8bbb..57b515a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java
@@ -35,7 +35,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link UonConfig#annotateUon()}.
+	 * Used in conjunction with the {@link UonConfig#applyUon()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java
index f50f97d..c70312f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfig.java
@@ -48,17 +48,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link Uon @Uon} annotations to classes/methods.
+	 * Dynamically applies {@link Uon @Uon} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Uon#on() @Uon.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Uon#on() @Uon.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Uon[] annotateUon() default {};
+	Uon[] applyUon() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// UonParser
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigApply.java
index f71a8c4..293ad04 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonConfigApply.java
@@ -48,7 +48,7 @@
 		if (! a.validateEnd().isEmpty())
 			psb.set(UON_validateEnd, bool(a.validateEnd()));
 
-		if (a.annotateUon().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateUon());
+		if (a.applyUon().length > 0)
+			psb.addTo(BEAN_annotations, a.applyUon());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java
index 61b9d5f..dbebcb6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java
@@ -42,7 +42,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link UrlEncodingConfig#annotateUrlEncoding()}.
+	 * Used in conjunction with the {@link UrlEncodingConfig#applyUrlEncoding()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfig.java
index a6c02dc..d960119 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfig.java
@@ -46,17 +46,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link UrlEncoding @UrlEncoding} annotations to classes/methods.
+	 * Dynamically applies {@link UrlEncoding @UrlEncoding} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link UrlEncoding#on() @UrlEncoding.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link UrlEncoding#on() @UrlEncoding.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	UrlEncoding[] annotateUrlEncoding() default {};
+	UrlEncoding[] applyUrlEncoding() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// UrlEncodingSerializer
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigApply.java
index ac42f45..ef78dff 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingConfigApply.java
@@ -43,7 +43,7 @@
 			psb.set(UrlEncodingParser.URLENC_expandedParams, bool(a.expandedParams()));
 		}
 
-		if (a.annotateUrlEncoding().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateUrlEncoding());
+		if (a.applyUrlEncoding().length > 0)
+			psb.addTo(BEAN_annotations, a.applyUrlEncoding());
 	}
 }
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java
index 41e7a33..8e77b4d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java
@@ -137,7 +137,7 @@
 	 * Defines which classes/methods this annotation applies to.
 	 *
 	 * <p>
-	 * Used in conjunction with the {@link XmlConfig#annotateXml()}.
+	 * Used in conjunction with the {@link XmlConfig#applyXml()}.
 	 * It is ignored when the annotation is applied directly to classes and methods.
 	 *
 	 * The format can be any of the following:
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java
index 868b77d..2113463 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfig.java
@@ -52,17 +52,17 @@
 	//-------------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Indirectly applies {@link Xml @Xml} annotations to classes/methods.
+	 * Dynamically applies {@link Xml @Xml} annotations to specified classes/methods/fields.
 	 *
 	 * <p>
-	 * Provides an alternate approach for applying annotations to classes/methods annotations using the {@link Xml#on() @Xml.on}
-	 * annotation to specify the class/method names to apply the annotation to.
+	 * Provides an alternate approach for applying annotations using {@link Xml#on() @Xml.on} to specify the names
+	 * to apply the annotation to.
 	 *
 	 * <ul class='seealso'>
-	 * 	<li class='link'>{@doc juneau-marshall.ClassMethodAnnotations}
+	 * 	<li class='link'>{@doc juneau-marshall.DynamicallyAppliedAnnotations}
 	 * </ul>
 	 */
-	Xml[] annotateXml() default {};
+	Xml[] applyXml() default {};
 
 	//-------------------------------------------------------------------------------------------------------------------
 	// XmlParser
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigApply.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigApply.java
index 9a69d4d..77782dc 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigApply.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlConfigApply.java
@@ -63,7 +63,7 @@
 		if (! a.validating().isEmpty())
 			psb.set(XML_validating, bool(a.validating()));
 
-		if (a.annotateXml().length > 0)
-			psb.addTo(BEAN_annotations, a.annotateXml());
+		if (a.applyXml().length > 0)
+			psb.addTo(BEAN_annotations, a.applyXml());
 	}
 }
diff --git a/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/testutils/DTOs2.java b/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/testutils/DTOs2.java
index 21fcfe0..f0e3afc 100644
--- a/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/testutils/DTOs2.java
+++ b/juneau-rest/juneau-rest-mock-utest/src/test/java/org/apache/juneau/rest/testutils/DTOs2.java
@@ -20,8 +20,8 @@
 
 public class DTOs2 {
 
-	@BeanConfig(annotateBean={@Bean(on="A,B,C",sort=true)})
-	@UrlEncodingConfig(annotateUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
+	@BeanConfig(applyBean={@Bean(on="A,B,C",sort=true)})
+	@UrlEncodingConfig(applyUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
 	public static class Annotations {}
 
 	public static class A {
diff --git a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java
index 77f59dd..e6f56e1 100644
--- a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java
+++ b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/annotation2/BodyAnnotationTest.java
@@ -654,8 +654,8 @@
 	}
 
 	@Rest(serializers=SimpleJsonSerializer.class, parsers=JsonParser.class, defaultAccept="application/json")
-	@BeanConfig(annotateBean={@Bean(on="A,B,C",sort=true)})
-	@UrlEncodingConfig(annotateUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
+	@BeanConfig(applyBean={@Bean(on="A,B,C",sort=true)})
+	@UrlEncodingConfig(applyUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
 	public static class E2 {
 		@RestMethod(name=PUT, path="/B")
 		public DTOs2.B testPojo1(@Body DTOs2.B b) {
@@ -805,8 +805,8 @@
 	}
 
 	@Rest(serializers=UrlEncodingSerializer.class,parsers=UrlEncodingParser.class)
-	@BeanConfig(annotateBean={@Bean(on="A,B,C",sort=true)})
-	@UrlEncodingConfig(annotateUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
+	@BeanConfig(applyBean={@Bean(on="A,B,C",sort=true)})
+	@UrlEncodingConfig(applyUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
 	public static class H2 {
 		@RestMethod(name=POST,path="/",
 			properties={
@@ -868,8 +868,8 @@
 	@Rest(serializers=JsonSerializer.class,parsers=JsonParser.class)
 	public static class I2 {
 		@RestMethod(name=POST,path="/")
-		@BeanConfig(annotateBean={@Bean(on="A,B,C",sort=true)})
-		@UrlEncodingConfig(annotateUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
+		@BeanConfig(applyBean={@Bean(on="A,B,C",sort=true)})
+		@UrlEncodingConfig(applyUrlEncoding={@UrlEncoding(on="C",expandedParams=true)})
 		public DTOs2.B g(@Body(required=true) DTOs2.B content) throws Exception {
 			return content;
 		}
