http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Body.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Body.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Body.java
index 2eaad5a..b23b6f9 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Body.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Body.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="body")
-@SuppressWarnings("hiding")
 public class Body extends HtmlElementMixed {
 
        /**
@@ -29,7 +28,7 @@ public class Body extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Body onafterprint(String onafterprint) {
-               attrs.put("onafterprint", onafterprint);
+               attr("onafterprint", onafterprint);
                return this;
        }
 
@@ -40,7 +39,7 @@ public class Body extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Body onbeforeunload(String onbeforeunload) {
-               attrs.put("onbeforeunload", onbeforeunload);
+               attr("onbeforeunload", onbeforeunload);
                return this;
        }
 
@@ -51,7 +50,7 @@ public class Body extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Body onmessage(String onmessage) {
-               attrs.put("onmessage", onmessage);
+               attr("onmessage", onmessage);
                return this;
        }
 
@@ -62,7 +61,7 @@ public class Body extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Body ononline(String ononline) {
-               attrs.put("ononline", ononline);
+               attr("ononline", ononline);
                return this;
        }
 
@@ -73,7 +72,7 @@ public class Body extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Body onpageshow(String onpageshow) {
-               attrs.put("onpageshow", onpageshow);
+               attr("onpageshow", onpageshow);
                return this;
        }
 
@@ -84,7 +83,7 @@ public class Body extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Body onstorage(String onstorage) {
-               attrs.put("onstorage", onstorage);
+               attr("onstorage", onstorage);
                return this;
        }
 
@@ -112,7 +111,7 @@ public class Body extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Body child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Button.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Button.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Button.java
index 8974a85..6ed6937 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Button.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Button.java
@@ -19,17 +19,17 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="button")
-@SuppressWarnings("hiding")
 public class Button extends HtmlElementMixed {
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/forms.html#attr-fe-autofocus'>autofocus</a> 
attribute.
         * Automatically focus the form control when the page is loaded.
         * @param autofocus - The new value for this attribute.
+        *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Button autofocus(String autofocus) {
-               attrs.put("autofocus", autofocus);
+       public final Button autofocus(Object autofocus) {
+               attr("autofocus", autofocus);
                return this;
        }
 
@@ -37,10 +37,11 @@ public class Button extends HtmlElementMixed {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/forms.html#attr-fe-disabled'>disabled</a> 
attribute.
         * Whether the form control is disabled.
         * @param disabled - The new value for this attribute.
+        *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Button disabled(String disabled) {
-               attrs.put("disabled", disabled);
+       public final Button disabled(Object disabled) {
+               attr("disabled", disabled);
                return this;
        }
 
@@ -51,7 +52,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button form(String form) {
-               attrs.put("form", form);
+               attr("form", form);
                return this;
        }
 
@@ -62,7 +63,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button formaction(String formaction) {
-               attrs.put("formaction", formaction);
+               attr("formaction", formaction);
                return this;
        }
 
@@ -73,7 +74,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button formenctype(String formenctype) {
-               attrs.put("formenctype", formenctype);
+               attr("formenctype", formenctype);
                return this;
        }
 
@@ -84,7 +85,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button formmethod(String formmethod) {
-               attrs.put("formmethod", formmethod);
+               attr("formmethod", formmethod);
                return this;
        }
 
@@ -95,7 +96,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button formnovalidate(String formnovalidate) {
-               attrs.put("formnovalidate", formnovalidate);
+               attr("formnovalidate", formnovalidate);
                return this;
        }
 
@@ -106,7 +107,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button formtarget(String formtarget) {
-               attrs.put("formtarget", formtarget);
+               attr("formtarget", formtarget);
                return this;
        }
 
@@ -117,7 +118,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button menu(String menu) {
-               attrs.put("menu", menu);
+               attr("menu", menu);
                return this;
        }
 
@@ -128,7 +129,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button name(String name) {
-               attrs.put("name", name);
+               attr("name", name);
                return this;
        }
 
@@ -139,7 +140,7 @@ public class Button extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Button type(String type) {
-               attrs.put("type", type);
+               attr("type", type);
                return this;
        }
 
@@ -147,10 +148,11 @@ public class Button extends HtmlElementMixed {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/forms.html#attr-button-value'>value</a> 
attribute.
         * Value to be used for form submission.
         * @param value - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Button value(String value) {
-               attrs.put("value", value);
+       public final Button value(Object value) {
+               attr("value", value);
                return this;
        }
 
@@ -178,7 +180,7 @@ public class Button extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Button child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Canvas.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Canvas.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Canvas.java
index 21db9dd..51289e1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Canvas.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Canvas.java
@@ -25,10 +25,11 @@ public class Canvas extends HtmlElementContainer {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/scripting-1.html#attr-canvas-height'>height</a>
 attribute.
         * Vertical dimension.
         * @param height - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Canvas height(long height) {
-               attrs.put("height", height);
+       public final Canvas height(Object height) {
+               attr("height", height);
                return this;
        }
 
@@ -36,10 +37,11 @@ public class Canvas extends HtmlElementContainer {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/scripting-1.html#attr-canvas-width'>width</a> 
attribute.
         * Horizontal dimension.
         * @param width - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Canvas width(long width) {
-               attrs.put("width", width);
+       public final Canvas width(Object width) {
+               attr("width", width);
                return this;
        }
 
@@ -58,4 +60,16 @@ public class Canvas extends HtmlElementContainer {
                super.id(id);
                return this;
        }
+
+       @Override /* HtmlElementContainer */
+       public final Canvas children(Object...children) {
+               super.children(children);
+               return this;
+       }
+
+       @Override /* HtmlElementContainer */
+       public final Canvas child(Object child) {
+               super.child(child);
+               return this;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Caption.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Caption.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Caption.java
index 1b7b9d8..5a035a3 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Caption.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Caption.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="caption")
-@SuppressWarnings("hiding")
 public class Caption extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Caption extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Caption child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Cite.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Cite.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Cite.java
index 00245eb..e7693de 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Cite.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Cite.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="cite")
-@SuppressWarnings("hiding")
 public class Cite extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Cite extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Cite child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Code.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Code.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Code.java
index af5cc19..9215ccc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Code.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Code.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="code")
-@SuppressWarnings("hiding")
 public class Code extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Code extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Code child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Col.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Col.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Col.java
index 94502c2..9ace341 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Col.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Col.java
@@ -25,10 +25,11 @@ public class Col extends HtmlElementEmpty {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/tabular-data.html#attr-col-span'>span</a> 
attribute.
         * Number of columns spanned by the element.
         * @param span - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Col span(long span) {
-               attrs.put("span", span);
+       public final Col span(Object span) {
+               attr("span", span);
                return this;
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Colgroup.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
index b404ca4..62cf30c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Colgroup.java
@@ -19,17 +19,17 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="colgroup")
-@SuppressWarnings("hiding")
 public class Colgroup extends HtmlElementContainer {
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/tabular-data.html#attr-colgroup-span'>span</a>
 attribute.
         * Number of columns spanned by the element.
         * @param span - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Colgroup span(long span) {
-               attrs.put("span", span);
+       public final Colgroup span(Object span) {
+               attr("span", span);
                return this;
        }
 
@@ -38,12 +38,6 @@ public class Colgroup extends HtmlElementContainer {
        
//--------------------------------------------------------------------------------
 
        @Override /* HtmlElement */
-       public Colgroup children(Object...children) {
-               super.children(children);
-               return this;
-       }
-
-       @Override /* HtmlElement */
        public final Colgroup _class(String _class) {
                super._class(_class);
                return this;
@@ -54,4 +48,16 @@ public class Colgroup extends HtmlElementContainer {
                super.id(id);
                return this;
        }
+
+       @Override /* HtmlElementContainer */
+       public final Colgroup children(Object...children) {
+               super.children(children);
+               return this;
+       }
+
+       @Override /* HtmlElementContainer */
+       public final Colgroup child(Object child) {
+               super.child(child);
+               return this;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Data.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Data.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Data.java
index 5f7de70..07e7338 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Data.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Data.java
@@ -19,17 +19,17 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="data")
-@SuppressWarnings("hiding")
 public class Data extends HtmlElementMixed {
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/text-level-semantics.html#attr-data-value'>value</a>
 attribute.
         * Machine-readable value.
         * @param value - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Data value(String value) {
-               attrs.put("value", value);
+       public final Data value(Object value) {
+               attr("value", value);
                return this;
        }
 
@@ -57,7 +57,7 @@ public class Data extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Data child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Datalist.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Datalist.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Datalist.java
index 1034344..13f030b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Datalist.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Datalist.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="datalist")
-@SuppressWarnings("hiding")
 public class Datalist extends HtmlElementContainer {
 
        
//--------------------------------------------------------------------------------
@@ -27,12 +26,6 @@ public class Datalist extends HtmlElementContainer {
        
//--------------------------------------------------------------------------------
 
        @Override /* HtmlElement */
-       public Datalist children(Object...children) {
-               super.children(children);
-               return this;
-       }
-
-       @Override /* HtmlElement */
        public final Datalist _class(String _class) {
                super._class(_class);
                return this;
@@ -43,4 +36,16 @@ public class Datalist extends HtmlElementContainer {
                super.id(id);
                return this;
        }
+
+       @Override /* HtmlElementContainer */
+       public final Datalist children(Object...children) {
+               super.children(children);
+               return this;
+       }
+
+       @Override /* HtmlElementContainer */
+       public final Datalist child(Object child) {
+               super.child(child);
+               return this;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dd.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dd.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dd.java
index a86567e..3ee021f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dd.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dd.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="dd")
-@SuppressWarnings("hiding")
 public class Dd extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Dd extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Dd child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Del.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Del.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Del.java
index 4037fff..a1b95b5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Del.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Del.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="del")
-@SuppressWarnings("hiding")
 public class Del extends HtmlElementMixed {
 
        /**
@@ -29,7 +28,7 @@ public class Del extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Del cite(String cite) {
-               attrs.put("cite", cite);
+               attr("cite", cite);
                return this;
        }
 
@@ -40,7 +39,7 @@ public class Del extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Del datetime(String datetime) {
-               attrs.put("datetime", datetime);
+               attr("datetime", datetime);
                return this;
        }
 
@@ -68,7 +67,7 @@ public class Del extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Del child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dfn.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dfn.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dfn.java
index baa4b97..c39d68e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dfn.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dfn.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="dfn")
-@SuppressWarnings("hiding")
 public class Dfn extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Dfn extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Dfn child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Div.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Div.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Div.java
index 7c58a77..a530ef7 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Div.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Div.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="div")
-@SuppressWarnings("hiding")
 public class Div extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Div extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Div child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dl.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dl.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dl.java
index 607d1bc..568fe37 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dl.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dl.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="dl")
-@SuppressWarnings("hiding")
 public class Dl extends HtmlElementContainer {
 
        
//--------------------------------------------------------------------------------
@@ -27,12 +26,6 @@ public class Dl extends HtmlElementContainer {
        
//--------------------------------------------------------------------------------
 
        @Override /* HtmlElement */
-       public final Dl children(Object...children) {
-               super.children(children);
-               return this;
-       }
-
-       @Override /* HtmlElement */
        public final Dl _class(String _class) {
                super._class(_class);
                return this;
@@ -43,4 +36,16 @@ public class Dl extends HtmlElementContainer {
                super.id(id);
                return this;
        }
+
+       @Override /* HtmlElementContainer */
+       public final Dl children(Object...children) {
+               super.children(children);
+               return this;
+       }
+
+       @Override /* HtmlElementContainer */
+       public final Dl child(Object child) {
+               super.child(child);
+               return this;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dt.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dt.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dt.java
index 1ef264e..ee3603c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dt.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Dt.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="dt")
-@SuppressWarnings("hiding")
 public class Dt extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Dt extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Dt child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Em.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Em.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Em.java
index 07934ef..a71f59c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Em.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Em.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="em")
-@SuppressWarnings("hiding")
 public class Em extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Em extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Em child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Embed.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Embed.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Embed.java
index f37975b..6b39259 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Embed.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Embed.java
@@ -12,6 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.dto.html5;
 
+import java.net.*;
+
 import org.apache.juneau.annotation.*;
 
 /**
@@ -25,10 +27,11 @@ public class Embed extends HtmlElementEmpty {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-height'>height</a>
 attribute.
         * Vertical dimension.
         * @param height - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Embed height(String height) {
-               attrs.put("height", height);
+       public final Embed height(Object height) {
+               attr("height", height);
                return this;
        }
 
@@ -36,10 +39,11 @@ public class Embed extends HtmlElementEmpty {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/embedded-content-0.html#attr-embed-src'>src</a>
 attribute.
         * Address of the resource.
         * @param src - The new value for this attribute.
+        *      Typically a {@link URL} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Embed src(String src) {
-               attrs.put("src", src);
+       public final Embed src(Object src) {
+               attr("src", src);
                return this;
        }
 
@@ -50,7 +54,7 @@ public class Embed extends HtmlElementEmpty {
         * @return This object (for method chaining).
         */
        public final Embed type(String type) {
-               attrs.put("type", type);
+               attr("type", type);
                return this;
        }
 
@@ -58,10 +62,11 @@ public class Embed extends HtmlElementEmpty {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-width'>width</a>
 attribute.
         * Horizontal dimension.
         * @param width - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Embed width(String width) {
-               attrs.put("width", width);
+       public final Embed width(Object width) {
+               attr("width", width);
                return this;
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Fieldset.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
index 4a9bfad..46bebec 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Fieldset.java
@@ -19,17 +19,17 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="fieldset")
-@SuppressWarnings("hiding")
 public class Fieldset extends HtmlElementMixed {
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/forms.html#attr-fieldset-disabled'>disabled</a>
 attribute.
         * Whether the form control is disabled.
         * @param disabled - The new value for this attribute.
+        *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Fieldset disabled(String disabled) {
-               attrs.put("disabled", disabled);
+       public final Fieldset disabled(Boolean disabled) {
+               attr("disabled", disabled);
                return this;
        }
 
@@ -40,7 +40,7 @@ public class Fieldset extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Fieldset form(String form) {
-               attrs.put("form", form);
+               attr("form", form);
                return this;
        }
 
@@ -51,7 +51,7 @@ public class Fieldset extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Fieldset name(String name) {
-               attrs.put("name", name);
+               attr("name", name);
                return this;
        }
 
@@ -79,7 +79,7 @@ public class Fieldset extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Fieldset child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figcaption.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
index 9dafbaa..5540173 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figcaption.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="figcaption")
-@SuppressWarnings("hiding")
 public class Figcaption extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Figcaption extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Figcaption child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figure.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figure.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figure.java
index 102b0d1..e4547a6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figure.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Figure.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="figure")
-@SuppressWarnings("hiding")
 public class Figure extends HtmlElementContainer {
 
        
//--------------------------------------------------------------------------------
@@ -27,12 +26,6 @@ public class Figure extends HtmlElementContainer {
        
//--------------------------------------------------------------------------------
 
        @Override /* HtmlElement */
-       public final Figure children(Object...children) {
-               super.children(children);
-               return this;
-       }
-
-       @Override /* HtmlElement */
        public final Figure _class(String _class) {
                super._class(_class);
                return this;
@@ -43,4 +36,16 @@ public class Figure extends HtmlElementContainer {
                super.id(id);
                return this;
        }
+
+       @Override /* HtmlElementContainer */
+       public final Figure children(Object...children) {
+               super.children(children);
+               return this;
+       }
+
+       @Override /* HtmlElementContainer */
+       public final Figure child(Object child) {
+               super.child(child);
+               return this;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Footer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Footer.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Footer.java
index b2844c0..036d0df 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Footer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Footer.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="footer")
-@SuppressWarnings("hiding")
 public class Footer extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Footer extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Footer child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Form.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Form.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Form.java
index 6e04499..c7b0e57 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Form.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Form.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="form")
-@SuppressWarnings("hiding")
 public class Form extends HtmlElementMixed {
 
        /**
@@ -29,7 +28,7 @@ public class Form extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Form acceptcharset(String acceptcharset) {
-               attrs.put("accept-charset", acceptcharset);
+               attr("accept-charset", acceptcharset);
                return this;
        }
 
@@ -40,7 +39,7 @@ public class Form extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Form action(String action) {
-               attrs.put("action", action);
+               attr("action", action);
                return this;
        }
 
@@ -51,7 +50,7 @@ public class Form extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Form autocomplete(String autocomplete) {
-               attrs.put("autocomplete", autocomplete);
+               attr("autocomplete", autocomplete);
                return this;
        }
 
@@ -62,7 +61,7 @@ public class Form extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Form enctype(String enctype) {
-               attrs.put("enctype", enctype);
+               attr("enctype", enctype);
                return this;
        }
 
@@ -73,7 +72,7 @@ public class Form extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Form method(String method) {
-               attrs.put("method", method);
+               attr("method", method);
                return this;
        }
 
@@ -84,7 +83,7 @@ public class Form extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Form name(String name) {
-               attrs.put("name", name);
+               attr("name", name);
                return this;
        }
 
@@ -92,10 +91,11 @@ public class Form extends HtmlElementMixed {
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/forms.html#attr-fs-novalidate'>novalidate</a> 
attribute.
         * Bypass form control validation for form submission.
         * @param novalidate - The new value for this attribute.
+        *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final Form novalidate(String novalidate) {
-               attrs.put("novalidate", novalidate);
+       public final Form novalidate(Boolean novalidate) {
+               attr("novalidate", novalidate);
                return this;
        }
 
@@ -106,7 +106,7 @@ public class Form extends HtmlElementMixed {
         * @return This object (for method chaining).
         */
        public final Form target(String target) {
-               attrs.put("target", target);
+               attr("target", target);
                return this;
        }
 
@@ -135,7 +135,7 @@ public class Form extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Form child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/H1.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H1.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H1.java
index d2bf51f..b7ec1f5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H1.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H1.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="h1")
-@SuppressWarnings("hiding")
 public class H1 extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class H1 extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public H1 child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/H2.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H2.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H2.java
index 9d9222d..50389a4 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H2.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H2.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="h2")
-@SuppressWarnings("hiding")
 public class H2 extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class H2 extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public H2 child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/H3.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H3.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H3.java
index dda0bfb..9515961 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H3.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H3.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="h3")
-@SuppressWarnings("hiding")
 public class H3 extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class H3 extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public H3 child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/H4.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H4.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H4.java
index 4e064f3..3e69395 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H4.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H4.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="h4")
-@SuppressWarnings("hiding")
 public class H4 extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class H4 extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public H4 child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/H5.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H5.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H5.java
index 9a48c27..efeeb00 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H5.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H5.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="h5")
-@SuppressWarnings("hiding")
 public class H5 extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class H5 extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public H5 child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/H6.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H6.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H6.java
index d86be21..d995264 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/H6.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/H6.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="h6")
-@SuppressWarnings("hiding")
 public class H6 extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class H6 extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public H6 child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Head.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Head.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Head.java
index 4fbc1a6..8e21342 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Head.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Head.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="head")
-@SuppressWarnings("hiding")
 public class Head extends HtmlElementContainer {
 
        
//--------------------------------------------------------------------------------
@@ -27,12 +26,6 @@ public class Head extends HtmlElementContainer {
        
//--------------------------------------------------------------------------------
 
        @Override /* HtmlElement */
-       public Head children(Object...children) {
-               super.children(children);
-               return this;
-       }
-
-       @Override /* HtmlElement */
        public final Head _class(String _class) {
                super._class(_class);
                return this;
@@ -43,4 +36,16 @@ public class Head extends HtmlElementContainer {
                super.id(id);
                return this;
        }
+
+       @Override /* HtmlElementContainer */
+       public final Head children(Object...children) {
+               super.children(children);
+               return this;
+       }
+
+       @Override /* HtmlElementContainer */
+       public final Head child(Object child) {
+               super.child(child);
+               return this;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Header.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Header.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Header.java
index 72c2bdd..7258cbc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Header.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Header.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="header")
-@SuppressWarnings("hiding")
 public class Header extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class Header extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public Header child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/Html.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Html.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Html.java
index bdcc860..56c6c23 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/Html.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/Html.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="html")
-@SuppressWarnings("hiding")
 public class Html extends HtmlElementContainer {
 
        /**
@@ -29,7 +28,7 @@ public class Html extends HtmlElementContainer {
         * @return This object (for method chaining).
         */
        public final Html manifest(String manifest) {
-               attrs.put("manifest", manifest);
+               attr("manifest", manifest);
                return this;
        }
 
@@ -38,12 +37,6 @@ public class Html extends HtmlElementContainer {
        
//--------------------------------------------------------------------------------
 
        @Override /* HtmlElement */
-       public Html children(Object...children) {
-               super.children(children);
-               return this;
-       }
-
-       @Override /* HtmlElement */
        public final Html _class(String _class) {
                super._class(_class);
                return this;
@@ -54,4 +47,16 @@ public class Html extends HtmlElementContainer {
                super.id(id);
                return this;
        }
+
+       @Override /* HtmlElementContainer */
+       public final Html children(Object...children) {
+               super.children(children);
+               return this;
+       }
+
+       @Override /* HtmlElementContainer */
+       public final Html child(Object child) {
+               super.child(child);
+               return this;
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
index c2c31f2..306f5e1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlBuilder.java
@@ -26,12 +26,12 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates an {@link A} element with the specified {@link 
A#href(String)} attribute and {@link A#children(Object[])} nodes.
-        * @param href The {@link A#href(String)} attribute.
+        * Creates an {@link A} element with the specified {@link 
A#href(Object)} attribute and {@link A#children(Object[])} nodes.
+        * @param href The {@link A#href(Object)} attribute.
         * @param children The {@link A#children(Object[])} nodes.
         * @return The new element.
         */
-       public static final A a(String href, Object...children) {
+       public static final A a(Object href, Object...children) {
                return a().href(href).children(children);
        }
 
@@ -79,13 +79,13 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates an {@link Area} element with the specified {@link 
Area#shape(String)}, {@link Area#coords(String)}, and {@link Area#href(String)} 
attributes.
+        * Creates an {@link Area} element with the specified {@link 
Area#shape(String)}, {@link Area#coords(String)}, and {@link Area#href(Object)} 
attributes.
         * @param shape The {@link Area#shape(String)} attribute.
         * @param coords The {@link Area#coords(String)} attribute.
-        * @param href The {@link Area#href(String)} attribute.
+        * @param href The {@link Area#href(Object)} attribute.
         * @return The new element.
         */
-       public static final Area area(String shape, String coords, String href) 
{
+       public static final Area area(String shape, String coords, Object href) 
{
                return area().shape(shape).coords(coords).href(href);
        }
 
@@ -98,6 +98,15 @@ public class HtmlBuilder {
        }
 
        /**
+        * Creates an {@link Article} element with the specified child nodes.
+        * @param children The child nodes.
+        * @return The new element.
+        */
+       public static final Article article(Object...children) {
+               return article().children(children);
+       }
+
+       /**
         * Creates an empty {@link Aside} element.
         * @return The new element.
         */
@@ -123,8 +132,8 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates an {@link Audio} element with the specified {@link 
Audio#src(String)} attribute.
-        * @param src The {@link Audio#src(String)} attribute.
+        * Creates an {@link Audio} element with the specified {@link 
Audio#src(Object)} attribute.
+        * @param src The {@link Audio#src(Object)} attribute.
         * @return The new element.
         */
        public static final Audio audio(String src) {
@@ -157,11 +166,11 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Base} element with the specified {@link 
Base#href(String)} attribute.
-        * @param href The {@link Base#href(String)} attribute.
+        * Creates a {@link Base} element with the specified {@link 
Base#href(Object)} attribute.
+        * @param href The {@link Base#href(Object)} attribute.
         * @return The new element.
         */
-       public static final Base base(String href) {
+       public static final Base base(Object href) {
                return base().href(href);
        }
 
@@ -266,7 +275,7 @@ public class HtmlBuilder {
         * @return The new element.
         */
        public static final Button button(String type, Object...children) {
-               return button().type(type).child(children);
+               return button().type(type).children(children);
        }
 
        /**
@@ -278,12 +287,12 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Canvas} element with the specified {@link 
Canvas#width(long)} and {@link Canvas#height(long)} attributes.
-        * @param width The {@link Canvas#width(long)} attribute.
-        * @param height The {@link Canvas#height(long)} attribute.
+        * Creates a {@link Canvas} element with the specified {@link 
Canvas#width(Object)} and {@link Canvas#height(Object)} attributes.
+        * @param width The {@link Canvas#width(Object)} attribute.
+        * @param height The {@link Canvas#height(Object)} attribute.
         * @return The new element.
         */
-       public static final Canvas canvas(long width, long height) {
+       public static final Canvas canvas(Number width, Number height) {
                return canvas().width(width).height(height);
        }
 
@@ -347,11 +356,11 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Col} element with the specified {@link 
Col#span(long)} attribute.
-        * @param span The {@link Col#span(long)} attribute.
+        * Creates a {@link Col} element with the specified {@link 
Col#span(Object)} attribute.
+        * @param span The {@link Col#span(Object)} attribute.
         * @return The new element.
         */
-       public static final Col col(long span) {
+       public static final Col col(Number span) {
                return col().span(span);
        }
 
@@ -364,22 +373,12 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Colgroup} element with the specified {@link 
Colgroup#span(long)} attribute.
-        * @param span The {@link Colgroup#span(long)} attribute.
-        * @return The new element.
-        */
-       public static final Colgroup colgroup(long span) {
-               return colgroup().span(span);
-       }
-
-       /**
-        * Creates a {@link Colgroup} element with the specified {@link 
Colgroup#span(long)} attribute and child nodes.
-        * @param span The {@link Colgroup#span(long)} attribute.
+        * Creates a {@link Colgroup} element with the specified child nodes.
         * @param children The child nodes.
         * @return The new element.
         */
-       public static final Colgroup colgroup(long span, Object...children) {
-               return colgroup().span(span).children(children);
+       public static final Colgroup colgroup(Object...children) {
+               return colgroup().children(children);
        }
 
        /**
@@ -391,12 +390,13 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Data} element with the specified {@link 
Data#value(String)} attribute.
-        * @param value The {@link Data#value(String)} attribute.
+        * Creates a {@link Data} element with the specified {@link 
Data#value(Object)} attribute and child node.
+        * @param value The {@link Data#value(Object)} attribute.
+        * @param child The child node.
         * @return The new element.
         */
-       public static final Data data(String value) {
-               return data().value(value);
+       public static final Data data(String value, Object child) {
+               return data().value(value).child(child);
        }
 
        /**
@@ -498,8 +498,8 @@ public class HtmlBuilder {
         * @param children The child nodes.
         * @return The new element.
         */
-       public static final Dl dl(Dd...children) {
-               return dl().children((Object[])children);
+       public static final Dl dl(Object...children) {
+               return dl().children(children);
        }
 
        /**
@@ -545,11 +545,11 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates an {@link Embed} element with the specified {@link 
Embed#src(String)} attribute.
-        * @param src The {@link Embed#src(String)} attribute.
+        * Creates an {@link Embed} element with the specified {@link 
Embed#src(Object)} attribute.
+        * @param src The {@link Embed#src(Object)} attribute.
         * @return The new element.
         */
-       public static final Embed embed(String src) {
+       public static final Embed embed(Object src) {
                return embed().src(src);
        }
 
@@ -852,11 +852,11 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates an {@link Img} element with the specified {@link 
Img#src(String)} attribute.
-        * @param src The {@link Img#src(String)} attribute.
+        * Creates an {@link Img} element with the specified {@link 
Img#src(Object)} attribute.
+        * @param src The {@link Img#src(Object)} attribute.
         * @return The new element.
         */
-       public static final Img img(String src) {
+       public static final Img img(Object src) {
                return img().src(src);
        }
 
@@ -979,11 +979,11 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Link} element with the specified {@link 
Link#href(String)} attribute.
-        * @param href The {@link Link#href(String)} attribute.
+        * Creates a {@link Link} element with the specified {@link 
Link#href(Object)} attribute.
+        * @param href The {@link Link#href(Object)} attribute.
         * @return The new element.
         */
-       public static final Link link(String href) {
+       public static final Link link(Object href) {
                return link().href(href);
        }
 
@@ -1157,12 +1157,21 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates an {@link Option} element with the specified {@link 
Option#value(String)} attribute and {@link Option#text(Object)} node.
-        * @param value The {@link Option#value(String)} attribute.
+        * Creates an {@link Option} element with the specified {@link 
Option#value(Object)} attribute.
+        * @param value The {@link Option#value(Object)} attribute.
+        * @return The new element.
+        */
+       public static final Option option(Object value) {
+               return option().value(value);
+       }
+
+       /**
+        * Creates an {@link Option} element with the specified {@link 
Option#value(Object)} attribute and {@link Option#text(Object)} node.
+        * @param value The {@link Option#value(Object)} attribute.
         * @param text The {@link Option#text(Object)} node.
         * @return The new element.
         */
-       public static final Option option(String value, String text) {
+       public static final Option option(Object value, Object text) {
                return option().value(value).text(text);
        }
 
@@ -1209,12 +1218,12 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Param} element with the specified {@link 
Param#name(String)} and {@link Param#value(String)} attributes.
+        * Creates a {@link Param} element with the specified {@link 
Param#name(String)} and {@link Param#value(Object)} attributes.
         * @param name The {@link Param#name(String)} attribute.
-        * @param value The {@link Param#value(String)} attribute.
+        * @param value The {@link Param#value(Object)} attribute.
         * @return The new element.
         */
-       public static final Param param(String name, String value) {
+       public static final Param param(String name, Object value) {
                return param().name(name).value(value);
        }
 
@@ -1397,12 +1406,13 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Script} element with the specified {@link 
Script#children(Object[])} nodes.
-        * @param children The {@link Script#children(Object[])} nodes.
+        * Creates a {@link Script} element with the specified {@link 
Script#type(String)} attribute and {@link Script#text(Object)} node.
+        * @param type The {@link Script#type(String)} attribute.
+        * @param text The child text node.
         * @return The new element.
         */
-       public static final Script script(Object...children) {
-               return script().children(children);
+       public static final Script script(String type, String text) {
+               return script().type(type).text(text);
        }
 
        /**
@@ -1466,12 +1476,12 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Source} element with the specified {@link 
Source#src(String)} and {@link Source#type(String)} attributes.
-        * @param src The {@link Source#src(String)} attribute.
+        * Creates a {@link Source} element with the specified {@link 
Source#src(Object)} and {@link Source#type(String)} attributes.
+        * @param src The {@link Source#src(Object)} attribute.
         * @param type The {@link Source#type(String)} attribute.
         * @return The new element.
         */
-       public static final Source source(String src, String type) {
+       public static final Source source(Object src, String type) {
                return source().src(src).type(type);
        }
 
@@ -1518,12 +1528,12 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Style} element with the specified {@link 
Style#children(Object[])} nodes.
-        * @param children The {@link Style#children(Object[])} nodes.
+        * Creates a {@link Style} element with the specified {@link 
Style#text(Object)} node.
+        * @param text The {@link Style#text(Object)} node.
         * @return The new element.
         */
-       public static final Style style(Object...children) {
-               return style().children(children);
+       public static final Style style(Object text) {
+               return style().text(text);
        }
 
        /**
@@ -1758,12 +1768,12 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Track} element with the specified {@link 
Track#src(String)} and {@link Track#kind(String)} attributes.
-        * @param src The {@link Track#src(String)} attribute.
+        * Creates a {@link Track} element with the specified {@link 
Track#src(Object)} and {@link Track#kind(String)} attributes.
+        * @param src The {@link Track#src(Object)} attribute.
         * @param kind The {@link Track#kind(String)} attribute.
         * @return The new element.
         */
-       public static final Track track(String src, String kind) {
+       public static final Track track(Object src, String kind) {
                return track().src(src).kind(kind);
        }
 
@@ -1827,11 +1837,11 @@ public class HtmlBuilder {
        }
 
        /**
-        * Creates a {@link Video} element with the specified {@link 
Video#src(String)} attribute.
-        * @param src The {@link Video#src(String)} attribute.
+        * Creates a {@link Video} element with the specified {@link 
Video#src(Object)} attribute.
+        * @param src The {@link Video#src(Object)} attribute.
         * @return The new element.
         */
-       public static final Video video(String src) {
+       public static final Video video(Object src) {
                return video().src(src);
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElement.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElement.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElement.java
index 57e3e46..cdbdfed 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElement.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElement.java
@@ -27,7 +27,7 @@ import org.apache.juneau.xml.annotation.*;
 @org.apache.juneau.html.annotation.Html(asXml=true)
 public abstract class HtmlElement {
 
-       final LinkedHashMap<String,Object> attrs = new 
LinkedHashMap<String,Object>();
+       private LinkedHashMap<String,Object> attrs;
 
        /**
         * The attributes of this element.
@@ -39,6 +39,16 @@ public abstract class HtmlElement {
        }
 
        /**
+        * Sets the attributes for this element.
+        * @param attrs The new attributes for this element.
+        * @return This object (for method chaining).
+        */
+       public HtmlElement setAttrs(LinkedHashMap<String,Object> attrs) {
+               this.attrs = attrs;
+               return this;
+       }
+
+       /**
         * Adds an arbitrary attribute to this element.
         * @param key The attribute name.
         * @param val The attribute value.
@@ -46,6 +56,8 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public HtmlElement attr(String key, Object val) {
+               if (this.attrs == null)
+                       this.attrs = new LinkedHashMap<String,Object>();
                this.attrs.put(key, val);
                return this;
        }
@@ -56,7 +68,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement accesskey(String accesskey) {
-               attrs.put("accesskey", accesskey);
+               attr("accesskey", accesskey);
                return this;
        }
 
@@ -66,17 +78,18 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public HtmlElement _class(String _class) {
-               attrs.put("class", _class);
+               attr("class", _class);
                return this;
        }
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/editing.html#attr-contenteditable'>contenteditable</a>
 attribute.
         * @param contenteditable - The new value for this attribute.
+        *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final HtmlElement contenteditable(String contenteditable) {
-               attrs.put("contenteditable", contenteditable);
+       public final HtmlElement contenteditable(Object contenteditable) {
+               attr("contenteditable", contenteditable);
                return this;
        }
 
@@ -86,17 +99,18 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public HtmlElement dir(String dir) {
-               attrs.put("dir", dir);
+               attr("dir", dir);
                return this;
        }
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/editing.html#the-hidden-attribute'>hidden</a> 
attribute.
         * @param hidden - The new value for this attribute.
+        *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final HtmlElement hidden(String hidden) {
-               attrs.put("hidden", hidden);
+       public final HtmlElement hidden(Object hidden) {
+               attr("hidden", hidden);
                return this;
        }
 
@@ -106,7 +120,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public HtmlElement id(String id) {
-               attrs.put("id", id);
+               attr("id", id);
                return this;
        }
 
@@ -116,7 +130,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement lang(String lang) {
-               attrs.put("lang", lang);
+               attr("lang", lang);
                return this;
        }
 
@@ -126,7 +140,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onabort(String onabort) {
-               attrs.put("onabort", onabort);
+               attr("onabort", onabort);
                return this;
        }
 
@@ -136,7 +150,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onblur(String onblur) {
-               attrs.put("onblur", onblur);
+               attr("onblur", onblur);
                return this;
        }
 
@@ -146,7 +160,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement oncancel(String oncancel) {
-               attrs.put("oncancel", oncancel);
+               attr("oncancel", oncancel);
                return this;
        }
 
@@ -156,7 +170,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement oncanplay(String oncanplay) {
-               attrs.put("oncanplay", oncanplay);
+               attr("oncanplay", oncanplay);
                return this;
        }
 
@@ -166,7 +180,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement oncanplaythrough(String oncanplaythrough) {
-               attrs.put("oncanplaythrough", oncanplaythrough);
+               attr("oncanplaythrough", oncanplaythrough);
                return this;
        }
 
@@ -176,7 +190,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onchange(String onchange) {
-               attrs.put("onchange", onchange);
+               attr("onchange", onchange);
                return this;
        }
 
@@ -186,7 +200,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onclick(String onclick) {
-               attrs.put("onclick", onclick);
+               attr("onclick", onclick);
                return this;
        }
 
@@ -196,7 +210,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement oncuechange(String oncuechange) {
-               attrs.put("oncuechange", oncuechange);
+               attr("oncuechange", oncuechange);
                return this;
        }
 
@@ -206,7 +220,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement ondblclick(String ondblclick) {
-               attrs.put("ondblclick", ondblclick);
+               attr("ondblclick", ondblclick);
                return this;
        }
 
@@ -216,7 +230,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement ondurationchange(String ondurationchange) {
-               attrs.put("ondurationchange", ondurationchange);
+               attr("ondurationchange", ondurationchange);
                return this;
        }
 
@@ -226,7 +240,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onemptied(String onemptied) {
-               attrs.put("onemptied", onemptied);
+               attr("onemptied", onemptied);
                return this;
        }
 
@@ -236,7 +250,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onended(String onended) {
-               attrs.put("onended", onended);
+               attr("onended", onended);
                return this;
        }
 
@@ -246,7 +260,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onerror(String onerror) {
-               attrs.put("onerror", onerror);
+               attr("onerror", onerror);
                return this;
        }
 
@@ -256,7 +270,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onfocus(String onfocus) {
-               attrs.put("onfocus", onfocus);
+               attr("onfocus", onfocus);
                return this;
        }
 
@@ -266,7 +280,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement oninput(String oninput) {
-               attrs.put("oninput", oninput);
+               attr("oninput", oninput);
                return this;
        }
 
@@ -276,7 +290,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement oninvalid(String oninvalid) {
-               attrs.put("oninvalid", oninvalid);
+               attr("oninvalid", oninvalid);
                return this;
        }
 
@@ -286,7 +300,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onkeydown(String onkeydown) {
-               attrs.put("onkeydown", onkeydown);
+               attr("onkeydown", onkeydown);
                return this;
        }
 
@@ -296,7 +310,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onkeypress(String onkeypress) {
-               attrs.put("onkeypress", onkeypress);
+               attr("onkeypress", onkeypress);
                return this;
        }
 
@@ -306,7 +320,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onkeyup(String onkeyup) {
-               attrs.put("onkeyup", onkeyup);
+               attr("onkeyup", onkeyup);
                return this;
        }
 
@@ -316,7 +330,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onload(String onload) {
-               attrs.put("onload", onload);
+               attr("onload", onload);
                return this;
        }
 
@@ -326,7 +340,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onloadeddata(String onloadeddata) {
-               attrs.put("onloadeddata", onloadeddata);
+               attr("onloadeddata", onloadeddata);
                return this;
        }
 
@@ -336,7 +350,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onloadedmetadata(String onloadedmetadata) {
-               attrs.put("onloadedmetadata", onloadedmetadata);
+               attr("onloadedmetadata", onloadedmetadata);
                return this;
        }
 
@@ -346,7 +360,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onloadstart(String onloadstart) {
-               attrs.put("onloadstart", onloadstart);
+               attr("onloadstart", onloadstart);
                return this;
        }
 
@@ -356,7 +370,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmousedown(String onmousedown) {
-               attrs.put("onmousedown", onmousedown);
+               attr("onmousedown", onmousedown);
                return this;
        }
 
@@ -366,7 +380,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmouseenter(String onmouseenter) {
-               attrs.put("onmouseenter", onmouseenter);
+               attr("onmouseenter", onmouseenter);
                return this;
        }
 
@@ -376,7 +390,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmouseleave(String onmouseleave) {
-               attrs.put("onmouseleave", onmouseleave);
+               attr("onmouseleave", onmouseleave);
                return this;
        }
 
@@ -386,7 +400,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmousemove(String onmousemove) {
-               attrs.put("onmousemove", onmousemove);
+               attr("onmousemove", onmousemove);
                return this;
        }
 
@@ -396,7 +410,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmouseout(String onmouseout) {
-               attrs.put("onmouseout", onmouseout);
+               attr("onmouseout", onmouseout);
                return this;
        }
 
@@ -406,7 +420,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmouseover(String onmouseover) {
-               attrs.put("onmouseover", onmouseover);
+               attr("onmouseover", onmouseover);
                return this;
        }
 
@@ -416,7 +430,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmouseup(String onmouseup) {
-               attrs.put("onmouseup", onmouseup);
+               attr("onmouseup", onmouseup);
                return this;
        }
 
@@ -426,7 +440,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onmousewheel(String onmousewheel) {
-               attrs.put("onmousewheel", onmousewheel);
+               attr("onmousewheel", onmousewheel);
                return this;
        }
 
@@ -436,7 +450,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onpause(String onpause) {
-               attrs.put("onpause", onpause);
+               attr("onpause", onpause);
                return this;
        }
 
@@ -446,7 +460,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onplay(String onplay) {
-               attrs.put("onplay", onplay);
+               attr("onplay", onplay);
                return this;
        }
 
@@ -456,7 +470,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onplaying(String onplaying) {
-               attrs.put("onplaying", onplaying);
+               attr("onplaying", onplaying);
                return this;
        }
 
@@ -466,7 +480,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onprogress(String onprogress) {
-               attrs.put("onprogress", onprogress);
+               attr("onprogress", onprogress);
                return this;
        }
 
@@ -476,7 +490,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onratechange(String onratechange) {
-               attrs.put("onratechange", onratechange);
+               attr("onratechange", onratechange);
                return this;
        }
 
@@ -486,7 +500,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onreset(String onreset) {
-               attrs.put("onreset", onreset);
+               attr("onreset", onreset);
                return this;
        }
 
@@ -496,7 +510,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onresize(String onresize) {
-               attrs.put("onresize", onresize);
+               attr("onresize", onresize);
                return this;
        }
 
@@ -506,7 +520,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onscroll(String onscroll) {
-               attrs.put("onscroll", onscroll);
+               attr("onscroll", onscroll);
                return this;
        }
 
@@ -516,7 +530,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onseeked(String onseeked) {
-               attrs.put("onseeked", onseeked);
+               attr("onseeked", onseeked);
                return this;
        }
 
@@ -526,7 +540,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onseeking(String onseeking) {
-               attrs.put("onseeking", onseeking);
+               attr("onseeking", onseeking);
                return this;
        }
 
@@ -536,7 +550,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onselect(String onselect) {
-               attrs.put("onselect", onselect);
+               attr("onselect", onselect);
                return this;
        }
 
@@ -546,7 +560,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onshow(String onshow) {
-               attrs.put("onshow", onshow);
+               attr("onshow", onshow);
                return this;
        }
 
@@ -556,7 +570,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onstalled(String onstalled) {
-               attrs.put("onstalled", onstalled);
+               attr("onstalled", onstalled);
                return this;
        }
 
@@ -566,7 +580,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onsubmit(String onsubmit) {
-               attrs.put("onsubmit", onsubmit);
+               attr("onsubmit", onsubmit);
                return this;
        }
 
@@ -576,7 +590,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onsuspend(String onsuspend) {
-               attrs.put("onsuspend", onsuspend);
+               attr("onsuspend", onsuspend);
                return this;
        }
 
@@ -586,7 +600,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement ontimeupdate(String ontimeupdate) {
-               attrs.put("ontimeupdate", ontimeupdate);
+               attr("ontimeupdate", ontimeupdate);
                return this;
        }
 
@@ -596,7 +610,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement ontoggle(String ontoggle) {
-               attrs.put("ontoggle", ontoggle);
+               attr("ontoggle", ontoggle);
                return this;
        }
 
@@ -606,7 +620,7 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onvolumechange(String onvolumechange) {
-               attrs.put("onvolumechange", onvolumechange);
+               attr("onvolumechange", onvolumechange);
                return this;
        }
 
@@ -616,17 +630,18 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public final HtmlElement onwaiting(String onwaiting) {
-               attrs.put("onwaiting", onwaiting);
+               attr("onwaiting", onwaiting);
                return this;
        }
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/editing.html#attr-spellcheck'>spellcheck</a> 
attribute.
         * @param spellcheck - The new value for this attribute.
+        *      Typically a {@link Boolean} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final HtmlElement spellcheck(String spellcheck) {
-               attrs.put("spellcheck", spellcheck);
+       public final HtmlElement spellcheck(Object spellcheck) {
+               attr("spellcheck", spellcheck);
                return this;
        }
 
@@ -635,18 +650,19 @@ public abstract class HtmlElement {
         * @param style - The new value for this attribute.
         * @return This object (for method chaining).
         */
-       public final HtmlElement style(String style) {
-               attrs.put("style", style);
+       public HtmlElement style(String style) {
+               attr("style", style);
                return this;
        }
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/editing.html#attr-tabindex'>tabindex</a> 
attribute.
         * @param tabindex - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final HtmlElement tabindex(String tabindex) {
-               attrs.put("tabindex", tabindex);
+       public final HtmlElement tabindex(Object tabindex) {
+               attr("tabindex", tabindex);
                return this;
        }
 
@@ -656,17 +672,18 @@ public abstract class HtmlElement {
         * @return This object (for method chaining).
         */
        public HtmlElement title(String title) {
-               attrs.put("title", title);
+               attr("title", title);
                return this;
        }
 
        /**
         * <a class='doclink' 
href='https://www.w3.org/TR/html5/dom.html#attr-translate'>translate</a> 
attribute.
         * @param translate - The new value for this attribute.
+        *      Typically a {@link Number} or {@link String}.
         * @return This object (for method chaining).
         */
-       public final HtmlElement translate(String translate) {
-               attrs.put("translate", translate);
+       public final HtmlElement translate(Object translate) {
+               attr("translate", translate);
                return this;
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
index 6847303..11dd1a4 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
@@ -24,7 +24,7 @@ import org.apache.juneau.xml.annotation.*;
  */
 public class HtmlElementContainer extends HtmlElement {
 
-       final List<Object> children = new LinkedList<Object>();
+       private LinkedList<Object> children;
 
        /**
         * The children of this element.
@@ -32,9 +32,20 @@ public class HtmlElementContainer extends HtmlElement {
         */
        @Xml(format=ELEMENTS)
        @BeanProperty(beanDictionary=HtmlBeanDictionary.class)
-       public List<Object> getChildren() {
+       public LinkedList<Object> getChildren() {
                return children;
        }
+
+       /**
+        * Sets the children for this container.
+        * @param children The new children for this container.
+        * @return This object (for method chaining).
+        */
+       public HtmlElementContainer setChildren(LinkedList<Object> children) {
+               this.children = children;
+               return this;
+       }
+
        /**
         * Adds one or more child elements to this element.
         * @param children The children to add as child elements.
@@ -42,8 +53,12 @@ public class HtmlElementContainer extends HtmlElement {
         */
        @SuppressWarnings("hiding")
        public HtmlElement children(Object...children) {
-               for (Object c : children)
-                       this.children.add(c);
+               if (children.length > 0) {
+                       if (this.children == null)
+                               this.children = new LinkedList<Object>();
+                       for (Object c : children)
+                               this.children.add(c);
+               }
                return this;
        }
 
@@ -53,6 +68,8 @@ public class HtmlElementContainer extends HtmlElement {
         * @return This object (for method chaining).
         */
        public HtmlElement child(Object child) {
+               if (this.children == null)
+                       this.children = new LinkedList<Object>();
                this.children.add(child);
                return this;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
index 7673385..d1b2b8f 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
@@ -24,7 +24,7 @@ import org.apache.juneau.xml.annotation.*;
  */
 public class HtmlElementMixed extends HtmlElement {
 
-       final List<Object> children = new LinkedList<Object>();
+       private LinkedList<Object> children;
 
        /**
         * The children of this element.
@@ -32,11 +32,22 @@ public class HtmlElementMixed extends HtmlElement {
         */
        @Xml(format=MIXED)
        @BeanProperty(beanDictionary=HtmlBeanDictionary.class)
-       public List<Object> getChildren() {
+       public LinkedList<Object> getChildren() {
                return children;
        }
 
        /**
+        * Sets the children of this element.
+        *
+        * @param children The new children of this element.
+        * @return This object (for method chaining).
+        */
+       public HtmlElement setChildren(LinkedList<Object> children) {
+               this.children = children;
+               return this;
+       }
+
+       /**
         * Adds one or more child elements to this element.
         * @param children The children to add as child elements.
         *      Can be a mixture of strings and {@link HtmlElement} objects.
@@ -44,8 +55,12 @@ public class HtmlElementMixed extends HtmlElement {
         */
        @SuppressWarnings("hiding")
        public HtmlElement children(Object...children) {
-               for (Object c : children)
-                       this.children.add(c);
+               if (children.length != 0) {
+                       if (this.children == null)
+                               this.children = new LinkedList<Object>();
+                       for (Object c : children)
+                               this.children.add(c);
+               }
                return this;
        }
 
@@ -56,6 +71,8 @@ public class HtmlElementMixed extends HtmlElement {
         * @return This object (for method chaining).
         */
        public HtmlElement child(Object child) {
+               if (this.children == null)
+                       this.children = new LinkedList<Object>();
                this.children.add(child);
                return this;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementText.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementText.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementText.java
index 7c675c1..1be7d22 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementText.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementText.java
@@ -27,12 +27,23 @@ public class HtmlElementText extends HtmlElement {
         *
         * @return The inner text of this element, or <jk>null</jk> if no text 
is set.
         */
-       @Xml(format=XmlFormat.MIXED)
+       @Xml(format=XmlFormat.TEXT)
        public Object getText() {
                return text;
        }
 
        /**
+        * Sets the innter text of this element.
+        *
+        * @param text The inner text of this element, or <jk>null</jk> if no 
text is set.
+        * @return This object (for method chaining).
+        */
+       public HtmlElement setText(Object text) {
+               this.text = text;
+               return this;
+       }
+
+       /**
         * Sets the text node on this element.
         *
         * @param text - The text node to add to this element.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/21c0e1ea/juneau-core/src/main/java/org/apache/juneau/dto/html5/I.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/I.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/html5/I.java
index 9641447..edeb856 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/I.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/I.java
@@ -19,7 +19,6 @@ import org.apache.juneau.annotation.*;
  * <p>
  */
 @Bean(typeName="i")
-@SuppressWarnings("hiding")
 public class I extends HtmlElementMixed {
 
        
//--------------------------------------------------------------------------------
@@ -46,7 +45,7 @@ public class I extends HtmlElementMixed {
 
        @Override /* HtmlElementMixed */
        public I child(Object child) {
-               this.children.add(child);
+               super.child(child);
                return this;
        }
 }

Reply via email to